From: Joshua Maurice on 6 May 2010 02:22 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 6 May 2010 02:40 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 6 May 2010 07:29 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 6 May 2010 08:58 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 6 May 2010 09:03
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' |