From: Joshua Maurice on
On May 5, 10:45 pm, "Mike Schilling" <mscottschill...(a)hotmail.com>
wrote:
> Joshua Maurice wrote:
> > PS: I do agree that we need to componentize. I disagree that
> > incrementally correct builds are useless after that.
>
> I've worked in systems roughly as large as yours (tens of thousands of
> source file) which were layered, so that each seperately compiled subsystem
> had  at most a few hundreds of files. At that point, there's no particular
> advantage to avoiding clean builds.
>
> During development, a developer works on a small set of subsystems.  He
> knows when he's changing interfaces rather than implementations, and at that
> point can afford the clean build.
>
> The automated build-and-test might spend an hour or so on the clean build,
> but that's a small fraction of the time the tests take.

We recently were handed out this book describing Scrum, a variant of
agile development. I agree with what the author bolds and italicizes,
that interfaces need to be \stable\ (just the word \stable\).

I would love what you describe. However, my fellow employees and
managers understand little and respect little of what decoupled,
relatively well thought out, well defined interfaces can do for them.
It's always about the new feature. No code cleanup ever really get
done. My only real option to attack that front is to vote with my
feet. (As an example, I remember this one time that an architect at
the company in question said it was perfectly fine to use a finalizer
to manage C standard library heap memory allocated via JNI. I
protested quite vigorously.)

Also, as a potentially incorrect observation, do you think most java
developers use notepad or some other text editor to do their work? I
would suspect that most people use Eclipse nowadays. Eclipse is almost
exactly what I want from a build system, except it's limited to Java.
It's a nearly fully incrementally correct build system, and is a lot
better than I could ever do on my own as a side project. Would you all
be saying the same straw man arguments if you lost your incremental
IDE and had to use notepad / wordpad / emacs without all your cool
java-specific stuff to do your work? I think not.
From: Mike Schilling on
Joshua Maurice wrote:
> On May 5, 10:45 pm, "Mike Schilling" <mscottschill...(a)hotmail.com>
> wrote:
>> Joshua Maurice wrote:
>>> PS: I do agree that we need to componentize. I disagree that
>>> incrementally correct builds are useless after that.
>>
>> I've worked in systems roughly as large as yours (tens of thousands
>> of source file) which were layered, so that each seperately compiled
>> subsystem had at most a few hundreds of files. At that point,
>> there's no particular advantage to avoiding clean builds.
>>
>> During development, a developer works on a small set of subsystems.
>> He knows when he's changing interfaces rather than implementations,
>> and at that point can afford the clean build.
>>
>> The automated build-and-test might spend an hour or so on the clean
>> build, but that's a small fraction of the time the tests take.
>
> We recently were handed out this book describing Scrum, a variant of
> agile development. I agree with what the author bolds and italicizes,
> that interfaces need to be \stable\ (just the word \stable\).
>
> I would love what you describe. However, my fellow employees and
> managers understand little and respect little of what decoupled,
> relatively well thought out, well defined interfaces can do for them.
> It's always about the new feature. No code cleanup ever really get
> done. My only real option to attack that front is to vote with my
> feet. (As an example, I remember this one time that an architect at
> the company in question said it was perfectly fine to use a finalizer
> to manage C standard library heap memory allocated via JNI. I
> protested quite vigorously.)

If the situation is completely (^&%ed and no one with the power to fix it
will do anything, by all means find a better place.

>
> Also, as a potentially incorrect observation, do you think most java
> developers use notepad or some other text editor to do their work? I
> would suspect that most people use Eclipse nowadays. Eclipse is almost
> exactly what I want from a build system, except it's limited to Java.
> It's a nearly fully incrementally correct build system, and is a lot
> better than I could ever do on my own as a side project. Would you all
> be saying the same straw man arguments if you lost your incremental
> IDE and had to use notepad / wordpad / emacs without all your cool
> java-specific stuff to do your work? I think not.

I don't use Eclipse, not do I do builds from within the IDE I do use
(IntelliJ), since our build system is complicated enough to require ANT.
(I could probably make IntelliJ call ANT, but I've never bothered.)

Anyway, I don't think people are dismissing you because they have a solution
they won't tell you about. Your company has built a horrific system far
outside the parameters of what Java was intended to handle, and they're
paying the price for that. It's a lot like someone who puts 100 novels in a
single Word document and complains that it's slow. Yes, it is.


From: Joshua Cranmer on
On 05/06/2010 02:22 AM, Joshua Maurice wrote:
> Also, as a potentially incorrect observation, do you think most java
> developers use notepad or some other text editor to do their work? I
> would suspect that most people use Eclipse nowadays. Eclipse is almost
> exactly what I want from a build system, except it's limited to Java.

As an aside, I've noticed that not using a fully-featured IDE seems to
increase my productivity. Trying to figure out how to get it to just add
on a single -classpath argument to the build step was an hour of my life
wasted. Not to mention the length of time it takes to start up on my
system, as well as the braindead autocompletion it attempts to do.

> It's a nearly fully incrementally correct build system, and is a lot
> better than I could ever do on my own as a side project. Would you all
> be saying the same straw man arguments if you lost your incremental
> IDE and had to use notepad / wordpad / emacs without all your cool
> java-specific stuff to do your work? I think not.

Actually, I think IDEs tend to fall flat on their face when presented
with humongous heterogeneous heaps of code which defy standard build
system logic and which require large databases of tag information (i.e.,
in the 100s of MB range or higher).

I do work on a project which requires about 2 hours to build on my
laptop whenever I update the source, aggravated by the fact that the
thermal setpoints on my laptop appear to be misset and not attending the
build would frequently cause it to shut down due to overheating.

As people have repeated stated:
1. You can't abstract dependency data out of class files alone.
2. If your project were properly compartmentalized, this wouldn't be an
issue.
3. If fixing the design is really so big a deal, then you are up a creek
without a paddle.

--
Beware of bugs in the above code; I have only proved it correct, not
tried it. -- Donald E. Knuth
From: Tom Anderson on
On Wed, 5 May 2010, Lew wrote:

> Joshua Maurice wrote:
>
>> No, no, and no. Perhaps you'll listen this time.
>
> And perhaps you won't be so damn rude next time. What the hell?
>
> You have consistently rejected every piece of good advice, given
> complete nonsense excuses for doing so, and thrown mud in the face of
> people who try to help you. What a piece of work!

He hasn't been given good advice. He's been given advice completely
unrelated to the problem he's explained at great length, and which is not
nonsense. The only mystifying thing is that he's still here, rather than
having long since buggered off in search of people who might engage with
his problem.

tom

--
It is not the nature of a meme to be understood, it is only to be
followed. -- Benny
From: Tom Anderson on
On Thu, 6 May 2010, Joshua Cranmer wrote:

> On 05/06/2010 02:22 AM, Joshua Maurice wrote:
>
>> Also, as a potentially incorrect observation, do you think most java
>> developers use notepad or some other text editor to do their work? I
>> would suspect that most people use Eclipse nowadays. Eclipse is almost
>> exactly what I want from a build system, except it's limited to Java.
>
> As an aside, I've noticed that not using a fully-featured IDE seems to
> increase my productivity. Trying to figure out how to get it to just add on a
> single -classpath argument to the build step was an hour of my life wasted.

Could you expand on that? What do you mean by 'build step', and how did
you do it? Was this some specific and unusual need, or did you just not
know about the Configure Build Path dialogue box?

> Not to mention the length of time it takes to start up on my system,

Fair enough!

> as well as the braindead autocompletion it attempts to do.

Could you expand on that too?

> As people have repeated stated:
> 1. You can't abstract dependency data out of class files alone.

He knows that, and has stated so.

> 2. If your project were properly compartmentalized, this wouldn't be an
> issue.

He knows that, and has stated so.

> 3. If fixing the design is really so big a deal, then you are up a creek
> without a paddle.

Which is exactly why he's trying to build a paddle!

tom

--
File under 'directionless space novelty ultimately ruined by poor
self-editing'