Slashdot Mirror


A Unified Theory of Software Evolution

jso888 writes "Salon has a nice article today on Meir Lehman's work on how software evolves and is developed. Lehman's investigation of the IBM OS/360 development process became the foundation for Brooks' Law: "Adding manpower to a late software project makes it later." He is hopeful that his work will make software development less of an art and more of an engineering science."

232 comments

  1. Evolution is a MYTH!!! by Mr.+Neutron · · Score: 3, Funny

    Software doesn't evolve by chance, folks, it is DESIGNED by its CREATORS.

    Please check your crackpot theories and psuedo-science at the door. /. is a site for SERIOUS INTELLECTUAL DISCUSSION.

    Thank you.

    --
    dinner: it's what's for beer
    1. Re:Evolution is a MYTH!!! by pokeyburro · · Score: 0, Offtopic

      Grrrr. Why was this modded as flamebait? It's FUNNY, dammit!

      --
      Lately democracy seems to be based on the skybox, the Happy Meal box, the X-box, and the idiot box.
    2. Re:Evolution is a MYTH!!! by MrHat · · Score: 1

      /. is a site for SERIOUS INTELLECTUAL DISCUSSION

      I don't know whether to laugh or cry.

    3. Re:Evolution is a MYTH!!! by Anonymous Coward · · Score: 0

      This would be funny, if it werent so sad.

    4. Re:Evolution is a MYTH!!! by ch-chuck · · Score: 2, Insightful

      Oh I don't know - when I worked in software testing it certainly seemed like the developers were just making random variations in the code base and we testers would weed out the broken ones and every once in a great while some random variation would be an actual improvement so we'd go with that, then start with the random variations on that code base.

      --
      try { do() || do_not(); } catch (JediException err) { yoda(err); }
    5. Re:Evolution is a MYTH!!! by Alien54 · · Score: 2
      Two thoughts:

      1) Software doesn't evolve by chance, folks, it is DESIGNED by its CREATORS. Please check your crackpot theories and psuedo-science at the door. /. is a site for SERIOUS INTELLECTUAL DISCUSSION.

      So I take it you are in favor of creationism?

      Sorry, but the parallels were so obvious ... ;)

      2) For extra ammo, Lehman also has expanded the graphs and data from his original studies in the 1970s. Taken together, they show most large software programs growing at an inverse square rate -- think of your typical Moore's Law growth curve rotated 180 degrees -- before succumbing to over-complexity.

      I am not holding my breath waiting for Microsoft to keel over into a monstrous pile of cyberwreckage any time soon.

      --
      "It is a greater offense to steal men's labor, than their clothes"
    6. Re:Evolution is a MYTH!!! by Anonymous Coward · · Score: 0

      Were the parallels really obvious? Gee, you're so smart. I am in awe. This post certainly proves that slashdot is, indeed, for serious intellectual discussion.

    7. Re:Evolution is a MYTH!!! by Alien54 · · Score: 2
      Were the parallels really obvious? Gee, you're so smart. I am in awe. This post certainly proves that slashdot is, indeed, for serious intellectual discussion

      Since you ask so politely ....

      well let's see:

      Software doesn't evolve by chance, folks, it is DESIGNED by its CREATORS.

      verse

      Life doesn't evolve by chance, folks, it is DESIGNED by THE CREATOR.

      This i a similarity that amused me slightly.

      Now of course:

      Please check your crackpot theories and psuedo-science at the door. /. is a site for SERIOUS INTELLECTUAL DISCUSSION.
      relates to the facte that creationism is often characterized as a crack pot theory.

      And so the cognitive dissonance of the two juxtasposed to each other seemed funny. Plus the fact that the author obviously would not intend such a similarity as it would be destructive to his/her/it's very viewpoint.

      As both probably are taking the situation just a tad too seriously.

      and these things are what made it funny to me.

      I make no claims to my education or my intelligence. A man has got to know his limitations.

      --
      "It is a greater offense to steal men's labor, than their clothes"
    8. Re:Evolution is a MYTH!!! by koekepeer · · Score: 1

      well, unless you view the restrictions put onto the development process by pointy haired bosses as selective pressure, source code as DNA, and programmers as a software-replication machinery (since no idea is new, only modified).

      you can choose whether you take this comment seriously or not, but although it is a crude simplification of reality,it's not completely invalid in my opinion.

      and perhaps in the old days /. was a site for "serious intellectual discussion" (yes i have seen it: you're user #3115 and i bow with great respect to you, sir :-) ), but get real, /. is now a place where you can gather enough information about recent development in geek-world to astonish your IT buddies who think you don't know shite about their business :-P

      he he

      (nope no flamebait intended, it was a *joke*)

    9. Re:Evolution is a MYTH!!! by Anonymous Coward · · Score: 0
      Sorry, but the parallels were so obvious

      Here's a more thorough explanation of his post, Clue-Boy.

    10. Re:Evolution is a MYTH!!! by gweihir · · Score: 3, Informative

      it certainly seemed like the developers were just making random variations

      This is called error seeding and is used to evaluate the performance of testing systems (including the people doing it).

      On the other hand, I dimmly remember something about not to do it with production code....

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted and ignored otherwise.
    11. Re:Evolution is a MYTH!!! by sahala · · Score: 3, Informative
      Software doesn't evolve by chance, folks, it is DESIGNED by its CREATORS

      I'm not sure whether this was supposed to be funny or whether other readers are interpreting it as funny. There have also been a few stabs at the parallels with life (evolution vs creation, etc). Hrm...whatever. From the article: "The gap between biological evolution and artificial systems evolution is just too enormous to expect to link the two,"

      In all seriousness, I've seen so many project managers use evolution (not the theory explained in the article, however) as some sort of methodology for their projects and I have not seen any of those projects truely succeed. The idea that you throw something, anything, out there, find out what's good/bad with it, then re-iterate the design and development based on findings is such a random and expensive process. I've seen so many programmers put in half-assed functionality, especially on front-end code, just so that they'll let testers and "usability" experts fix the problem and fix it in the next release. This is like throwing a chunk of randomly chipped wood out and hoping that others can tell you how to sand it down to something usable.

      Cooper makes this analogy in "The Inmates are Running the Asylum" (link here) and bashes project teams that take on this sort of process of evolution. He poses a process of almost completely up-front design by building to a theoretical user persona and culling out complexity by ditching features that will never be used by this persona.

      Now Cooper's views don't necessarily contradict Lehman's (at least from what I've seen in the article). In fact at a glance they seem to blend in nicely.

      From the article, again: Figure out how to control the various feedback loops -- i.e. market demand, internal debugging and individual developer whim -- and you can stave off crippling over-complexity for longer periods of time

      It's clear that he means that we, as programmers, should be willing to throw away a shitload of code. I agree with this. I think there's a huge belief in re-use (I tend to it myself) among programmers for both practical and personal (pride...having spent weeks on certain code) reasons. But there are so many cases where the re-use of a small feature among others in bloated code can really complicate and bog down the overall code-base, or where the functionality of certain re-used code doesn't really fit, but so much investment has been made that it might as well be re-used.

      Developers really do need to listen to the feedback provided by the marketplace and other forces. I'm not certain if the unified theory is so unified, but it's a valid perspective and blends in with other published sentiments on software development methodology.

      'nuff rambling...

    12. Re:Evolution is a MYTH!!! by Anonymous Coward · · Score: 0

      No, thats called Crappy Coders I'm currently working as a Software Tester, and we barely have time to test the latest release (3 days for a full regression test? Well, uh, sure...) Let alone have the developers purposly introduce bugs into the code!

      Although there is one developer...we've heard he's done a "fix" on the latest code. We're expecting the next version to be broken in a laughable and extremly obvious way. I suspect he is simply retarded.

    13. Re:Evolution is a MYTH!!! by Beliskner · · Score: 1
      Friend, I don't think you understand who this guy is. Imperial College Computing Department is in the same class as MIT and Berkeley Computing Department and is in many regards better as a centre of excellence. This will not start a flame war between Universities because you can't really start a flame-war between equals.

      This gentleman said nothing about Microsoft keeling over. Microsoft Windows had one of the largest codebases in the world, as does Unix and Linux. He is pointing out the natural resistance to do a complete redesign and refactor that all corporations have (simple lack of middle-management foresight). As a matter of fact Microsoft is now the exception. Halting all software development and performing a "security and bug sweep" has most corporate software managers scratching their heads thinking Bill Gates is insane. This is developer garbage collection on a grand scale. He points out in his report that if this maintenance of the core of the software is not done then a time will come when the software will collapse and be beyond all human understanding, even if stabilisation methods are used such as compartmentalisation (JavaBeans, C++ libraries and OOP) or abstraction (4GL).

      Linux however has shown that the core (kernel) itself is altered almost as much as the source code of gcc and other heavy-development software. The jump to kernel 2.2 to 2.4 with increased SMP capabilities needed the kernel core to be re-examined and re-engineered. Gutting a whale and putting it back together >> gutting an amoeba and putting it back together. The low latency and kernel pre-emption patches make big changes (not algorithmically but widespread and far-reaching) than ANY Microsoft patch, even a jump from Windows 2000 to Windows XP. I mean replacing almost all OS spinlocks - WHOA! Although the growing pains are starting to show such as VM problems and Linus keeping up with patches. I remember that article that stated that Microsoft Office is 2000% oversized, and I bet that's just because they got rid of clippy. Well that is what this researcher states happens - more bloat, double the software size and all you can add is one new feature because there are so many bugs and nobody understands how your change will cascade to the rest of the program - you could have broken it, simply because the program is too damn complicated.

      I am not holding my breath waiting for Microsoft to keel over into a monstrous pile of cyberwreckage any time soon

      I was until Microsoft did their code audit. It was an unprecedented moment, it was like I'd heard on the news that Ford had stopped building cars for the next 10 years to cut out the unnecessary transistors from the Engine Management Unit. I always imagined some dumbass Micro$oft manager trying to insert a patch to make XML-RPC backwards compatible with DCOM screwing the company over. Damn, Billy-boy Gates is not that stupid.

      --
      A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
    14. Re:Evolution is a MYTH!!! by gweihir · · Score: 2

      No, thats called Crappy Coders

      With all the idiotic things being written today, nobody understands a satiric comment anymore.

      And the "+1 Informative" really concerns me. I expected a "+1 Funny", if anything at all.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted and ignored otherwise.
    15. Re:Evolution is a MYTH!!! by Anonymous Coward · · Score: 0

      Genes don't evolve by chance, either. They evolve
      by responding to environmental conditions. Just
      like programmers do.

    16. Re:Evolution is a MYTH!!! by ahde · · Score: 2

      "February is security month" was more of a theme, than a practical application. Kind of like "black history month" -- It's not that blacks only contribute to society during February, really its about making banners and watching slideshows to hopefully remind you about it. All other work doesn't stop for the month, and (hopefully) security conscientiousness continues past the end of the month.

    17. Re:Evolution is a MYTH!!! by Beliskner · · Score: 1
      and (hopefully) security conscientiousness continues past the end of the month

      Hmmm interesting those corporate buzzword generators win again. Trouble is there first has to be a great awakening like WTC. This has not happened in the Internet world yet, after all bin Laden didn't recruit any script-kiddies. Anyways here's a better article that's been posted before on /. that's relevant here about how Linus likes lots of kernel trees and why he thinks this helps development.

      --
      A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
    18. Re:Evolution is a MYTH!!! by Tablizer · · Score: 1

      (* Genes don't evolve by chance, either. They evolve by responding to environmental conditions. Just like programmers do. *)

      Survival of the Fittest BS'er.

      It seems there is more room for BS in software development than most other professions because the tradeoffs are hard to explain to management and hard to weigh together, and you can always blame the tools, vendor, and prior/future programmer without them being around to defend themselves.

      -T-

  2. Brooks' Law by TheToon · · Score: 2, Interesting
    Brooks' Law: "Adding manpower to a late software project makes it later."

    This can be simplified: "Adding manpower to a software project makes it later."


    There's rarely that many programmers needed for a given task anyway. You need a project leader and lots of monkeys to test it... very few projects should have more than 10 programmers (if any).
    --
    //TheToon
    1. Re:Brooks' Law by flynt · · Score: 4, Funny

      very few projects should have more than 10 programmers (if any).

      You realize you just suggested that very few software projects should have any programmers. How is the project going to get completed without anyone working on it?

    2. Re:Brooks' Law by alanwj · · Score: 3, Funny
      You realize you just suggested that very few software projects should have any programmers. How is the project going to get completed without anyone working on it?

      My boss seems to think that having a lot of meetings about it will do the trick.

    3. Re:Brooks' Law by TheToon · · Score: 1

      Uhm.... yes... and I even did a preview.

      Maybe there is a deeper truth in it. Maybe many software projects would be better off without programmers? :)

      --
      //TheToon
    4. Re:Brooks' Law by jeffy124 · · Score: 2, Insightful

      your simplification is somewhat faulty. If you have 3 people developing a large complex system, at some point it becomes obvious they'll need more than three in order to make the deadline, even if that deadline is years away, and especially if all three lack serious knowledge in a particular topic, such as databases or UI design. Think of what slashcode might be like if cmdrtaco were still the only guy working on it.

      --
      The One Rule Of Chess You'll Ever Need: Don't play someone who carries a kit in their bookbag.
    5. Re:Brooks' Law by ACK!! · · Score: 3, Insightful

      Someone else called this oversimplification. It all depends on the project.

      The number of programmers needed on a project depends upon the number of software modules in said project. Each programmer working on their module and with the other programmers and project managers for the sake of integration and communication between modules talking to each other. I am not a project manager so I do not have the magic formula but there needs to be some serious research in the IT industry of how many programmers are needed per project for the number of independent sections or modules of software being created.

      Then and only then will you have a situation of better utilized output over a large group of programming talent.

      10 may me too few programmers for some huge program and too many for plenty of other projects.

      ________________________________________________ __

      --
      ACK /ak/ interj. 2. [from the comic strip "Bloom County"] An exclamation of surprised disgust, esp. i
    6. Re:Brooks' Law by Yunzil · · Score: 1

      very few projects should have more than 10 programmers (if any).

      *blink*. Have you ever worked on anything of more than, say, 100,000 lines of code?

    7. Re:Brooks' Law by mikeee · · Score: 2

      Hey, I can think of lots of software projects that shouldn't have any programmers...

      But seriously, one interesting implication is that forks/parallel projects can be a Good Thing! If you have two 10-person projects, and throw one away, you're better off than with a 20-person project.

      (Linux filesystems seem to have taken this to heart... ;)

    8. Re:Brooks' Law by pointym5 · · Score: 2

      Right. And along the way it'd be nice if they figure out how to know how many "modules" a project will require, since currently that's as impossible to accurately predict as is the manpower requirement.

      As long as there's a product management group who can drop "Oh by the way" new requirements on the product a week after code freeze, there'll always be a problem.

    9. Re:Brooks' Law by Anonymous Coward · · Score: 0

      Think of what slashcode might be if there had been just one real programmer working on it.

    10. Re:Brooks' Law by ACK!! · · Score: 2

      Very good point. As long as you have new modules being popped in without consideration to the resources needed then you are going to have problems.

      The funny thing is that I have some two other problems arise from Brooke's law.

      1) Not wanted to justify more resources to a project the managers simply roll in features into existing modules that should really be seperated out. The same number of programmers end up getting hit twice as hard.

      2) Managers have actually quoted this law to others as a excuse for not assigned more resources to a project. Many times in smaller software houses the problem you have is getting the programmer resources for a project. Only the larger houses run into the problem of justing throwing people at a problem to make their deadlines and not having that work the way they wanted it to.

      ________________________________________________ __

      --
      ACK /ak/ interj. 2. [from the comic strip "Bloom County"] An exclamation of surprised disgust, esp. i
    11. Re:Brooks' Law by BeBoxer · · Score: 2

      And the meetings will continue until he discovers why no work is getting done!

      There's a guy I work with, and that should be his .sig. He rarely shows up for a meeting without invoking this humorous tagline. :-P

    12. Re:Brooks' Law by Eccles · · Score: 1

      *blink*. Have you ever worked on anything of more than, say, 100,000 lines of code?

      Perhaps anything bigger than that should be factored into multiple projects, with a rarely changed and well-documented interface between them?

      Somewhere more than 100,000 lines is probably larger than one person can grok, depending on how well-organized the code is.

      --
      Ooh, a sarcasm detector. Oh, that's a real useful invention.
    13. Re:Brooks' Law by quantaman · · Score: 2

      How many people are working on Linux?

      --
      I stole this Sig
    14. Re:Brooks' Law by kigrwik · · Score: 3, Funny

      >How is the project going to get completed without anyone working on it?

      Read my lips: E-VO-LU-TION

      Example:
      Start with "printf("Hello World\n");" and leave it in a warm, wet place for a few months, feed it with some .po, and .in files, and see what you get : GNU/Hello !

      I have a strong belief that's what they did with Mozilla :)

      --
      -- don't discount flying pigs until you have good air defense
    15. Re:Brooks' Law by angel'o'sphere · · Score: 1


      Brooks' Law: "Adding manpower to a late software project makes it later."

      This can be simplified: "Adding manpower to a software project makes it later."


      The simplification is wrong.

      4 Architects for the first 4 weeks, 4 architects plus 4 designers for the next 6 weeks, *2* architects and 6 designers and two coding teams of 4 each for the next 8 weeks... incresing to 4 coding teams with 4 team members each over the next 2 monthes.

      A quite usual approach for a med siced project.

      The 4 teams would develop in parallel, the designers and architects would work in parallel on stuff which is planned to be coded in 2 or more weeks.

      Approaching the end of the development developer teams are released form the project.

      It looks like this:

      Analysis: 4A xxxx
      A+Design: 4A4D xxxxxx
      A+D+Devel: 2A6D2T xxxxxxxx
      A+D+Devel: 2A6D3T xxxx
      A+D+Devel: 2A6D4T xxxx.....

      The whole point is: can you plan the how developers get taken into the project and get out of it.

      Do you have several projects in your house so that you can utilize their work hours?

      And of course: it varyes from project to project.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    16. Re:Brooks' Law by angel'o'sphere · · Score: 1

      In my previous post, it should look like this

      .Analysis: 4A ..xxxx
      .A+Design: 4A4D ....xxxxxx
      A+D+Devel: 2A6D2T ........xxxxxxxx
      A+D+Devel: 2A6D3T ................xxxx
      A+D+Devel: 2A6D4T ....................xxxx.....

      Regards,
      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    17. Re:Brooks' Law by Anonymous Coward · · Score: 0

      three.

    18. Re:Brooks' Law by dgroskind · · Score: 1

      You realize you just suggested that very few software projects should have any programmers.

      His observation follows logically from Brooks' Law that adding programmers to a late project makes it later.

      If you start with no programmers, the project will be behind schedule on Day 1. If you subsequently add a programmer, it follows that it will be even further behind.

      Brooks' Paradox states that if you have zero programmers the project will never get done. If you add a programmer, it will get done even later.

    19. Re:Brooks' Law by gweihir · · Score: 2

      very few projects should have more than 10 programmers (if any)

      I have to disagree there. A project without any programmers will certainly face some dificulties in the end ;-)

      But 10 is a good upper bound. That is still enough that they can know each other talk to each other in case of questions.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted and ignored otherwise.
    20. Re:Brooks' Law by gweihir · · Score: 2

      My boss seems to think that having a lot of meetings about it will do the trick.

      At some point you will have meetings to discuss the meetings.

      At a later point you will do nothing else than having meetings, but your project will still be further and further delayed....

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted and ignored otherwise.
    21. Re:Brooks' Law by Vanders · · Score: 1

      You need a project leader and lots of monkeys to test it...

      As a software tester, I take your assertion that testers are monkeys as an offence. Even if we do have a picture of six monkeys pined up on our manager cube with "Test Monkeys" written on it...

    22. Re:Brooks' Law by TheToon · · Score: 1

      >As a software tester, I take your assertion that testers are monkeys as an offence.

      It's more like "infinity number of monkeys, with infinity number of PC's..." etc...

      With the quality level of todays software, we could need them... the monkeys that is.

      And come on, I'm not saying that testers are monkeys. Testers are not the sole reasons for bugs in software. Design, programmers, architecture... *deadlines* (otoh, without deadlines programs would never reach version 1.0)

      --
      //TheToon
    23. Re:Brooks' Law by TheToon · · Score: 1

      >your simplification is somewhat faulty

      Of course it is! It is a simplification.

      :)

      --
      //TheToon
    24. Re:Brooks' Law by rusty+spoon · · Score: 1

      Yeah, but if the boss can figure out the modules then surely he can figure out the lines of code. We can then deduce the bugs (1 per 10 lines right?) and write those first, test them all early and get them fixed.

      Then we just get on and write the 9/10 lines that are good, avoid any further testing and ship the thing.

      Sounds like a plan but really it's just the vodka talking ;)

      Here's a better plan; When you manager (or marketdroid) comes in and starts spouting they "want this by then" tell them there are three options 1) Features, 2) resources and 3) time. They can pick the two they want without your input and you manage the third without their input.

      *That's* a plan.

    25. Re:Brooks' Law by rusty+spoon · · Score: 1

      A lot depends on the code. I have one other developer in my team and we work on 300k lines of C++. It's neat code, well laid out and easy to maintain so two is just fine. It was just me for a while [phew].

      I've seen smaller projects need more developers just coz the code was foul. Cheaper to start again - which is the essence of this story I guess ;)

    26. Re:Brooks' Law by Tharsis · · Score: 1

      Hey, any computer dummy can tell you that computer programs just appear out of thin air!

  3. Wow a new methodology by Anonymous Coward · · Score: 0

    Perhaps we should call it Software Engineering.

    Quick patent it before some else discovers its been in use for the last 30 years

    1. Re:Wow a new methodology by jayant_techguy · · Score: 1

      *Software Engineering* exists already. Search Google for the phrase.
      Software Development is an art, it cannot be done by all people. Every succesful developer has his own way to evolve the software and give it powers, and no one can write a book or article on how to evolve the software to gurantee it will work better than its competitor.

    2. Re:Wow a new methodology by Anonymous Coward · · Score: 0

      True software engineering exists but not to the extent of physical engineering. We still have a long way to go. Take for instance building a bridge. This has been done for a long time and there are a specific set of things that must be done while building one.
      Programming does not work that way. It's very ad hoc, Software Engineering is mislabeled.
      Also, art does have methods and rules. Only after mastering the rules are you aloud to break them. Otherwise your just some hack {in the art sense of the word :)}

    3. Re:Wow a new methodology by friedmud · · Score: 1

      "no one can write a book or article on how to evolve the software to gurantee it will work better than its competitor."

      Maybe - but trying telling that to some of my upper CS Professors around here....

    4. Re:Wow a new methodology by Anonymous Coward · · Score: 0

      I Know SE exists, I was being sarcastic.

      Software development is a science, not art. It all those wooly usability people who'll try to convince you that software development is an artform.

      Define your requirements well, involve your users in the design process and most important of all have a good manager. Get a manager who won't just cave in and give his boss an unrealistice budget or deadline and your half way there already.

      Projects need to planned, and to stop making the same mistakes you needed repeatble processes for designing software just as you try to reuse code to avoid redesigning the wheel again and again.

      No you can't guarantee perfect software that will be better than your competitor, we live in a fast changing economy so any methods need to practical and easily understood, but that does not mean that we shouldn't try to have usable methods for devloping software.

    5. Re:Wow a new methodology by Anonymous Coward · · Score: 0

      When breaking rules, you should always do it very quietly.

    6. Re:Wow a new methodology by Anonymous Coward · · Score: 0

      > Software development is a science, not art.

      The essence of what makes Software development possible (such as computers and computer languages) is a science, but that does not mean that everything produced by it is science aswell. It's like a pen manufactor would claim that creating pens is a science and therefor everything produced by pens must be a science. It's not true.

      Your statement is incorrect.

    7. Re:Wow a new methodology by Anonymous Coward · · Score: 0

      Preferably using #define's to hide it even more.

  4. Brook's law can't be used by blirp · · Score: 4, Insightful

    While "Brook's law" might be a law, it's only useful in retrospect. Most software projects have no idea how far behind they really are. So basically, you can always add manpower, you're really only half way through anyways...

    1. Re:Brook's law can't be used by Anonymous+Brave+Guy · · Score: 1
      So basically, you can always add manpower, you're really only half way through anyways...

      Nah, I'm sure every report we ever file at work indicates 90% complete...

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    2. Re:Brook's law can't be used by JamesOfTheDesert · · Score: 4, Funny
      So basically, you can always add manpower, you're really only half way through anyways...

      True. I used to file status reports using Zeno's Work Estimation. On each report I just halfed the percentage of remaining work.

      --

      Java is the blue pill
      Choose the red pill
    3. Re:Brook's law can't be used by JordanH · · Score: 2
      • While "Brook's law" might be a law, it's only useful in retrospect. Most software projects have no idea how far behind they really are. So basically, you can always add manpower, you're really only half way through anyways...

      I don't understand your point. If Brook's Law is valid, then it's useful not only in retrospect, but at any time, I think.

      While it may be true that most software projects have no idea how far behind they really are, that has little to do with Brook's Law. Brooks's Law doesn't say "adding manpower to a project that might be late will only make it late", it says "adding manpower to a project that's already late will only make it later". Certainly, most software projects know if they are already late, they may not know by how much, but if Brooks's law holds (in retrospect or not), do they really want to be even later?

      Now if you are referring to the fact that projects sometimes miss milestones and are predicted to be late, when in fact they won't be, what's the point of adding manpower in this situation?

      It seems to me that Brooks's Law at all phases of a projects lifetime. It even holds at the project start. If the project is already late before it's started, it will certainly get later if you staff it. :-) Better to start a different project with a more realistic deadline, no?

      Having said this, I understand that some people have done some excellent work in how you can avoid Brooks's Law to some extent. This work qualified exactly how to add manpower to a late project to help in various ways. I don't have the reference handy, though.

    4. Re:Brook's law can't be used by thomas.galvin · · Score: 1

      I don't understand your point. If Brook's Law is valid, then it's useful not only in retrospect, but at any time, I think.

      The main factor in Brook's Law is the time it takes a person to become familiar with a system. The farther along the development cycle a project is, the more complex it will be, the harder it will be for a developer to get a working feel for it, and thus the longer it will take for him/her to be useful to the project. If this developer is assigned some part of the code, one of two scenarios is likely: one, that the rest of the team will be held up waiting for the newbie to grok the system and churn out some working code, or two, that the developer will start hacking away without the requisite knowledge of the system, and the rest of the team will spend time dealing with the newbie's errors. It is also important to note that "newbie" in this sense does not have to mean an inexperienced coder; just someone who doesn't know the system that is being worked on.

      If you add developers early on in the cycle, the system will be less complex and easier to understand, and the time waiting for a developer to become useful will then be less than for a project that is further along. Of course, if the modules are well thought out and self contained, knowledge of the rest of the system isn't really necessary, as long as your module communicates the way it is expected to. This will allow people to be added to particular tasks and not interfere with the other developers. For example, I would be rather useless as an EMACS developer, but I might be able to jump in on a new text editor project, or write some new modes.

      Anyway, to apply Brook's Law, one must weigh the time it will take a developer to become useful, and the errors he/she might introduce to the system, and that developer's potential contribution. This can be done at any time, but the ratio is more likely to be unfavorable the longer the project has been in development. For some projects, you also might want to consider "addition by subtraction," cutting the deadwood and letting everyone else get to work.

    5. Re:Brook's law can't be used by rusty+spoon · · Score: 1

      It's funny you should say that. I knew a developer that maintained his (contract) project 90% complete for almost a year whilst, perversely perhaps, working solid hours on it.

      Yup, he was crap and eventually fired and the project was scrapped. BUT, he stills views it as a success.

      You know who you are!

  5. Can We Say... by KingAdrock · · Score: 1

    Mythical Man Month???

    1. Re:Can We Say... by Anonymous Coward · · Score: 0

      read the article? The Mythical Man Month is mentioned.

    2. Re:Can We Say... by Surak · · Score: 1, Offtopic

      Mythical Man Month???

      A little wine with my dinner so I'm the grape ape!


      This is a Planet of the Apes reference in case nobody noticed.

  6. "Adding manpower to a late software project makes by Anonymous Coward · · Score: 2, Funny

    Where's the guy with the .sig "it takes nine months to bear a child, no matter how many women you assign to the task" when you need him?!?!?!?!?

  7. Seek and thou shalt find??? by HiQ · · Score: 1, Funny

    First it's : "You'll have to forgive me," apologizes Lehman at one point, sifting through a pile of research papers on a nearby shelf. "Since I lost my secretary, I can't seem to find anything." . And in the last sentence of the article it says: ...a man in search of both fulfillment and a little revenge"
    Poor, poor man; he'll never find it I'm afraid!

  8. Read the bloody dictionary! by Anonymous Coward · · Score: 1, Informative

    from www.dictionary.com

    evolution
    n.
    A gradual process in which something changes into a different and usually more complex or better form. See Synonyms at development.

    a. The process of developing.

    b. Gradual development.

    Seems like quite an appropriate term for 90% of the software projects I have ever worked on.

    1. Re:Read the bloody dictionary! by Lumpy · · Score: 1

      well to a point this joke is kind-of close to target. software that evolves is not yet here (there are some people making headway with fpga's in this but nothing you you run on a computer can evolve in any way (I highly doubt that the entier microsoft collective can code a self evolving program let alone understand one.... they dont hire innovative programmers.)

      I do think that they only way we are ever going to get A.I. is with evolutionary programming. no human will be able to create AI but we will be able to evolve lesser programs to become an AI.

      On the other hand, I may be just full of canine fecies.

      --
      Do not look at laser with remaining good eye.
    2. Re:Read the bloody dictionary! by Anonymous Coward · · Score: 0
      ".... they dont hire innovative programmers"

      waaaaa.... sounds like someone didn't get hired

    3. Re:Read the bloody dictionary! by Lumpy · · Score: 1

      holy fark, no... I would have NEVER applied. I know at least 4 microsoft "programmers" 2 current and 2 ex.. and they all are pretty much jerks. The atmosphere there perpetuates it as I knew 2 of the before they even worked there and were ok people.

      sorry, but MS dont have enough money to get me to work for them. Working for micrsoft is like screwing your sister... Yeah you get a blouse full of goodies and a piece of tail but it's just wrong and immoral.

      so Wahhhh.... on you buddy.

      (this post wasted on a troll... but I had to.

      --
      Do not look at laser with remaining good eye.
  9. mirror anyone? by fabiolrs · · Score: 1

    the site is slashdoted already... does anyone have a mirror?

    --
    Fabio - Sumare/Sao Paulo/Brazil/South America/Earth/Solar System/Milky Way/Universe
    http://www.morroida.com.br
    1. Re:mirror anyone? by Anonymous Coward · · Score: 0
      does anyone have a mirror?

      You look fine. Now quit wasting time and get in the car.

  10. i found it! :)) by fabiolrs · · Score: 1, Redundant

    i refreshed it and it appeared, if anyone finds any problem this is the content:

    April 8, 2002 | The office of Meir "Manny" Lehman is a cozy one. Located on the outer edge of the Imperial College of Technology campus in South Kensington, London, it offers room for all the basic amenities: a desk, two chairs, a Macintosh G4 and a telephone. Still, for a computer scientist nearing the end of a circuitous 50-year career, the coziness can be a bit confining.

    "You'll have to forgive me," apologizes Lehman at one point, sifting through a pile of research papers on a nearby shelf. "Since I lost my secretary, I can't seem to find anything."

    The pile, a collection of recently published papers investigating the topic of software evolution, a topic Lehman helped inaugurate back in the 1970s, is something of a taunting tribute. Written by professional colleagues at other universities, each paper cites Lehman's original 1969 IBM report documenting the evolutionary characteristics of the mainframe operating system, OS/360, or his later 1985 book "Program Evolution: Processes of Software Change," which expands the study to other programs. While the pile's growing size offers proof that Lehman and his ideas are finally catching on, it also documents the growing number of researchers with whom Lehman, a man with dwindling office space and even less in the way of support, must now compete.

    "And to think," says Lehman, letting out a dry laugh. "When I first wrote about this topic, nobody took a blind bit of notice."

    Software evolution, i.e. the process by which programs change shape, adapt to the marketplace and inherit characteristics from preexisting programs, has become a subject of serious academic study in recent years. Partial thanks for this goes to Lehman and other pioneering researchers. Major thanks, however, goes to the increasing strategic value of software itself. As large-scale programs such as Windows and Solaris expand well into the range of 30 to 50 million lines of code, successful project managers have learned to devote as much time to combing the tangles out of legacy code as to adding new code. Simply put, in a decade that saw the average PC microchip performance increase a hundredfold, software's inability to scale at even linear rates has gone from dirty little secret to industry-wide embarrassment.

    "Software has not followed a curve like Moore's Law," says University of Michigan computer scientist John Holland, noting the struggles of most large-scale software programs during a 2000 conference on the future of technology. "In order to make progress here it is not simply a matter of brute force. It is a matter of getting some kind of relevant theory that tells us where to look."

    For Lehman, the place to look is within the software development process itself, a system Lehman views as feedback-driven and biased toward increasing complexity. Figure out how to control the various feedback loops -- i.e. market demand, internal debugging and individual developer whim -- and you can stave off crippling over-complexity for longer periods of time. What's more, you might even get a sense of the underlying dynamics driving the system.

    Lehman dates his first research on the topic of software evolution back to 1968. That was the year Lehman, then working as a researcher at IBM's Yorktown Heights facility, received an assignment to investigate IBM's internal software development process. Managers at rival Bell Labs had been crowing about per-developer productivity, and IBM managers, feeling competitive, wanted proof that IBM developers were generating just as many lines of code per man-year as their AT&T counterparts.

    Lehman looked at the development of OS/360, IBM's flagship operating system at the time. Although the performance audit showed that IBM researchers were churning out code at a steady rate, Lehman found the level of debugging activity per individual software module to be decreasing at an equal rate; in other words, programmers were spending less and less time fixing problems in the code. Unless IBM programmers had suddenly figured out a way to write error-free code -- an unlikely assumption -- Lehman made a dire prediction: OS/360 was heading over a cliff. IBM, in stressing growth over source-code maintenance, would soon be in need of a successor operating system.

    Although IBM executives largely ignored the report, Lehman's prediction was soon borne out. By 1971, developers had encountered complexity problems while attempting to install virtual memory into the operating system, problems which eventually forced the company to split the OS/360 code base into two, more easily manageable offshoots. The linear growth curve that seemed so steady in the 1960s suddenly looked like the trail of a test missile spiraling earthward.

    Lehman's report would eventually earn a small measure of fame when University of North Carolina professor and former OS/360 project manager Frederick P. Brooks excoriated the IBM approach to software management in his 1975 book "The Mythical Man Month." Using Lehman's observations as a foundation for his own "Brooks Law" tenet -- "adding manpower to a late software project makes it later" -- Brooks argued that all software programs are ultimately doomed to succumb to their own internal inertia.

    "Less and less effort is spent on fixing original design flaws; more and more is spent on fixing flaws introduced by earlier fixes," wrote Brooks. "As time passes, the system becomes less and less well-ordered. Sooner or later the fixing ceases to gain any ground. Each forward step is matched by a backward one. Although in principle usable forever, the system has worn out as a base for progress."

    By 1975, Lehman, with the help of fellow researcher Laszlo Belady, was well on the way to formulating his own set of laws. A quarter century after their creation, the laws read like a mixture of old developer wisdom and common textbook physics. Take, for example, Lehman's "Second Law" of software evolution, a software reworking of the Second Law of Thermodynamics.

    "The entropy of a system increases with time unless specific work is executed to maintain or reduce it."

    Such statements put Lehman, who would leave IBM to take a professorship at Imperial College, into uncharted waters as a computer scientist. Halfway between the formalists, old-line academics who saw all programs as mathematical proofs in disguise, and the realists, professional programmers who saw software as a form of intellectual duct tape, Lehman would spend the '70s and '80s arguing for a hybrid point of view: Software development can be predictable if researchers were willing to approach it at a systems level.

    "As I like to say, software evolution is the fruit fly of artificial systems evolution," Lehman says. "The things we learn here we can reapply to other studies: weapon systems evolution, growth of cities, that sort of thing."

    That Lehman conspicuously leaves out biological systems is just one reason why his profile has slipped over the last decade. At a time when lay authors and fellow researchers feel comfortable invoking the name of Charles Darwin when discussing software technology, Lehman holds back. "The gap between biological evolution and artificial systems evolution is just too enormous to expect to link the two," he says.

    Nevertheless, Lehman aspires to the same level of intellectual impact. While he was in retirement during the early 1990s, his early ideas jelled into one big idea: What if somebody were to formulate a central theory of software evolution akin to Darwin's theory of natural selection? In 1993, Lehman took an emeritus position at Imperial College and began work on the FEAST Hypothesis. Short for Feedback, Evolution and Software Technology, FEAST fine-tunes the definition of evolvable software programs, differentiating between "S-type" and "E-type": S-type or specification-based programs and algorithms being built to handle an immutable task, and "E-type" programs being built to handle evolving tasks. Focusing his theory on the larger realm of E-type programs, Lehman has since expanded his original three software laws to eight.

    Included within the new set of laws are the Law of Continuing Growth ("The functional capability of E-type systems must be continually increased to maintain user satisfaction over the system lifetime") and the Law of Declining Quality ("The quality of E-type systems will appear to be declining unless they are rigorously adapted, as required, to take into account changes in the operational environment"). For added measure, Lehman has also thrown in the Principle of Software Uncertainty, which states, "The real world outcome of any E-type software execution is inherently uncertain with the precise area of uncertainty also unknowable."

    While the new statements still read like glossed-over truisms, Lehman says the goal is to get the universal ideas on paper in the hopes that they might lead researchers to a deeper truth. After all, saying "objects fall down instead of up" was a truism until Sir Isaac Newton explained why.

    "Whenever I talk, people start off with blank faces," Lehman admits. "They say, 'But you haven't told us anything we didn't already know.' To that I say, there's nothing to be ashamed of in coming up with the obvious, especially when nobody else is coming up with it."

    For extra ammo, Lehman also has expanded the graphs and data from his original studies in the 1970s. Taken together, they show most large software programs growing at an inverse square rate -- think of your typical Moore's Law growth curve rotated 180 degrees -- before succumbing to over-complexity.

    Whether the curves serve as anything more than a conversation-starter is still up for debate. Chris Landauer, a computer scientist at the Aerospace Corporation and a fellow guest speaker with Lehman at a February conference on software evolution at the University of Hertfordshire, was impressed by the Lehman pitch.

    "He has real data from real projects, and they show real phenomena," Landauer says. "I've seen other sets of numbers, but these guys have something that might actually work."

    At the same time, however, Landauer wonders if the explanation for similar growth trajectories across different systems isn't "sociological." In other words, do programmers, by nature, prefer to add new code rather than substitute or repair existing code? Landauer also worries about whether the use of any statistic in an environment as creative as software development leads to automatic red herrings. "I mean, how long does it take a person to come up with a good idea?" Landauer asks. "The answer is we just don't know."

    Michael Godfrey, a University of Waterloo scientist, is equally hesitant but still finds the Lehman approach useful. In 2000, Godfrey and a fellow Waterloo researcher, Qiang Tu, released a study showing that several open-source software programs, including the Linux kernel and fetchmail, were growing at geometric rates, breaking the inverse squared barrier constraining most traditionally built programs. Although the discovery validated arguments within the software development community that large system development is best handled in an open-source manner, Godfrey says he is currently looking for ways to refine the quantitative approach to make it more meaningful.

    "It's as if you're trying to talk about the architecture of a building by talking about the number of screws and two-by-fours used to build it," he says. "We don't have any idea of what measurement means in terms of software."

    Godfrey cites the work of another Waterloo colleague, Rick Holt, as promising. Holt has come up with a browser tool for studying the degree of variation and relationship between separate offshoots of the original body of source code. Dubbed Beagle, the tool is named after the ship upon which Charles Darwin served as a naturalist from 1831 to 1836.

    Like Landauer, Godfrey expresses concern that a full theory of software evolution might be too "fuzzy" for most engineering-minded programmers. Still, he credits Lehman for opening the software field to newer, more intriguing lines of inquiry. "It's the gestalt 'Aha' of his work that I find more interesting than the numbers," Godfrey says.

    For Lehman, the lack of a scientific foundation to the software-engineering field is all the more reason to keep digging. Fellow researchers can quibble over the value of judging software in terms of total lines of code, but until they come up with better metrics or better theories to explain the data, software engineering will always be one down in the funding and credibility department. A former department head, Lehman recalls the budgetary battles and still chafes over the slights incurred. Now, as he sits in a cramped office, trying to recruit new corporate benefactors and a new research staff, he must deal once again with those who label software development a modern day form of alchemy -- i.e. all experiment but no predictable result.

    "In software engineering there is no theory," says Lehman, echoing Holland. "It's all arm flapping and intuition. I believe that a theory of software evolution could eventually translate into a theory of software engineering. Either that or it will come very close. It will lay the foundation for a wider theory of software evolution."

    When that day comes, Lehman says, software engineers will finally be able to muscle aside their civil, mechanical and electrical engineering counterparts and take a place at the grown-ups' table. As for getting bigger offices, well, he sees that as a function of showing the large-scale corporations that fund university research how to better control software feedback cycles so their programs stay healthier longer. Until then, the search for a theory has rendered Lehman less of a Darwin and more of an Ahab -- a man in search of both fulfillment and a little revenge.

    --
    Fabio - Sumare/Sao Paulo/Brazil/South America/Earth/Solar System/Milky Way/Universe
    http://www.morroida.com.br
  11. Whow! He's still living? by software_non_olet · · Score: 3, Interesting

    "When I first wrote about this topic, nobody took a blind bit of notice."

    No, sir, I did and many collegues who were also interested in good timely work. We lent your books to each other with the notion "that's something you should read".

    Great to hear that you are still alife and enjoying to give programmers and their managers something to look at and something worth to read and think about.

    Youngsters, better pay respect to this old software camel with the hole in the sole of his shoe (and probably also in his all-too British pullover), or I DDOS your toilet!

    1. Re:Whow! He's still living? by ryanflynn · · Score: 1

      Sorry, but anyone that can't spell "colleagues" correctly doesn't really have any. They have "buds" or "pals". It's a scale.

    2. Re:Whow! He's still living? by Anonymous Coward · · Score: 0
      Sorry, but anyone that can't spell "colleagues" correctly doesn't really have any

      Did you notice that he's posting from a .de domain? Let's see you write something in Dutch.

    3. Re:Whow! He's still living? by Anonymous Coward · · Score: 0

      Oh Christ! I hope you're being facetious...

      Hopefully by now, most people have realised that .de is GERMANY. People from Germany speak GERMAN.

      In case you're really confused, people who speak Dutch are from the NETHERLANDS (NEDERLAND). The TLD for the Netherlands is .nl

  12. The key point is paragraph 9 by gelfling · · Score: 5, Insightful

    "Unless IBM programmers had suddenly figured out a way to write error-free code -- an unlikely assumption -- Lehman made a dire prediction: OS/360 was heading over a cliff. IBM, in stressing growth over source-code maintenance, would soon be in need of a successor operating system."

    Which means that commerical systems don't so much evolve as stub their growth paths out and switch direction or spawn new generations because embedded complexity has killed off the feasibility of maintaining it. In other words, all new releases are the cause of and ultimately an attempt to escape from, the chimera that is overly complex code. In commercial terms this should be astounding. We're paying to gronk up our own because we erroneously believe the NEXT version will be something radically new and elegant which of course it can't be.

    New Version "x+1.y" is simply an ejection seat.

    1. Re:The key point is paragraph 9 by miffo.swe · · Score: 2, Insightful

      I think you just explained what happened to Win3.1, Win 95 and win ME. It was bound to happen considering the tragic code building the foundation.

      --
      HTTP/1.1 400
  13. Was it him? by Anonymous Coward · · Score: 0

    "Lehman's investigation of the IBM OS/360 development process became the foundation for Brooks' Law: 'Adding manpower to a late software project makes it later.'"

    Yet since ancient times, those alive within the Tao of Programming have known this to be true.

  14. Blame it on C++ by Caractacus+Potts · · Score: 3, Insightful


    I'm not attempting to flamebait here, just submitting an observation. It seems to me that many of the complexity issues can be overcome by designing better languages. I've never stopped scratching my head over the perseverance of old languages like C++ and FORTRAN. Sure, they are extremely useful in the hands of experienced folks, but they need to die. They were good solutions to problems decades ago, but so much has been learned since then and the constraints of sparse computer resources and CPU speed have moved a lot.

    1. Re:Blame it on C++ by Anonymous Coward · · Score: 3, Insightful

      New programming languages wont fix this perticular problem. Even a higher language has some very disturbing side effects since they consists of smaller sub-parts (assembler or whatever). A high language can introduce very annoying bugs that are much harder to track since their origin is hidden from the coder. And besides, even a high level language will eventually be bloatet and full of old not yet removed code.

    2. Re:Blame it on C++ by Anonymous Coward · · Score: 1, Insightful


      Bad programmers fail in any language at a non-trivial project.

      If the hurdle that makes a programmer fail is the syntax + concepts of a language, chances are that if hed code in a "simpler" language hed fail because of the intellectual tasks raised by the project itself. These kid-languages simply lower the entry barrier for novice-programmers but they can never lower the barrier of the complexity of the project itself.
      And just for info: C++ in its modern form is a first-class complexity cutter. For revelation, read Andrei Alexandrescus Modern C++ Design.

    3. Re:Blame it on C++ by RatOmeter · · Score: 1

      Careful there, the other day I inadvertently dissed C++ and OOP in general and must have trod on someones religion in the process.

      But I think you've got a good point about FORTRAN, but I'd make a slightly different point on C++. FORTRAN is passe' not because it's old, but because what made it special (FORmula TRANslation) isn't all that special or unique anymore. C++ and OOP in general can be great, but a programmer really needs to know the difference between OOP and non-OOP and why you would want to use one method/language over the other. Applying OOP methologies where unnecessary can *add* to code complexity and obfuscation. Never use OOP because it's cool, only when it's the better way.

    4. Re:Blame it on C++ by renehollan · · Score: 3, Interesting
      C++ certainly gives one many ways to shoot one's self in the foot. But, with power comes responsibility. Some are up to the task, and others aren't. Attempts to simplify the language just shift the problem elsewhere: Java, lacking a proper pointer type in an attempt to ease memory management burdens, foists automatic garbage collection on one.

      Now, this wouldn't be bad, if the skilled programmer had, at his disposal, the means to tweak the garbage collector implementation to suit a particular application -- presuming that there is one and and only one universally "best" garbage collector is arrogant and short-sighted. The trouble is, even though it may be possible to replace the Java garbage collector, one can't do it with a Java implementation: the language is not closed with regard to it's run-time requirements -- garbage collectors need to manage raw memory via, ta da, pointers! This lack of closure, preventing a language's run-time library from being expressed in the language itself, is most inelegant.

      Of course, the C and C++ affecionados will point to this closure as the very beauty of their preferred language. Let's call such languages "complete". Alas, the linguistic power necessary to make a language complete has now been put into the hands of the neophyte programmer (was that delete or delete[], and when does it matter?).

      It doesn't take much inspiration to see that subsets of a complete language, while not complete themselves, may still be powerful enough to write useful programs. With abstractions, disciplined programers try to fake this: the C++ "smart pointer" exercise is classic. Unfortunately, for all the effort put into smart-pointers and per-class address-of operator definitions, you can still get a real pointer to an object which does not implement such a monadic operator. What you really want is the compiler to say, "Bad programmer: using a real pointer!" either as a warning or as a fatal error (well, maybe not so harshly, but you get the idea).

      --
      You could've hired me.
    5. Re:Blame it on C++ by Anonymous Coward · · Score: 0

      Ahhh.... the crappy argument template number 357!
      Bad &ltuser_desc&gt will fail in any &lttool_desc&gt, therefore we should keep using our &ltcrappy_tool&gt of choice!

    6. Re:Blame it on C++ by Anonymous Coward · · Score: 0


      Exactly.

      Im not saying C++ works for everybody, it sure does for me. Im also in the lucky position where i get to choose in which environment i code in.

    7. Re:Blame it on C++ by Latent+Heat · · Score: 2, Interesting
      Having taken Brinch Hansen's data-structures course at Caltech more years ago than I care to admit and having been indoctrinated by Brinch Hansen in the Pascal religion, I always thought that a properly restrictive language could help a lot with reliability.

      Ada was supposed to be that silver bullet (although Pascal diehards have their issues with Ada), but the darned trouble is that Ada is not showing a large-enough (maybe 5 percent) quantifiable improvement over C++.

      Java is another of these silver bullets, and the claim is that people churn out a lot more stuff, but I have not heard about reliability.

      Maybe it is how you structure a design and the code implementation is more important than the hand holding (or hand slapping) of a particular language.

    8. Re:Blame it on C++ by Anonymous Coward · · Score: 0

      +1 right on

      beautifully expressed

    9. Re:Blame it on C++ by angel'o'sphere · · Score: 1

      Of course you can not blame C++ or any other language.

      But IMHO all actuall existing languages(I know about 100, so I should say most instead of ALL) are not up to date to what one would like to have.

      Imagine OOAD, you have terms like aggregation and composition.

      No language supports that. You need to implement the concept "aggregation" manualy(or hope the CASE system you use can generate it).

      This is rediculous.

      Now if you look on design patterns: if you know any OO language and have understood a design pattern you can apply it to your development by CODING MANUALY all delegations and what ever is needed.

      For that, one would expect to have high level language constructs:

      class Composite : public Component {
      aggregation vector myParts; /* aggregation means a add(Component part) and a remove(Component part) method is generated and delegated to myParts */

      // method declarations
      public:
      delegate all_public_of void x(pass) { foreach myPart.pass(); }

      } ;

      // now my own methods
      Component getFirst() { return myParts[0]; }
      }

      The delegation code above says: all public methods of the class Component should appear in the class Composite.

      All should return void, they have a naming prefix x, so in case of name clashes you can distinguish methods delegated from different classes.

      The body of the delegated methods is just a loop over all elements of MyPart calling the method with the same name and passing all arguments.

      Well, the loop construct is silly, the foreach is also silly, but most scripting languages have it.

      vector is a container class, just like an array array.

      If I declare: Point pts[100]; I like to say: pts.x += 100; pts.y += 100;

      A for loop over the 100 elements is just code bloat. (YES: if I used a class for the point array I could overwrite += ....)

      But imagine: Engine myEngines[4]; myEngines.start();

      start() is a method of Engine not of Engine[], this is so simple but only some rare languages support this.

      Well, this does not prevent you to make crapy software.
      But in a today system 80% of the lines of code are useless noise:

      #include
      manual introduced method delegations
      manual introduced synchronization stuff
      manual introduced database access
      manual introduced users rights management
      manual introduced memory and other resources management

      And so on ....

      This are all topics you need:
      to design, to code, to test, to deploy, to maintane

      And everywhere you are making errors, everywhere you have to communicate with other developers ...

      Enterprice Java softens that burdon a bit, especially the EJB 2.0 specification. Don't know if .NET or old DCOM tackels those problems also.

      IMHO better programming languages are badly needed. Not to make poor programmes better programmers but to make good programmers more productive programmers.

      Regards,
      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    10. Re:Blame it on C++ by GregWebb · · Score: 2

      Thank you! I'm _not_ the only one, then!

      My simple gripe with C derived languages is that their complexity means I have to dedicate more of my brain to the language and less to the program. Simply, there's more to get wrong than with Pascal family languages. Oh, and I'd much rather arrays were bounds checked so that writing out crashed rather than corrupting memory, so much easier for debugging...

      C's powerful - Pascal is pretty safe. Most of the time, I don't need the power so I'll take the safety.

      --

      Greg

      (Inside a nuclear plant)
      Aaaarrrggh! Run! The canary has mutated!

    11. Re:Blame it on C++ by Citizen+of+Earth · · Score: 1

      This lack of closure, preventing a language's run-time library from being expressed in the language itself, is most inelegant.

      A Java-interpreted Java interpreter. Now there's a frightening thought. At least you can wipe the dust off of your Commodore-64 if you need to add some zip to your applications.

    12. Re:Blame it on C++ by renehollan · · Score: 2
      No worse than a C interpreter in C. Of course, at some point you have to either compile to machine code, or to something interpreted by a program in a non- or different-interpreted language.

      While a Java Java interpreter might make little sense, a Java compiler in Java, would be an interesting thing.

      --
      You could've hired me.
    13. Re:Blame it on C++ by RussP · · Score: 1

      Absolutely. Use Ada95 instead.

      --
      I watch Brit Hume on Fox News
    14. Re:Blame it on C++ by angel'o'sphere · · Score: 1

      Hmm... I used templates .... in the samples above.

      But I did not realize that the post process striped the less and greater signs :-)

      Anyway, I think a C++ programemr gets the idea.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  15. He has an excellent point. by miffo.swe · · Score: 1

    I have always seen programming as something magical but thats probably more because of lack of knowledge than because it really is magic. Maybe its time to straighten the myth behind big software projects and get a bit more grip on how it works and why. The intent is noble and given current state of software capabilities and performance in comparison to hardware its about time. Imagine having an os that had evolved like your hardware? ...... Think *SCREEEEAAAAMMMMM* woshing numbers like nothing you have EVER seen.

    --
    HTTP/1.1 400
    1. Re:He has an excellent point. by AVee · · Score: 1

      I have always seen programming as something magical

      And thats the way it should be. My boss still believes this, so could you all, please, keep it quiet?

    2. Re:He has an excellent point. by andersbd · · Score: 0

      The post reminds me of one of my favorite quotes, actually from "the Mythical Man Month", first chapter, Brooks deals with the question of why it is fun to program, what a programmer gains from it

      "... Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures. ..."

      It's so... right on target.

  16. i want to see by mark_lybarger · · Score: 2

    a standard printed book value of time estimates for projects. the auto repair industry has standard estimates for certain repairs, why doesn't the software repair industry. i know they're worlds apart, but it sure would help out a little to be able to pull out a little book and say, well, you need a gui interface consisting of 15 screens to maintain 20MB of data, it's going to be 10,000 hours for developing, testing and documenting. if you want to cut the documentation, we can do that, but you're really slitting your throat there.

    1. Re:i want to see by Anonymous Coward · · Score: 0

      but you're really slitting your throat there

      I didn't know the software world had a 'cut my own throat dibbler'

    2. Re:i want to see by markmoss · · Score: 3, Insightful

      If you've got the requirements well enough defined in terms of previous work that you can estimate accurately, then most likely all you've got to do is cut and paste the old code anyhow...

    3. Re:i want to see by wiredog · · Score: 3, Insightful
      Well, read up on the PSP and TSP, some light reading.

      I've been trained in that stuff. It's wonderful in theory. In practice? All the metrics only work if you are doing the same stuff you've done before. If you are doing something new, then they don't work. Which is why few people actually use them.

      Looks good on a resume, though.

    4. Re:i want to see by software_non_olet · · Score: 1

      The cars have doubled their speed and (guess) tripelled their complexity during the last fifty years. Computers and software do that within 14 months. Most books take longer to be printed than the information in them takes to become 50% worthless.

      If you want to get exact reliable figures, you can have them. Sure! But only for projects we did 5 years ago - no ploblem, mistel, new calbulatol needed. Will be leady tomollow evening and cost 350 dollals!

    5. Re:i want to see by plumby · · Score: 1

      The problem is partly that estimation relies on previous experience of similar work. With a lot of software developments, the work is bespoke, in that the person/team has not produced anything similar before, and are solving problems for the first time.

      I've also worked for places that basically knocked slightly different versions of the same system out for different companies. We were pretty good at estimating, because we'd done the same stuff before. But at the moment, I'm working on a system that is largely different to any project I've ever done before, so I have nothing to base my estimates on.

      People often compare the software industry to builders, and point out that most houses are build (pretty much) on time and on budget. However, there is an interesting program on UK TV called "Grand Designs", where people design and build unique houses. Many of these people use experienced architects/builders but even so, most of them end up being well over budget and frequently late. This is usually because of some unforseen problem due to the uniqueness of the house. I think most software development that goes on is much closer to this type of building than the building of standard housing estates.

  17. Open source by bunyip · · Score: 5, Interesting

    From the article:

    Michael Godfrey, a University of Waterloo scientist, is equally hesitant but still finds the Lehman approach useful. In 2000, Godfrey and a fellow Waterloo researcher, Qiang Tu, released a study showing that several open-source software programs, including the Linux kernel and fetchmail, were growing at geometric rates, breaking the inverse squared barrier constraining most traditionally built programs. Although the discovery validated arguments within the software development community that large system development is best handled in an open-source manner, Godfrey says he is currently looking for ways to refine the quantitative approach to make it more meaningful.

    It would have been interesting had they delved deeper into this finding. Yeah, I know, the true believers in open source all feel superior (we are, aren't we?), but exploring the reasons why it works would be interesting.

    Is it the large-scale peer-review process? Is it that we occasionally rewrite parts (filesystems, VMM, etc)? Something else?

    1. Re:Open source by mapnjd · · Score: 1

      Yes, the peer review works here, but it's the quality of the programmers/designers and the lack of unrealistic deadlines.

      In most commercial settings the number of really-good-programmers is very, very low. (OK at a big OS company one might hope it were different, but see below). A glamourous open-source project will only attract the brightest stars to show off their skills, so the proportion of really good programmers/designers is a lot higher than in the commercial arena.

      In commercial settings, the release date for software is set and fixed by program management and is often vital for the companies revenue and continued existence. Hence a lot of dumb hacks, and quick-but-not-correct fixes end up in the released code. In the open source world, we (more often than not) don't play that game - we release it when it's ready.

      As for peer review: in the open-source world, and for a large project buzzing with all the brightest luminaries, peer-review works great. Approving of someone else's genius wins you points, pointing out that you're more clever than another genius also wins you points. :-)

      In the commercial arena, people are trying to further their careers by sneaky-snidy means. They don't wnat to waste their valuable creative time reading their colleagues' (rivals') code. It's also in your interest to cause the maximum embarrassment to your colleague (ie. don't point out flaws in their work early - only when your boss "needs it fixed now" - then point the finger of blame and (possibly) show them how it should have been done.)

      Not all commercial teams work like this, but you get my point,

      nic

      --
      Bus error in your favour. Collect 200kB
    2. Re:Open source by csbruce · · Score: 2

      Is it that we occasionally rewrite parts (filesystems, VMM, etc)?

      Bruce's Law: Every software module needs to be re-written every year.

      (Or perhaps it has a different name.)

    3. Re:Open source by bluGill · · Score: 2

      Big open source projects attract more than the best. However the bad programers generally make slow progress, so in most cases a better programer gets it done first. (and the bad programer learns by reading the good programers code, and understand it having tried to do the same himself). For the few cases when a bad programer submits something, the good programers reject the patch, and the bad program either acts on the suggestions, or a good programer re-writes it to be good.

      Big buisness can't afford that. If a bad programers turns in some working, but bad code we use it because time it money. Our good programers are better used to devolpe some new feature that can sell, not re-write the bad parts. the only exception is after service costs prove the bad code is costing more money to maintian than a re-write would cost.

    4. Re:Open source by Broccolist · · Score: 1

      Open-source programming doesn't appear to me to have any intrinsic advantage that would justify such a massive improvement. My guess would be that extremely talented and enthusiastic programmers tend to gravitate to open-source projects. Only people who really care about what they're coding will take on a huge project they aren't being paid for.

    5. Re:Open source by HeyLaughingBoy · · Score: 1
      Big buisness can't afford that. If a bad programers turns in some working, but bad code we use it because time it money. Our good programers are better used to devolpe some new feature that can sell, not re-write the bad parts. the only exception is after service costs prove the bad code is costing more money to maintian than a re-write would cost.


      But this *is* the problem. It will cost more to fix the problem after product release than before. There are years of software lifecycle data to show that. That's why we conduct code reviews at work. Ideally, your good programmers should not be fixing the work of bad programmers. But if at least some of their time can be used to point out the flaws, the bad programmers can become better; those that won't should just be axed.
    6. Re:Open source by bluGill · · Score: 2

      I agree, except that it costs time. To get a product to market is always important. Sure it will cost more money down the road, but we have to get something out there now, or customers will buy from someone else. It is much easier to get someone to buy your product over a compittor than to get them to switch from a okay competitor to your product when your is better. So you make it work okay today, sell it, and then fix it and send out upgrades.

  18. Actually... by KingAdrock · · Score: 1

    It is a Beastie Boys reference!

  19. Describes my job perfectly... by David+Kennedy · · Score: 2

    Good article; I think the description of the sociological basis of the "laws" is correct. My experience suggests that the slowest development paths are those that cross other people's areas.
    (And yes, I know about XP's "All code is shared.")

    As for the maintenance, it's my normal experience, but the prohects I've been involved in may be atypical. (*cough*Canadian*cough*telecommunications*cough*gi ant*)
    We spend a *lot* of time reworking old code to (a) fix obscure bugs, many of which are slow leaks shown up by weeks serving live traffic (b) adapt the code to support new releases of underlying hardware product and (c) adding new features to satisfy users.

  20. Sound premises. Sound reasoning. Wrong conclusion. by 3-State+Bit · · Score: 3, Interesting

    Although the performance audit showed that IBM researchers were churning out code at a steady rate, Lehman found the level of debugging activity per individual software module to be decreasing at an equal rate; in other words, programmers were spending less and less time fixing problems in the code. Unless IBM programmers had suddenly figured out a way to write error-free code -- an unlikely assumption -- Lehman made a dire prediction: OS/360 was heading over a cliff. IBM, in stressing growth over source-code maintenance, would soon be in need of a successor operating system.
    Except that the "[dire] need of a successor operating system" isn't so dire at all: the world's richest man didn't get where he got by writing code that didn't need to be replaced by a successor operating system, did he? The whole premise is to produce something that works now, and when it stops working later, you sell a later version. Heck, just a couple of months ago, Billy announced that 92.3% of the calendar year would focus on new code, leaving the rest for the old.
    What's smarter, coding the Microsoft way, or coding a server that's been up since before Windows NT was released, without a patch in 7 years, handling half a megabit of data both upstream and down, every second of every day forever. Where's the revenue?

    ~r~

    Note: the 92.3% figure might only be for the year 2002, with later years being still closer to 100%.

  21. Poor, poor man??? Nope. by software_non_olet · · Score: 1

    You didn't get it that he is simply doing what he wants to do, doing it good and trying to motivate others to do good reliable work also?

    Mastery is when you know (and not only guess), that you can only search.

    Illusion is when you think you got it.

    1. Re:Poor, poor man??? Nope. by Anonymous Coward · · Score: 0
      Mastery is when you know (and not only guess), that you can only search. Illusion is when you think you got it.

      Oh please. By that logic no one ever gets anything. Wrap up any goofball philosophy in "profound" phrases and it appears wise (so long as you don't actually think about it too much, of course.)

    2. Re:Poor, poor man??? Nope. by Anonymous Coward · · Score: 0

      That's what you call logic? You can't even read carefully, let alone apply logic.

  22. No theory in Software Engineering? by RatOmeter · · Score: 2, Insightful

    From the article:
    "In software engineering there is no theory,"

    I don't buy that... at least not completely. I would say something more like, "In software engineering, theory is extremely underutilized."

    I believe there are many instances of engineered software, but not necessarily high-profile stuff. A lot of DoD conscripted code may never the the civilian light of day, but there are procedures and documentation requirements that, flawed or not, enforce certain practices. Can we call that "theory"? Anyhow, defense suppliers can afford the extra development time, 'cause the government is forking over big bucks for the code to right.

    For the mainstream (read desktop) apps, where all the money is, the time to market and feature pressures will continue to suppress even the best "unified theory" of software development.

    1. Re:No theory in Software Engineering? by Daniel+Dvorkin · · Score: 2

      Yeah, tha line bothered me too. But then, the phrase "software engineering" bothers me, not because it's not meaningful, but because the way it's often used implies that engineering is all there is to writing good programs. In the strictest sense, engineering (of any kind) isn't about theory -- but science is, which is one reason why I like the phrase "computer science" a lot more than some people seem to. A true computer scientist should be a good engineer, but also more -- and when you want a system that really works, and will continue to work over the course of years, that's what you need.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
  23. Software entropy? by Anonymous Coward · · Score: 0

    Treating software as a system is an interesting and slightly frightening idea. I think that idea is valid and, once you're willing to give that concept a chance, you have to agree that entropy applies. If our "system" becomes more disordered over time as we add to it, we, as software designers, have to re-evaluate our focus. I see cases in my own experience where this happens. In the middle of a SQL to Oracle conversion right now, a mess of a project is becoming even more of a mess.
    The theory is also a good case for templatizing and making very generic our software. If, over time, we only have to change our data (files), and not the software itself, this should help to control how disordered our software becomes.

    The biggest flaw in the theory discussed comes when we consider real-world software design. Marketing types and customers don't care about software theory and they don't care if our software is becoming more disordered. Just try to tell your boss that you can't add a feature a particular customer wants because you don't want to contribute to the rate of entropy of the system...

  24. C++ ? by wiredog · · Score: 2

    C++ isn't that old. C, yes, but C++ is one of the newer languages.

  25. Software Engineering by MightyMicro · · Score: 2, Informative

    Manny Lehman is credited with coining the expression "Software Engineering". About 1968, I think. See also the website of the company he founded Imperial Software Technology .

  26. That's the point by carm$y$ · · Score: 1

    "Whenever I talk, people start off with blank faces," Lehman admits. "They say, 'But you haven't told us anything we didn't already know.'

    99% of the consultants do this for a living. Get used to it. :)

    --
    -- No sig today
  27. What is Micro$oft thinking! by qurob · · Score: 1


    10,000 people working on Windows XP?

    No wonder they have so many problems! The should have a smaller team of say, 20 or 25 people

    (ugh)

  28. new, fresh by CausticPuppy · · Score: 1

    C++ isn't that old. C, yes, but C++ is one of the newer languages.

    Yes... C++ extended the old, crusty C language and brought it right into the 1980's.

    --
    -CausticPuppy "Of all the people I know, you're certainly one of them." -Somebody I don't know
  29. Function Points by Raedwald · · Score: 1

    mark_lybarger asks:

    [I want to see] a standard printed book value of time estimates of projects [for example,] you need a gui interface consisting of 15 screens to maintain 20MB of data, it's going to be 10,000 hours for developing, testing and documenting

    This already exists. Estimates based on Function Points essentially give you this.

    --
    Ne mæg werig mod wyrde wiðstondan, ne se hreo hyge helpe gefremman.
  30. We are only Human. by gnalre · · Score: 2, Interesting

    I was interested in the fact that some researchers have only recently come to the conclusion that software is written by people.

    It is questionable how useful purely statistical methods are in these situation.

    One thing I would be interested in knowing is how staff turnover effects development. For matainable software to be possible a consistent approach must be maintained on adding new functionality, this usually requires deep understanding of alrge code base, and if your programmers keep changing, the newbies may not follow the rules.

    --
    Choose your allies carefully, it is highly unlikely you will be held accountable for the actions of your enemies
    1. Re:We are only Human. by frank_adrian314159 · · Score: 2
      One thing I would be interested in knowing is how staff turnover effects development.

      Look at Software Project Dynamics: An Integrated Approach by Tarek Abdel-Hamid (ISBN 0-13-822040-9). In it he builds a model of the software development process and shows many remarkable results. Things like a high turnover rate can completely destroy productivity. He also shows that Brooks' law is a bit simplistic (You CAN add people to a late project, but it has to be done very carefully).

      Even though it's a dozen years old, it's still a very good book. It's a shame more people don't know about this. The research, as far as I can tell, still holds up well.

      --
      That is all.
  31. Blame it on the programmers (And Hiring Managers) by Greyfox · · Score: 2
    I've seen hideous code written in C++ and equally hideous code written in Java. And doing system level stuff in Java feels awkward and fiddly. And that's not even getting into the fact that there are still (a lot of) asm programmers out there and those guys can produce tremendous speed improvements by hand optimizing the slow bits of the program in asm. Compare the speed of gogo versus lame, as one example.

    There's a lot of piss poor code out there because there are a lot of piss poor programmers out there -- people who should not be in this industry, people who took a couple of classes in VB and think that qualifies them for the title of "Programmer." And they can still bullshit their way past hiring managers with their shiny buzzwords.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  32. 19,000 Known Bugs in OS/360 by Anonymous Coward · · Score: 3, Interesting

    I worked on a system running OS/360, up to Release 23 or so, when IBM 'retired' it.

    We installed new Releases about once every 6 months. IBM also had 'patches' available for about 19,000 known bugs.

    These patches were not incorporated into the latest release because each of them, if installed, broke some other aspect of the OS.

    We, and every other site, only installed those patches needed to work around problems that the particular site encountered. And you always hoped that today's patch would not break something else that your users needed.

    1. Re:19,000 Known Bugs in OS/360 by cpeterso · · Score: 2


      These patches were not incorporated into the latest release because each of them, if installed, broke some other aspect of the OS. We, and every other site, only installed those patches needed to work around problems that the particular site encountered. And you always hoped that today's patch would not break something else that your users needed.

      hmm, that sounds suspiciously like the Linux 2.4 "stable" kernel..

  33. Computing Environment by fruey · · Score: 2
    Included within the new set of laws are the Law of Continuing Growth ("The functional capability of E-type systems must be continually increased to maintain user satisfaction over the system lifetime")

    - The functional capability of the OS too, since new hardware keeps coming out

    and the Law of Declining Quality ("The quality of E-type systems will appear to be declining unless they are rigorously adapted, as required, to take into account changes in the operational environment").

    Exactly what is happening to windows? And why Linux is so successful -> Open Source like fetchmail et al being more linear in their development, all users get a stab at getting the environment right.

    But users who aren't prepared to do any work to make things better in their environment for their PC are always going to lose. But it's the same as those people who make their desks tidy and optimise them for work, and those that don't. The difference on your virtual desktop is that you can't easily hope someone else will tidy it for you...:)

    --
    Conversion Rate Optimisation French / English consultant
    1. Re:Computing Environment by ansutton · · Score: 1

      > But users who aren't prepared to do any work to make things better in their environment for their PC are always going to lose. operating environment doesn't have anything to do with the computer itself. it's the environment (social, political, technical, etc) in which a system is deployed. what lehman is talking about is the adaptaion of software to specific corporate or home environments.

  34. it's all in the design by bilbobuggins · · Score: 2, Interesting

    it just goes to show that 99% of the work in creating software is in the design.
    you have to try to map out not only what you will need but what you might need in the future.
    yes, it's a near impossible task but it's the only way to avoid automatically commiting yourself to an endless cycle of patches and hacks.
    the good part is, if you can plan the project well enough then the actual coding becomes nearly trivial.
    the problem arises when the boss says 'i don't care about scalability or flexibility, i just want code now' and i have to try to explaining that i'm trying to save his ass 8 months down the line when clients (and not to mention, the boss himself) bombard us with feature requests, etc.

    1. Re:it's all in the design by elflord · · Score: 4, Insightful
      it just goes to show that 99% of the work in creating software is in the design. you have to try to map out not only what you will need but what you might need in the future.

      Not only is this not true, it's impossible to do this in practice. If you do this, you'll find that you still blow a lot of time on design, development takes longer, because your design is unnecessarily abstract, and your design proves inadequate for something that you need to implement further down the road. Requirements change, and this has consequences for the design. The best one can hope for is that the basic architecture is robust enough that it doesn't require a complete upheaval.

      What is necessary is a method for changing design gracefully. "Refactoring" is the best source I've seen that addresses this. Basically, you change methodically, and you test.

    2. Re:it's all in the design by the_2nd_coming · · Score: 2

      to me, that makes no sence. 99% of the work in making a good building or a good machine is in the design. design can take a year or more on alrge buldings, but the actual putting up of the structure takes 6 monts or so.

      design is everything. that is where you try to predict all the problems that might occur.

      the off the cuff stuff is just lazyness. if you can work out all the issues, you can then step it into production by mapping out how you solve the solution the rexamine any issues that might come up. once all that is done, you should have a discriptive enough approach that you could hand it to anyone with the ability to write the code you need and have them impliment it. if you ahve a well planed and descriptive design, the coders do not nessisaraly need to have anything to do with planing.

      --



      I am the Alpha and the Omega-3
    3. Re:it's all in the design by ivrcti · · Score: 1

      I disagree. I have worked on dozens of projects, where we architected not only for the immediate deadline, but for the ongoing phases as well. As we design, we always ask ourselves, when the user gets used to this, what else will he want? If you leave room in your data designs/communication paths, etc, then future needs aren't nearly as painful.

    4. Re:it's all in the design by oogoody · · Score: 1

      You'll blow a lot of time in refactoring
      and testing. Don't confuse appropriate
      design with BDUF. Appropriate design is
      not only not impossible, it is done all the
      time.

    5. Re:it's all in the design by markmoss · · Score: 3, Insightful

      The basic issue is changing requirements. A contractor building high-rise apartments does not have to worry about the customer coming around when it's half built to look at it and say, "You know, I think I want a hospital instead." Programmers quite often have to deal with customers that are just about that confused -- they can't begin figuring out what they really want until they see what they asked for on the screen.

      More than that, software vendors routinely write a program, release it, then add features so they can sell it again. It's as if the builder has finished the apartment building, and now they want a factory tacked onto the north side and a Wendy's onto the east. Next year, add a hospital wing to the west. Repeat once a year for 10 years and you get one hell of a mess, but how else would M$ keep a continuing revenue stream from the same OS and Office programs?

    6. Re:it's all in the design by the_2nd_coming · · Score: 1

      that is a good point. the only thing I would say to that is that when you design the program, leave room to add on. I am sure that there would be a performence issue, but places the NEED high performence do not tac code on as much as the rip out and replace the entire system.

      I think a fundamental change will need to occur in the customer and producer. both will need to learn that fast is not always best in most situations.

      and again, if you do a good design, you should be able to plan(atleast with a 50% accuracy) where the project might go in the future and make sure you have left room for that addition. sort of like leaving realestate around a hospital so you have room to add when you need it.

      --



      I am the Alpha and the Omega-3
    7. Re:it's all in the design by rlowe69 · · Score: 3, Insightful

      What is necessary is a method for changing design gracefully. "Refactoring" is the best source I've seen that addresses this. Basically, you change methodically, and you test.

      I was talking about this with a friend the other day. Wouldn't it be nice if a senior software 'architect' could maintain a unit-level view AND current code at the same time? That way his busy programmers could refactor all they wanted, as long as they didn't overstep their unit bounds but at the same time improve the product. The architect could look at the project at different levels of abstraction (units, subunits) to make sure the programmers aren't getting off track.

      Probably the hardest thing about using the iterative or refactoring methodology is knowing what your architecture looks like at any given time. You design a great, flexible architecture for the first iteration, but after several rewrites you may not know where you are in terms of the big picture. Surely a tool that spits out UML-like diagrams of the current code would be very useful to spot architecture flaws introduced during the refactoring process. Effective use of design patterns may also help. Is it impossible?

      I've seen some work done by Rational in terms of code generation with .NET, but wouldn't it be nice if you could get up-to-date architecture diagram syncronization with code directly from a source versioning tool (ie. cvs, SourceSafe)?

      --
      ----- rL
    8. Re:it's all in the design by Anonymous Coward · · Score: 0

      I hate to say it, but it's the customers that need to change. Software producers need to be able to simultaneously make it clear that (a) software is a big project and requires careful design, just like "real" things, and that (b) it's just as difficult to change software design halfway through a project as it is to change a bridge design hlafway through the project. If you want something well-engineered, you need to spec it out correctly before you start building. If you don't, you're going to end up demolishing a lot of bridges, and it's going to be expensive - or unsafe. Customers - and that means everyone these days - need to figure out that software isn't some kind of heavy voodoo, and software producers need to stop feeding that mystique when they think it's useful.

    9. Re:it's all in the design by Paradise+Pete · · Score: 2
      to me, that makes no sence.

      I think you've invented the literary onomatopoeia.

    10. Re:it's all in the design by SlydeRule · · Score: 1
      Surely a tool that spits out UML-like diagrams of the current code would be very useful to spot architecture flaws introduced during the refactoring process.
      I use Together Control Center. An excellent tool, which among other things provides keeps the UML and the source code in constant synchronization. I find it extremely useful for that very purpose.

      However, I would point to something Martin Fowler said:

      ... some people find software diagrams helpful and some people don't. The danger is that those who do think that those who don't should do and vice-versa. Instead we should just accept that some people will use diagrams and some won't.
      We're kidding ourselves if we think that UML is automatically more intuitive for everyone. Or even for most people.
    11. Re:it's all in the design by rlowe69 · · Score: 2

      We're kidding ourselves if we think that UML is automatically more intuitive for everyone. Or even for most people.

      Like everything, reading UML takes practise. UML diagrams can sometimes be very dense, and it takes experience to extract all of the information and process it. It isn't "automatically intuitive", but at least you get a very large chunk of architecture on one page where you can see it all at once.

      Compare this job to scanning a few thousand lines of code and it will probably change the minds of people that don't think diagrams are helpful. Maybe their jobs don't require a big-picture view and they can live in their unit or subunit and not care - the architecture diagrams are mainly for the architect or project lead, to keep the project on track.

      Also, the project leads need to sell the idea of seeing the forest through the trees to their developers. If the developers have an idea of the big picture, they can make more educated choices for the project without much intervention from the lead. If the lead is constantly jumping in and telling the developer he's going in the wrong direction, you can just imagine how the developer feels. On the other hand, if the lead explains his decisions and gives answers to "why" questions, the developer will stay on track (and the lead will spend less time correcting the developer). The lead having a firm grip on the architecture at any given time is important for this reason.

      As for Martin Fowler's comments; for normal projects, I don't buy it and it's a moot point anyway. If someone wants to shun UML and spend time shifting through code to see the design, let them. They are just shooting themselves in the foot, time-wise. If the reason they are not using the UML is because it is outdated (which is likely) then that's a totally different reason - I don't like using outdated information either. If the code and the UML are sync'd, there's no difference except the amount of time it *might* take someone to find the design and digest it (not knowing it previously). UML was made to speed up this process. If there are two reliable sources of information, the person is free to make their own choice.

      Fowler is also advocating not using UML for the sake of XP, which is valid. XP is a developer-centric methodology. A developer sees a bad part of code and goes in and corrects it. Unfortunately, the "design" changes so much it's hard to get a snapshot. That, coupled with the fact that there is typically one lead on a project that needs to know what's going on from a Software Engineering perspective. If he has 6 programmers going nuts on his code, he'd like to know where they are making bad turns today instead of in 2 months during a code review. I can buy not using UML during XP development, but that's only because (as I see it) refactoring focuses on such a small, managable area of the code that you don't need to look at a diagram to figure it out. However, even in XP an architecture view would be handy, if only for the lead.

      Whew, a little off topic there. Thanks for bearing with me. Just wanted to start up more discussion, if you are game. :)

      --
      ----- rL
    12. Re:it's all in the design by rlowe69 · · Score: 2
      Allow me to answer my own question about UML and XP:

      That, coupled with the fact that there is typically one lead on a project that needs to know what's going on from a Software Engineering perspective. If he has 6 programmers going nuts on his code, he'd like to know where they are making bad turns today instead of in 2 months during a code review.

      In the article linked above, Martin Fowler says:

      At a conference dinner, Dave and I talked with a vocal opponent of XP. As we discussed what we did, the similarities in our approach were quite marked. We all liked adaptive, iterative development. Testing was important. So we were puzzled at the vehemence of his opposition. Then came his statement, along the lines of "the last thing I want is my programmers refactoring and monkeying around with the design". Now all was clear. The conceptual gulf was further explicated by Dave saying to me afterwards "if he doesn't trust his programmers why does he hire them?". In XP the most important thing the experienced developer can do is pass on as many skills as he can to the more junior developers. Instead of an architect who makes all the important decisions, you have a coach that teaches developers to make important decisions. As Ward Cunningham pointed out, by that he amplifies his skills, and adds more to a project than any lone hero can."

      Clearly the emphasis is on training your programmers and then trusting them, instead of "police-ing" them by always looking at an up-to-date UML diagram. This I completely agree with. Not only are you encouraging consistency thoughout the team (also enabled by pair programming) but you are increasing the team's worth as well, reducing the all-the-eggs-in-one-basket effect.

      I still think that having the large architecture view could help you educate your programmers and spot bad designs. Pairing them with more experienced developers could remedy this a bit, but it may not always be possible. Your junior programmers aren't going to start out knowing all of your wisdom. You have to be able to spot their poor design decisions early and tell them before they propogate more poor design thoughout the codebase, right?
      --
      ----- rL
    13. Re:it's all in the design by elflord · · Score: 2
      design is everything. that is where you try to predict all the problems that might occur.

      Predicting problems that might occur is one thing, predicting changing requirements is another. You can reasonablt anticipate problems based on prior experience. But it's difficult to guess at changing requirements, especially when the requirements come from an external source.

    14. Re:it's all in the design by elflord · · Score: 2
      I disagree. I have worked on dozens of projects, where we architected not only for the immediate deadline, but for the ongoing phases as well.

      I'm not saying you can't or shouldn't do this. I'm saying that doing this alone will not solve all of your problems, and even if you do up-front design, you still won't succesfully anticipate all design needs.

      Basically, the more central a component, the more important to get it right. A component that is tightly coupled with your entire system (for example, the base class of a broad and deep heirarchy) is almost impossible to change gracefully, so you'd better design it.

      On the other hand, implementing a button as a two level heirarchy with an abstract class is pointless, because you'll probably find the initial design breaks when you add a new button, because the abstraction serves no immediate purpose, and because at present, the button class is not tightly coupled with your other code.

    15. Re:it's all in the design by elflord · · Score: 2
      You'll blow a lot of time in refactoring and testing. Don't confuse appropriate design with BDUF. Appropriate design is not only not impossible, it is done all the time.

      I agree, but the poster I responded to suggested 99% of the time should be design. IMO, that exceeds "appropriate" and it's what I'd consider a futile attempt to pump more resources into something that offers diminishing returns.

    16. Re:it's all in the design by HeyLaughingBoy · · Score: 1
      The basic issue is changing requirements. A contractor building high-rise apartments does not have to worry about the customer coming around when it's half built to look at it and say, "You know, I think I want a hospital instead." Programmers quite often have to deal with customers that are just about that confused -- they can't begin figuring out what they really want until they see what they asked for on the screen.


      Is it really so hard to just tell your customer "we can do that, but it will cost you?" I have found that it's easy to say this, but most people don't cause they're (a) afraid of the customer's reaction, or (b) too proud, so they think "I can do all that and still meet the deadline." Then they usually start falling behind on the project! My experience has been that when I tell someone what the new feature will cost in terms of time or reliability and leave the decision up to them, the response is usually an intelligent one. Customers by and large are not stupid, but they do need to be educated (by us, the developers) about the ramifications of the decisions they make.

      Before this, I was a hardware engineer. Trust me, people change requirements for physical as well as logical designs. The proper way to handle changing requirements is pretty much the same, regardless of project types.
  35. Re:Sound premises. Sound reasoning. Wrong conclusi by markmoss · · Score: 2

    OS/360 was actually heading over a cliff. The various pieces of software did not work when they were put together. The OS was delivered years late and massively over budget. Many IBM 360's (costing six figures back when $1 was worth something) were delivered and then spent years simply running emulators for the old machines they replaced, because the native software wasn't ready.

    Yes, there were lots of things they could have done -- like define a subset of the original committee-designed bloated specification, get that working, then start adding features. But the manager (Fred Brooks) didn't know that, yet, and didn't even know the project was in trouble until it was impossible to deliver anything at all on deadline. Afterwards, he wrote a book, The Mythical Man-Month, which has become a standard text for large-project management. But he learned how by doing it wrong, more massively than anyone ever had before...

  36. Re:C++ ? by bluebomber · · Score: 2
    Depends on what you'd call old... C++ has been around (in various incarnations) since 1980 or 1983, depending on what you want to look at. I'm looking at Stroustrup now:


    Earlier versions of the language, collectively known as "C with Classes" have been in use since 1980. ... The first use of C++ outside a research organization started in July 1983.

    The name C++ was coined by Rick Mascitti in the summer of 1983.

    Sometime during 1987, it became clear that formal standardization of C++ was inevitable and that we needed to start preparing the ground for a standardization effort. ... An initial draft standard for public review was produced in April 1995. A formally approved international C++ standard is expected in 1998.


    So it is accurate to say that C++ has only been standardized recently. But unless you're comparing C++ to Fortran/Simula/Algol, it is just wrong to call it "new".
  37. I'll disagree on the FORTRAN point by shaldannon · · Score: 1

    FORTRAN is definitely an old language but old does not necessarily mean bad. It still has place in many scientific and engineering circles because it has been thoroughly debugged and tested. Would your trust your local nuclear power plant software if it was Perl? Python? Java? C++? I wouldn't. There is a reason that most code for calculating nuclear plant fuel assembly concentration and positon is written in FORTRAN--and it's not because of a love of old, perceivedly sluggish, languages.

    Besides which, just because we have more hardware to throw at a problem does not mean that that is the optimal approach. That very point of view is the reason that computer hardware gets ever faster but the operating systems and software don't. It's a symptom of the Microsoft school of coding: throw more hardware at a problem and that will fix it. 640k^h^h^h^h256M of memory is all you'll ever need.

    I don't think either point is valid. If you want to argue based on security, memory issues, etc., fine. Age of a language and the fact that it runs efficiently are really bad reasons to attack it, however.

    --


    What is your Slash Rating?
  38. The answer is modularization by joshv · · Score: 2

    Creating common APIs allows seperate development projects to proceed at their own pace. You don't need OO for this, but it helps.

    I think one of the reasons that Linux has been so successful is because Linus decided long ago to take a modular approach to designing his monolithic kernel.

    -josh

    1. Re:The answer is modularization by Tablizer · · Score: 1

      (* Creating common APIs allows seperate development projects to proceed at their own pace. *)

      The problem is that the API's keep changing and people find flaws, overlaps, etc. in them as they get into the nitty gritty. Interfaces are not stable, at least in the domain of custom biz apps. I can't comment on kernal writing since I've never done it.

      (* You don't need OO for this, but it helps.*)

      I would enjoy a practical demonstration. OO is mostly catchy-sounding cliches that barf when confronted with the cliche-ignoring real world.

      What exactly is your definition of "modularization" anyhow? One drawback of traditional modularization is that different parts of the system need different views of the same given thing. The best module for one view may not be the best for another. An interior decorator's view of a house has a diffreent modularation than a carpenter's than an electricians, etc.

      The best systems allow "virtual modularization", or "virtual patterns" IMO. IOW, if you can't think outside the box, then at least make the boxes virtual. Relational and Boolean expressions come closest to virtual modularization IMO. Although, it is a tough task regardless.

      OOP tends to take one viewpoint and make it King at the espense of others. It is optimized for IS-A relations, and not HAS-A. IOW, it is optimized for hierarchical patterns, and not sets. Domains that need more HAS-A tend to tangle up in OO.

  39. I dunno... by shaldannon · · Score: 1

    I've used plenty of late-version software that is arguably worse than the previous version...I believe that's called de-evolution :)

    --


    What is your Slash Rating?
  40. You're missing two premises by alispguru · · Score: 5, Interesting
    IBM missing premise:
    Some of our applications must have 99.999% uptime. Therefore, the whole system must be designed with this in mind.
    Microsoft missing premise:
    If our applications crash, it's no big deal. Feature lists generate revenue, so that's what we do.
    Just making explicit what you said implicitly...
    --

    To a Lisp hacker, XML is S-expressions in drag.
    1. Re:You're missing two premises by josh+crawley · · Score: 2

      Apple missing premise:

      Buy from us! Our stuff looks pretty.

  41. No Interest in 'Doing It Right' by Anonymous Coward · · Score: 3, Insightful

    Back in the early 1980s I headed up a small team that developed 'industrial strength' applications.
    Our firm licenced this software to major manufacturing firms with a Money Back Guarantee. As in, "If you are not satisfied, for any reason, we will either fix the problem or give you back your money. Your choice." We were never asked for a refund.

    It was semi-open source. You could have the source any time you wanted, but asking for the source voided your warranty, since problems in your data might have been caused by your own temporary code changes.

    Funny thing. I've had that on my resume for many years, but no prospective employer has ever asked how I did it.

    No one has hired me specifically to help them produce similar quality code. Much of the time their reaction to my resume is, 'but you don't know c++' (or their other favorite). I know enough about c++ to know that I want to stay away from that second generation language for all but the most specialized situations.

    I have also been told, on numerous occasions, that I'm not qualified to lead a particular project because I lack experience mannaging the large team that will be needed. I've never gained that experience because I've never needed a large team to accomplish anything.

    As an MBA, as well as being an application designer & a coder, I know that large teams do have a place -- mostly where you have a blank cheque and are earning a percentage of the total billing. (:-)

  42. Software craftsmanship by crouchingpenguin · · Score: 4, Interesting

    A quick warning... I consider myself a relative newborn in the world of software development. I present these opinions under the consideration that my opinions can change at any moment. =]

    A lot of the dire predictions of software atrophy and such are a result of applying the wrong methodology to a project. Yes there are uses for Software engineering, but I think this approach is overkill for even large scale projects. Check out Software Craftsmanship: The New Imperative for a different perspective. A perspective I think is in need of serious consideration. The gist is returning to the days of master craftsman and apprenticeships. This focuses a bit more on the learning aspect than actual development methodologies, but you can always go to The Pragmatic Programmer to fill in that gap.

    "As time passes, the system becomes less and less well-ordered. Sooner or later the fixing ceases to gain any ground. Each forward step is matched by a backward one. Although in principle usable forever, the system has worn out as a base for progress."

    This is where "refactoring" (see Fowler's Refactoring) really shines. I find it difficult to believe that refining the software base is not progress. An initial revision where the code functions by its contract (if your into designing by contract), then you refactor the body of the function/method for speed / elegance. Then you can run your unit tests on the function / method to test that the refactoring session did not break any of the design contracts (whew).

    I think they may be trying to restate the broken window theory (see Pragmatic Programmer), were a broken window (or bug) in a building (or system) leads to delapidation elsewhere in the building (or system).

    And then there are the agile methods, including XP. I think these answer a lot of the limitations and issues with Software Engineering practices. Interacting with clients (having a client there during each iteration) gives you the benefit of almost real-time feedback so that you can update your user stories on the fly, etc.

    Without rambling on any farther, my point is not too spend too much time looking for a specific unified theory. Read up about all the ideas, methods, and theories. Take the best parts from each, then crank the knob all the way up (if I may borrow that from XP =] ). Don't let anyone tell you there is a science to software development that is easy to reproduce, and that you are just a link in the overall chain. You practice and perform a craft. Enjoy it!

  43. Actually the key point is Lehman's "Second Law" by visualight · · Score: 2, Funny

    Take, for example, Lehman's "Second Law" of software evolution, a software reworking of the Second Law of Thermodynamics.

    "The entropy of a system increases with time unless specific work is executed to maintain or reduce it."

    As evidenced by the back of my Subaru.

    --
    Samsung took back my unlocked bootloader because Google wants me to rent movies. They're both evil.
  44. Re:Persecution of Christians on /. by fscking_coward_2001 · · Score: 1

    I can't speak for everyone, nor would I try to, but I find joining the phrases "quote scripture" and "tell the truth about homosexuals, minorities, etc" a bit queer.

    You post anonymously. Take your cue from your heroes of scripture. Did they hide in corners, whispering about how the Romans were being mean to them? No, they spoke openly, risking death. I hardly think you'd risk anything so severe for posting your Christian thoughts on a "news for nerds" web site.

  45. There is nothing to replace it by Srin+Tuar · · Score: 2


    Its simply true; there is no other language that even comes close to filling all the roles of C++. Most of the languages people advocate for taking a certain niche from C++ are implemented in C++.


    Its a very difficult language to learn, and hard to use properly. It has lots of syntax, and many idiosyncrasies. Yet it yields you control of the machine in the manner of C, adding in alot of the niceties of high level languages for those who know how to use them.


    You might argue that its less error prone for certian programmers to use a more specialized and high level language for certain tasks. You might make a good case that C++ should not be someones first learned language (I say learn assembly, then C, then C++, then some high level lang).


    What you cannot say is that C++ should be ditched. It is filling a vast role in real-world programming, where nothing else can compete.

    1. Re:There is nothing to replace it by 3am · · Score: 2

      I think it's a terrific point that C++ is an innapropriate development tool for many projects.

      Of course you don't want to (or couldn't) build an application that needs low-level control over a computer. Advanced databases, compilers, messaging software (a la TIBCO), or operating systems would be appropriate uses for C++ (at least IMHO). If a project is too large to use C or ASM, C++ still offers the lower level control and the advantage of OOP.

      But if you're programming a business application with extremely complex business logic, java lets you spend more time worrying about the logic than memory management. If you're writing an accounting app for the 3 ladies in HR, then VB/Access will let you whip it up in a day. (Anyone can write a somewhat neat GUI app in VB in 30 minutes. I've not found that to be the case with C++ on any platform). If you parsing 40 GB of web logs for a particular IP, then PERL might be what you're looking for....

      And all this is moot if you are a guru in a single language. If you know C++ inside and out, then why bother learning java to write the business app (compatibility, maintainence aside)?

      I suppose all I'm saying is that, all else being equal, there are circumstances when c++ is far too much to do a given task, and other language choices are faster to develop and easier to debug. And if you happen to be an expert in one language, it is difficult to make a totally objective assessment of what language choice is best.

      --

      A: None. The Universe spins the bulb, and the Zen master merely stays out of the way.
  46. Re:Blame it on the programmers (And Hiring Manager by Anonymous Coward · · Score: 0

    >> And that's not even getting into the fact that there are still (a lot of) asm programmers out there

    What, they're a dying breed?

  47. Extreme Programming by the_verb · · Score: 1

    Well, that is one of the core concepts of extreme programming. Small teams are a fundamental part of the methodology.

    --the verb

  48. Refactoring and Rewriting by macom · · Score: 2, Interesting
    As time passes, the system becomes less and less well-ordered. Sooner or later the fixing ceases to gain any ground. Each forward step is matched by a backward one. Although in principle usable forever, the system has worn out as a base for progress.

    We had a case were a system no longer proved ameniable to feature addition or continual improvement to match the changing operational and customer requirements. In the end the benefits of refactoring the codebase to match the changing production requirements were more costly than to rewrite the system using more modern libraries, methodologies and frameworks. It got rewritten and the old system phased out.

    It wasnt a case of "fixing" inherently broken software, it worked perfectly well, just the operational flow it supported changed due to new customers and more efficient management procedures.

    Incidentally we have found with each major rewrite of that system ( there has been two ) there has been an immediate growth spurt in customers. I am not sure if it is because it looks like something new, or that the software better matches the operational requirements or because of increasing feature addition. Either way the last two rewrites have been paid for almost immediately by the addition customers the new software has brought in.

    mocom--

    1. Re:Refactoring and Rewriting by crouchingpenguin · · Score: 2, Interesting

      Your example shows that there are sometimes benefits to a rewrite, rather than just refactoring or updating the existing codebase.

      Your requirements (features and design) outgrow the current application and warrant the need for a new application that encompasses the old application's functionality as well as it's name. So really you have two seperate applications that share functionality and name.

      But isn't that in itself refactoring? Rewriting code, keeping the functionality of the original while improving the internals?

    2. Re:Refactoring and Rewriting by macom · · Score: 1
      But isn't that in itself refactoring? Rewriting code, keeping the functionality of the original while improving the internals?

      Not in our case, we threw out the database schema, the codebase, the Framework and the UI.

      Our business objects had changed drastically enough that they were no longer pertinent. About all we kept of the Business Objects was the names of the most important ones. The previous system was built with the premise that it was for one particular application. Our sales and management team quickly saw growth in other areas and pitched to new customers accordingly. It meant the software had to catch up to where the market was taking it.

      We rewrote it to become a flexible and transient application capable of meaning different things to different customers. We also did it without having to resort to different code repositorys for different customers either. Which is a bonus maintainability wise. The previous one wasintractable enough that it got forked for approximately 6 months. We havent the manpower to be maintaining two seperate codebases.

      The UI was similar enough to the last application that existing customers didnt require retraining on it. There were a couple of "Hey its changed emails" but other than the fact it changed there were no complaints. The complimentary emails outweighed the "its changed" emails anyway so we were happy.

      mocom--

    3. Re:Refactoring and Rewriting by michael_cain · · Score: 3, Insightful
      Not in our case, we threw out the database schema,...
      It has long been my belief that writing correct code on a large scale is more about data than about the code itself. New features and such generally involve adding new data to the existing structure, or adding new meaning to existing items within the overall structure. As this happens, the rules that the data have to satisfy to be "consistent" become more and more complex. Formerly simple code like
      if (cond1) {}
      gets turned into
      if (cond1 or cond2 or cond3 and !cond4) {}
      At some point the right choice is the one you made-- start over with the basic questions of what are the data and how should they be organized?
  49. That line is old, tired, and wrong by Ars-Fartsica · · Score: 2

    The recurring theme that its the programmers fault, not the language, is entirely tired and completely wrong. You have to maximize the productivity of the average programmer. Sure you can snidely conclude that they are stupid and just not man enough for C++, but that isn't going to get your product out the door any faster or reduce the error rate.

    1. Re:That line is old, tired, and wrong by Anonymous Coward · · Score: 0



      I was currently assigned to a rescue one of those RAD ( Rapidly Accelerating Desaster ) Delphi Projects. The problem is, that this project would have failed long before if people had used c++. But not because of c++, but because the design is so horrible and fucked beyond repair that only stupid coders are able to. Delphi let this project walk into the wrong direction way too long, but hey it "compiles fast and these forms and variants are soooo easy to do with delphi, and there are way more coders to find". Good coders can do in both languages, although i think c++ beats delphi in terms of easy-of-use and clarity hands down ( but thats my opinion ), to allow a bad coder to get far enough to completely wreck it and REALLY cost money, it takes delphi.

    2. Re:That line is old, tired, and wrong by rusty+spoon · · Score: 1

      Yeah, you mean like given the fact that building methods are so mature we could use lamer builders to create our cities, bridges etc. Uh, no thanks and I wouldn't wanna fly in one of *your* aircraft.

      You're wrong. If you want a good job done then hire good people. Don't blame the tools (a bad workman?) blame those that chose the tools and implemented the designs. Lamers blame their tools because the tools can't defend themselves.

      You don't need to be super smart to use C++ (or your favourite tool). You just need to know what you are doing, know the tools and their limitations.

      There is no silver bullet - remember that from TMMM??

  50. Best thing about this article... by crath · · Score: 1

    ...is that it points to an old Salon piece about Larry Wall and the creation of Perl.

  51. DeAr colleAgues! by software_non_olet · · Score: 1

    Thanks for helping me to improve my English.

    A scale ? It's only worth anything, if you have something to put into. What this is one brings with him is often allready fixed - on which side of the scale you put is your decision.

    Same holds true for friend, foe or colleague.

  52. IBM Jalapeno - JVM in Java by brad.hill · · Score: 2
    You are correct that there are certain operations that are outside (deliberately!) of the Java program model. This is a good thing.


    access to machine registers and memory

    architecture specific machine instructions

    transfer of execution to an arbitrary address

    coerce object refs to addresses and back

    invoke OS services


    This doesn't mean that you can't write GC in Java! IBM implemented a JVM and GC system entirely in Java, called Jalapeno. To do this, they created a Java class called "Magic" that had empty methods for these services which any Java compiler could build. Then, the internal Jalapeno VM compiler would recognize calls to the Magic class, verify that what they are compiling is a valid part of the JVM and inline appropriate machine code where these calls occur.


    Now, all GC systems can be written in reference to this Magic class and porting the VM is simply a matter of generating appropriate machine code for these half-dozen methods. And you get all the security of Java's automatic memory management model!


    Check the ACM's OOPSLA Conference Proceedings, 1999, Implementing Jalapeno in Java or www.research.ibm.com/jalapeno for the paper.

    1. Re:IBM Jalapeno - JVM in Java by renehollan · · Score: 2
      Then, the internal Jalapeno VM compiler would recognize calls to the Magic class, verify that what they are compiling is a valid part of the JVM and inline appropriate machine code where these calls occur.

      At first glance, this looks like cheating: the Java GC requires VM support. Is the VM written in Java? If not, the language is not complete, as I've defined complete.

      --
      You could've hired me.
    2. Re:IBM Jalapeno - JVM in Java by renehollan · · Score: 2
      Ah! Now I see, they made Java complete by redefining the language (the Magic class, as you describe it, is now "special"), and building an appropriate compiler.

      This still strikes me as cheating: they changed the language to make it complete. Furthermore, the "complete" language is available only when compiling the JVM, and not when a general "I know what I'm doing" flag is set (though that's probably trivial to change). Finally, effecting language completeness via reserved words instead of symbols which are syntactically "more sugary" strikes me as clumsy, though I've not looked at their GC implementations using this technique.

      There are two problems here: language completeness, and restriction of complete languages to particular subsets. IBM appears to have clumsy solutions to both issues w.r.t. Java, with the latter easier to clean up. I doubt that there would be an elegant solution to the original problem of language completeness vis a vis Java that they face, so I can't be too critical of their "Magic" class hack.

      --
      You could've hired me.
    3. Re:IBM Jalapeno - JVM in Java by brad.hill · · Score: 2
      Well, Java isn't SUPPOSED to be complete by your definition. The point to not having an "I know what I'm doing" flag for unsafe operation is that a) it's not really necessary, except for implementing a tiny tiny bit of the way-down-low-guts of the runtime and b) it makes security a lot simpler.

      Hostile code should not have the option of saying that "it's OK, I know what I'm doing." You could use multi-layer zones like MSFT did with .NET, but then you're undermining the appeal of the system - that everything is safe and you don't really have to trust anybody to run their code. It also prevents trojans from riding along in "trustworthy" code or just stupid things like unintentional bad pointer arithmetic or array bounds checking in non-hostile code. (I know, I know - JNI, but "Pure" Java programs are safe)

    4. Re:IBM Jalapeno - JVM in Java by renehollan · · Score: 2
      Well, Java isn't SUPPOSED to be complete by your definition.

      Right. And that makes it inelegant as a general purpose programming language. As an "easy to use" language geared toward virtual machine interpretation in various "safe" (in the sandbox sense) environments, it's fine, but it's lack of completeness means that VM implementations (or the compilers that compile them) have to be written in a different language.

      The point to not having an "I know what I'm doing" flag for unsafe operation is that a) it's not really necessary, except for implementing a tiny tiny bit of the way-down-low-guts of the runtime and b) it makes security a lot simpler.

      Perhaps, but security and programmers' safety nets should not be provided by making a language less complete, IMHO, but rather by controlling the use of unsafe language features, and building an appropriate run-time sandbox (which recent Java incarnations do surprisingly well, if in a complex way: signed code is a nice concept). These are separate issues: a VM can trap ill-behaved programs, so overly restricting programmers from writing them shouldn't be necessary (if you're willing to put up with the equivalent of a run-time segfault, for example)

      So, it is possible to permit poorly-written code (by the programmer who should have been content with the safety nets that automatic GC provides, for example, but wasn't), and still retain security.

      What I want is to be able to write the low-level, tricky, blow-up-in-your-face stuff in the same language as the higher-level stuff, and be able to tell the compiler, "Don't let me do this -- it's easy to make a mistake, and the power is not needed."

      --
      You could've hired me.
    5. Re:IBM Jalapeno - JVM in Java by Anonymous Coward · · Score: 0


      I absoluetly agree.

      And btw. C++ with STL, guaranteed Object-Desctruction for Auto-Objects makes we wonder why anyone would ever need GC. Its there and its fast. Assembly-code for stl-vector-index-access is identical to handcoded c-array access. C++ will not be replaced in importance for the foreseeable future.

    6. Re:IBM Jalapeno - JVM in Java by renehollan · · Score: 2
      You miss the point of the discussion, my Cowardly Anonymous friend. This isn't a "my language is better than your language" slugfest.

      The problem with languages like C++, which can hide memory management behind things like smart pointers, is that there is no means to force the compiler to prohibit the use of things other than smart pointers in a particular piece of code. Thus, there's no way to tell where particularly knarly memory leaks and wild pointers are likely to lurk in a large body of source code. Java solves this problem by prohibiting access to raw memory, but this comes at the price of not being able to directly manage memory in Java (compiler and language extention hacks aside). Sometimes you want memory managed for you and sometimes you don't.

      My lament is that while this protection is a nice attribute of Java, it's implementation, via what I call a non-complete language, well, sucks. The same protection should be available in complete languages (i.e. those that can self-bootstrap) via compiler pragmas. This would offer the benefits of Java to the C++ programmer, without the awkwardness (and Java, with an up-to-date run-time environment, has some nice benefits, not the least of which is signed code).

      --
      You could've hired me.
  53. Humans as an ecological force by SlowMovingTarget · · Score: 1

    I'll take a shot...

    Think Panama Canal, Hoover Dam, the Great Pyramids, walking on the Moon, the tower of Babel... Throughout history, humans in large groups who come together, find a way to work toward a common goal, and actually work without a what's-in-it-for-me attitude accomplish wonders.

    OK, yes, many of the accomplishments I mentioned had paid workers, but in most cases there was a cause (racing to the Moon out of patriotism, avoiding a death sentence from Pharaoh... etc.)

    In all of these efforts, the sense of being part of something greater was there.

    Just as termites can rally around a queen and build giant mounds complete with air conditioning (really, Google-search it), humans in large numbers have altered the Earth's geography and climate. It's only natural that humans in large numbers working toward a common goal (be it a sense of belonging, or just to beat MS) could successfully put together something as complex and large-scale as an OS.

    ... Not that I'd categorize Linux as a wonder of the world. :)

    ESR took a better shot at explaining it in his book, The Cathedral and the Bazaar.

    /

    .

    /

    .

    The views expressed in this post are my own and aren't connected to the views and opinions of my employers.

  54. More engineering = Less art? by jellybear · · Score: 1

    Why does making software engineering more of an engineering science necessarily make it less of an art? Can't it be both? Shouldn't it?

  55. You are a pathetic, irritating, pedantic moron. by Anonymous Coward · · Score: 0

    Plus the fact that the author obviously would not intend such a similarity as it would be destructive to his/her/it's very viewpoint.

    The author intended exactly this similarity to be funny. Someone mocked your mistake to bring this to your attention (personally, I'd have written, "Gee, you got the punchline, go find the clue'). You then repeated your mistake by not recognizing this and then explaining your obvious error still holding the misconception that you had made a clever discovery of found humor.

    I'm spelling this out because you apparently don't have the faintest comprehension of wit.

    Please shut up, and improve the signal:noise ratio on slashdot.

    1. Re:You are a pathetic, irritating, pedantic moron. by Alien54 · · Score: 0, Offtopic
      The author intended exactly this similarity to be funny. Someone mocked your mistake to bring this to your attention (personally, I'd have written, "Gee, you got the punchline, go find the clue'). You then repeated your mistake by not recognizing this and then explaining your obvious error still holding the misconception that you had made a clever discovery of found humor. I'm spelling this out because you apparently don't have the faintest comprehension of wit. Please shut up, and improve the signal:noise ratio on slashdot.

      this is helpful. Thank you. [smile]

      I don't try to engage in mind reading as I am an abysmal failure at it.

      That said people telling people to shut up obviously reinforces the group think.

      That's the problem with only conversations, sometimes you do not know how many levels of irony and hidden meaning you are supposed to assume.

      Of course the criticsm of "you couldn't read his mind, boy are you dumb" sometimes leaves something to be desired. [Shrug]

      personally, I don't mind opportunites for education.

      --
      "It is a greater offense to steal men's labor, than their clothes"
    2. Re:You are a pathetic, irritating, pedantic moron. by Nightpaw · · Score: 1

      No, really. Stop now.

  56. I remember being lectured by Manny Lehman by Anonymous Coward · · Score: 0

    ... and he sucked at Software Engineering :)

    In fact he was one of our worst lecturers. He lectured a little of software engineering and a lot on general management. This is after Imperial had sunk squillions into Manny's failed software company, so go figure :)

    The article is actually quite good so maybe he has improved with age, but I still don't have too much respect for him.

  57. Problem is in the structure of corporations. by Anonymous Coward · · Score: 1, Interesting
    The problem is that most corporations have a pyramidal power structure, with bosses handing down work (delegating) to minions.


    In the software industry, it is not uncommon for the developers to be far more intelligent and knowledgable than their managers. This creates more than resentment, there is a fundamental conflict. The manager is setting the deadlines, and yet the developer is the one who knows that all deadlines are bullshit.


    This is the reason most software sucks.

    1. Re:Problem is in the structure of corporations. by Anonymous Coward · · Score: 0

      What a bunch of crap. You elitist view only perpetuates the state you are in. Your manager may not know that much about exactly what it is that you do. That does not necessarily make them a bad manager.

      I suspect that you yourself would make a very poor manager. Try it and find out the hard way that it can be a thankless job. Especially when you'll have to deal with cretins like yourself.

    2. Re:Problem is in the structure of corporations. by Tablizer · · Score: 1

      (* You elitist view only perpetuates the state you are in. Your manager may not know that much about exactly what it is that you do. That does not necessarily make them a bad manager. *)

      The solution is often open communication, but many managers are to protective of their ego to be open. They don't want to hear the details or the truth. I don't expect a manager to be on top of all the technical details, that is not really their job. However, if they *pretend* like they are, then I have to write them off.

      Or, they are either too busy or act like they are too busy.

  58. humans? by fantomas · · Score: 1

    humans? oh no, I thought it was all written by an Intelligent Designer.....

  59. Re:Persecution of Christians on /. by Anonymous Coward · · Score: 0

    I hardly think you'd risk anything so severe for posting your Christian thoughts on a "news for nerds" web site.

    You're new here, aren't you? Christians are often savagely ridiculed on Slashdot and are often exposed to some of the most atrocious blasphemy possible. I have had my e-mail address given to a pornography address list, others that I know have had threatening phone calls made to their home and in one case a threat made against a whole family. There is a very real risk and there is a very real reality, and that is that it is not safe to be a man of faith in a society of decadence.

  60. Spoken like Microsoft by Anonymous Coward · · Score: 0

    Spoken like a seller of software. And this is why commercial software is junk.

    But the people who use software want it to keep on working. And 95% of all programers don't work for the software vendors, they work for software users. And we'd like to be able to take pride in our work, and not create junk.

    Thus is the 'traditional' software vendor business model doomed. They sell junk, we don't want junk, so we'll build our own and exchange it. Vendor of junk goes out of business, good riddence.

  61. Growing geometrically? by catfood · · Score: 4, Interesting

    From the article:

    Michael Godfrey, a University of Waterloo scientist, is equally hesitant but still finds the Lehman approach useful. In 2000, Godfrey and a fellow Waterloo researcher, Qiang Tu, released a study showing that several open-source software programs, including the Linux kernel and fetchmail, were growing at geometric rates, breaking the inverse squared barrier constraining most traditionally built programs.

    Is fetchmail complex enough that it needs to be growing geometrically? I mean yeah, fetchmail does a lot, and I do know what "geometric" means. Still, I doubt the world of email is changing fast enough that you'd want to choose that as your example of out-of-control software maintenance.

    [Insert obligatory ESR goading.]

  62. oxymoron? by sahala · · Score: 1
    ...less of an art and more of an engineering science

    Somehow the last two words form a concept that at least from observation, doesn't really exist.

    Then again I'm only 2 years out in the "commercial world"...what do I know?

  63. Mr. Godfey and Mr. Tu's report by Gallowglass · · Score: 2

    The study by Mr. Godfrey and Mr. Tu can be found at http://plg.uwaterloo.ca/~migod/papers/iwpse01.pdf . (4 pages in a PDF file).

  64. Re:Persecution of Christians on /. by Illserve · · Score: 1

    And yet you hide behind anonymity. His point was not that there is no danger. His point was that if you want to make a difference, take a stand.

    Surely the martyrs who risked death had quite a bit more to fear than porn spam and phone calls.

  65. What would you suggest as a replacement? by kingbill · · Score: 1

    I program in Java and I think it's a great language for most things. I also know C++ and I think it's usually very ugly in comparison, but there are a lot of things that C and C++ are just better for. Drivers and Operating systems for example. Java can do them, but you can tell Java wasn't designed to fiddle with the machine directly. It feels clunky. So my question is, what would you suggest for the machine level stuff? I think that if you need to do something easy and cross-platform, you should use java, because it's easy to make stuff pretty, but when you need C++, it comes in awfully handy.

  66. At the risk of sounding like a troll by shaldannon · · Score: 1

    Since you seem to have so many ideas on what a language should do (as long as it isn't English), perhaps you could design the ultimate language?

    --


    What is your Slash Rating?
  67. Right on! by epepke · · Score: 2

    You're absolutely right about this. I'm another semi-old-timer. In the early 1980's, I was on the team (six people, all with developer background) to write a bisynchronous communications package (HASP station emulator). We had a standing offer--anybody who could find a bug would get a free dinner at any restaurant. We only had to pay off once.

    Nobody seems to care about doing this anymore, or maybe they never did in the first place, and we were all just naive.

  68. Godfrey speaks by Anonymous Coward · · Score: 1, Informative
    I spoke to the author for about an hour on the phone. Some of the quotes are not quite correct, but aren't too far off. Here are the major corrections:
    1. The Beagle tool is the work of my (recently graduated) M.Math student, Qiang Tu, done under my supervision. We reused the PBS landscape viewer as part of it (which is the work of my colleague, Prof Ric Holt; hence the confusion). More info about Beagle can be found in this paper.
    2. The study of Linux's growth and evolution is best documented in this paper, not the much shorter paper given in the salon.com article and elsewhere in these postings.
    3. The systems my group has looked at in some detail include the Linux kernel, GCC, and VIM. fetchmail was a quick one and the results were not terribly interesting.
    4. I am not an open source evangelist; I am a researcher :-) I did not say that "large system development is best handled in an open-source manner". I said something more along the lines that open source development seems to work very well for certain classes of systems, especially large, service-based, infrastructure-ish systems like operating systems and compilers. I might have said that I thought open source development might be the best way to engineer these kinds of systems. That would be a personal opinion, tho.
    Michael Godfrey PhD, Assistant Professor
    Nortel Networks Jr Chair, Telecommunications Software Engineering
    Univ of Waterloo, Dept of Computer Science
    email: migod@uwaterloo.ca
    URL: http://www.uwaterloo.ca/~migod
  69. Congratulations! by Morris+Schneiderman · · Score: 1

    Congratulations (belatedly) on your team's accomplishment. HASP was no small product. I once (early 1970s) had a copy of a foot-thick HASP technical document.

  70. No it was Prof Fritz Bauer by migod · · Score: 1

    See this link for the generally accepted historical view.

  71. Height of evolution. by Jason+Pollock · · Score: 2, Funny

    Where I work, it has been a commonly held belief that all software evolves until such time as it can send and receive email. If it doesn't do this, it isn't complete. :)

    Jason Pollock
  72. Re:"Adding manpower to a late software project mak by rusty+spoon · · Score: 1

    This is my favourite quote - it *needs* to be said more than it should. I figure if I beat enough people with it and eventually someone will say it to me (when I turn into a manager perhaps).

  73. Re:Blame it on the programmers (And Hiring Manager by rusty+spoon · · Score: 1

    "There's a lot of piss poor code out there because there are a lot of piss poor programmers out there -- people who should not be in this industry, people who took a couple of classes in VB and think that qualifies them for the title of "Programmer." "

    Isn't there. I was hiring for a C++/Win32 coder a couple of months ago and I has some *real* bad candidates. IN the end my opening question for C++ was "Is your entire C++ experience solely with MFC". If the answer is yes then interview ends...

  74. javac, kopi by harmonica · · Score: 2

    javac, the standard JDK compiler, is actually a Java program. Also, kopi.

  75. Mittermeyer's Law Explains It All by Mittermeyer · · Score: 1

    Here is Mittermeyer's Law-

    F x (H-Q)
    ___________________ = man-hours
    (P1+P2+P3, etc.)/nP

    where F is number of Features,
    H is Hobbling (range from 1 to 100),
    Q is Quality Assurance (range from 0 to 100),
    P1 is skill level of programmer on particular problem (skill level being from a range of .01 <script kiddie> to 1 <average competent programmer> to 10 <certified productive genius>),
    and nP is number of Programmers.

    On (H-Q), use even if a negative number (excessive quality assurance can be as hobbling as normal bureaucracy), and treat 0 as 1.

    This formula takes into account the complexity of the work the package is performing, the skill of the programmer(s) involved, the fog of bad user/organizational ineptitude, and the amount of QA work being done.

    Software should not be described in terms of lines of code or database sizes, but rather by 'feature'. A feature could be thought of most easily as the list of salable points Microsoft and others use to sell their products. A feature can also be an internal function not recognizable by the user, but which aids development, error tracking, security or maintenance.

    To use this formula in the context of the article, simply add a feature change to the feature number. Static applications will be a slight drain, but constantly changing applications will require man-hours, genius programmers and/or intensive QA work and a minimum of hobbling to reduce man-hours. Even with a fantasy level of positive factors, the complexity level will require features to be taken out, or a process to be started from scratch.

    This formula also covers why Open Source has worked so well. OS brings together programmers to work on tasks they are well suited for on modules rather then one monster product, thus avoiding insane complexity levels. The peer review aspect quickly weeds out inept behavior, thus keeping the programmer skill level relatively high, whereas a corporation may not be able to recognize incompetence quickly.

    Obviously plugging numbers into this formula is a highly subjective business, but then again so is Lehman's approach. Try this on for size- I would be very interested in hearing about real-world results.

    --
    ________________________________________ History Must Not Fall Into The Wrong Hands ___________________________________
  76. software doesn't evolute. by Anonymous Coward · · Score: 0

    nothing evolutes.
    evolution is a man made concept/thought.
    the only thing that exists is the development of the human mind.
    nothing evolutes into nothing.

  77. Doomed by Anonymous Coward · · Score: 0

    Who was it who said, "Those who are ignorant of history are doomed to repeat it."

  78. The complexity price by Tablizer · · Score: 1

    (* Just try to tell your boss that you can't add a feature a particular customer wants because you don't want to contribute to the rate of entropy of the system... *)

    That is one of the biggest problems: there is almost no factoring in of "complexity costs" in the decision process. Although it might take the same amount of time to add feature A and feature B, one may significantly complicate the system in the long wrong while the other may not.

    As long as the complexity costs are never factored into decisions, it *will* grow messy over time.

    Messy software is a management issue more than a technical one. If you (as an organization) spend complexity like a crack addict, you get what is coming to ya.

  79. Re:Persecution of Christians on /. by dswan69 · · Score: 1

    I don't know, to listen to some religious nuts you'd think porn was the greatest threat there is, worse than being stretched on the rack or fed to the lions.

  80. Conway's Law by Paul+Johnson · · Score: 2
    Conway's Law states that the organisation of a software project will be congruent with the organisation of the people who built it. Commercial software is generally built by putting everyone together in a single location and treating all the developers as roughly equivalent and able to work on any part of the system. The result is a monolithic heap of code.

    Open source software OTOH is built by widely separated people with narrow bandwidth links between each other and only a shared vision of the Right Thing to guide them. The result, as predicted by Conway's law, tends to be highly modular architectures focussed around a few core protocols or APIs that capture the vision.

    Modular systems are inherently more flexible and reusable than monolithic systems because they exhibit low coupling between the modules. In contrast the monolithic software is more likely to have high coupling between modules, even though they are supposedly independent.

    (There is also a related concept of "cohesion", which is the extent to which the features of each module hang together as conceptual wholes. I suspect that OSS will show higher cohesion than closed source software)

    It would be interesting to get some statistics to test this theory. Does anyone know of any good software for measuring coupling in C code? I'd like to run some commercial and OSS software through it and see what it says.

    Paul.

    --
    You are lost in a twisty maze of little standards, all different.
    1. Re:Conway's Law by HeyLaughingBoy · · Score: 1
      Commercial software is generally built by putting everyone together in a single location and treating all the developers as roughly equivalent and able to work on any part of the system. The result is a monolithic heap of code.
      Open source software OTOH is built by widely separated people with narrow bandwidth links between each other and only a shared vision of the Right Thing to guide them. The result, as predicted by Conway's law, tends to be highly modular architectures focussed around a few core protocols or APIs that capture the vision.


      Man, if I had any moderator points left, I'd mod you way the hell up! As a graduate software engineering student, I would be interested in seeing what came of the commercial/OSS coupling/cohesion comparisons. Even if you're wrong it's still shows good insight.
  81. "Software Engineering" as part of Computer Science by exa · · Score: 1

    For several years, this subject has been accepted as part of Computer Science.

    However, this field is not to be taken too seriously for its purpose is to overburden the programmer rather than making software better. We must understand that while "Programming Languages", "Compilers", "Verification", "Functional Programming", etc. *is* Computer Science, "Software Engineering" hardly is a science of any sort.

    "Software Engineering" is in my understanding an icon of bigotry and inability to accomplish a good design, contrary to its popular advertisement as a means to achieve engineering goals. "Apply our methodology, and you can get 1000 monkeys to write your next OS!!"

    If you have good scientists and programmers who know how to design software and their toolbox, you will be set. Don't waste your time with this bulls***.

    --
    --exa--
  82. Developers smarter than managers by SimCash · · Score: 1

    I am trying to coordinate a small team generating version 3.6 of their product. (I came in as part of 3.5). I shift all requests for new features to my 4.0 list, bump 4.0 stuff to 4.1, ask the developers for their best deadline estimates on their 3.6 components, and add my SWAG to shift their own estimates further out. Then you want to blame me when the deadlines are all bullshit. You are right, I must be stupid for believing them.

  83. More Software Engineering "laws" by Anonymous Coward · · Score: 0
    1. From the Mythical Man-Month, paraphrasing:

    Given:

    X = amount of time 1 programmer of X skill to complete the project.

    Y = the required time for the project to be finished, provided that Y does not go below the minimal possible time for the project.

    P = the number of programmers needed on the team to start the project, then:

    P = (X/Y)^2


    2. As the number of transitors per area quadruples, which is roughly equal to the speed of the entire computer system, which happens about every 3 to 4 years, the amount of processing power that a currently maintained software package will be required will at least double.

    1. Re:More Software Engineering "laws" by Mittermeyer · · Score: 1

      On that second law, there should also be a law about why that is. The three corollaries I can think of are

      1. Bad or unforeseen design decisions come back to haunt you and increasingly make growth/change of the package more and more inefficient.

      2. Economics of programmer coding dictate that one cuts development/reoptimization.tuning costs by letting the hardware crutch through the consequences of corollary #1.

      3. Chunks of the code were compiled in a different compile environment and inefficiencies creep in with executing code.

      --
      ________________________________________ History Must Not Fall Into The Wrong Hands ___________________________________
  84. Re:Persecution of Christians on /. by fscking_coward_2001 · · Score: 1

    You're new hers, aren't you?
    No

    ... often exposed to some of the most atrocious blasphemy possible
    Jesus fucking Christ, that's awful!

    I have had my e-mail address given to a pornography address list ...
    Sorry!

    Now, about that "truth" you can tell about minorities and homosexuals. Tell me, please.