Slashdot Mirror


Facts and Fallacies of Software Engineering

Sarusa writes "The title of the book, Facts and Fallacies of Software Engineering, is nice and controversial, and so is the content. Robert Glass is a long-time software engineer and researcher into what software practices work, which don't, and why. You'll find his name all over the literature along with names like Yourdon and Brooks, and he's got a long list of professional credits. In other words, he's an experienced, cranky, opinionated old coot who pulls no punches and writes a very readable and useful book. And he's on your side, having deliberately passed up a more lucrative career in management for a technical track." Read on for the rest of Sarusa's review. Facts and Fallacies of Software Engineering author Robert L. Glass pages 190 publisher Addison-Wesley rating 8 out of 10 reviewer Sarusa ISBN 0321117425 summary 40 years of software engineering research in a nutshell.

The Layout

Facts and Fallacies is not a technically demanding book; it's a very easy and compelling read. There are 55 Facts (and 5+5 fallacies) grouped into logical sections such as Management, Life Cycle, and Quality.

First, each Fact is stated succinctly. (For instance, Fact 1: The most important factor in software work is not the tools or techniques used by the programmers, but rather the quality of the programmers themselves.) Then the point is fleshed out more fully -- in this case, that even with all the periodic hype for some hot new methodology that promises orders of magnitude greater productivity, the quality of your programmers matters far more than anything else (and even the best new methods only offer 5-35% increases).

Next, the level of controversy about this Fact is discussed. For Fact 1, it's that even though everyone pays lip service to the idea of people being more important than processes, we all still act like it's not true. Maybe this new hot methodology can turn all your lousy programmers into great ones! Perhaps it's because people are a harder problem to address than tools, techniques, and process. And, of course, hot new methodologies sell a lot of books.

Finally comes a list of sources and references, which can lead you to more in-depth great reading like Peopleware and Software Runaways. This all works out to about one to two pages per item.

The Facts and Fallacies

The Facts and Fallacies fall into several groups. Some are not well known (or just met with stunned disbelief) such as Fact 31: Error removal is the most time-consuming phase of the life cycle. Some that are pretty well accepted, but are mostly ignored, like Fact 1 above. Some that are accepted, but nobody can agree on what to do about (if anything), like Fact 9 (paraphrased) #150: Project estimates are done at the beginning of the project when you have insufficient understanding of the requirements and scope, which makes it a very bad time to do an estimate for the entire project.

Some Facts Glass acknowledges many people will flat out disagree with (and for a few people, very loudly), like Fact 30: COBOL is a very bad language, but all the others (for business data processing) are so much worse. These are the Facts where he really has an axe to grind, and make for amusing reading. In this case what he's really saying is that there is a use for domain-specific languages intended to do one specific thing and do it well, rather than languages like C and Java which attempt to be "good enough" for any use under the sun. But everyone hates COBOL, including me, so it's controversial.

What's Good?

Again, this is a good (and fast) Read. Even if you don't agree with everything, Glass is a skilled writer with strong opinions and a sense of humor. And you might end up agreeing more than you expected. I was pretty skeptical when I started reading. After all, I'm a long time software engineer with strong opinions too, and how often do you get opinionated geeks to agree on even what soda or text editor to use? But most of the Facts resonated with my experience, and of course for most of them Glass has substantial research reference for. The best Facts are those that you knew but might never have expressed explicitly, like Fact 41: Maintenance typically consumes 40 to 80 percent (average, 60 percent) of software costs. Therefore, it is probably the most important life cycle phase of software.

Or consider Fact 18: There are two 'rules of three' in reuse: (a) it is three times as difficult to build reusable components as single use components, and (b) a reusable component should be tried out in three different applications before it will be sufficiently general to accept into a reuse library. I knew this generally, and you probably did too, but I didn't know the specific reference for "Biggerstaff's Rules of Three," which give you a ballpark figure.

The book was written in 2002, when eXtreme Programming was hot, and it's very interesting that the predictions Glass made in this book about the strengths and weaknesses of XP were, in retrospect, pretty much on target, and this sort of predictive success helps confirm more viscerally that he knows his subject.

What's Bad?

There are a few Facts in here that Glass included just because he feels strongly about them (or even about specific people) and he doesn't really back them up very strongly except with "well golly, this is so obvious." Like Fallacy 5: Programming can and should be egoless. Note that this is a Fallacy, so he opposes it. I happen to agree with him, but his arguments are mostly personal ox-goring even if they're based on his extensive experience. Still, it's an interesting read.

A few of the Fallacies he feels are so obvious that he doesn't even really bother providing sources or references for them, and this somewhat diminishes the overall feel of rigor.

Really, the worst thing about this book is that it doesn't come with a poster of just a bullet-pointed list of facts and fallacies that you can nail to your office wall (or your boss's).

A Few More Facts

Just to whet your appetite:

Fact 21: For every 25% increase in problem complexity, there is a 100% increase in solution complexity.

Fact 37: Rigorous inspections [code reviews] can remove up to 90% of errors before the first test case is run. [But are so mentally and emotionally exhausting that we rarely do them.]

Fallacy 10: You teach people how to program by showing them how to write programs. Why don't we teach them to read programs first? Good question (and he has a few possible answers).

In Conclusion

I wouldn't say this Facts and Fallacies of Software Engineering is quite as powerful as The Mythical Man Month, Peopleware or Death March on their own, but if you program (or manage programmers) and want to be more than just a code pig, this will give you the condensed version of 40 years of research in a very readable package. Even if you don't agree with everything he says, it's well worth considering it.

You can purchase Facts and Fallacies of Software Engineering from bn.com. Slashdot welcomes readers' book reviews. To see your own review here, carefully read the book review guidelines, then visit the submission page.

424 comments

  1. As long as he is not management, he's fine by me.. by freedom_india · · Score: 2, Insightful
    Since he has not gone the way of other money-seeking, glory-hunting management "people", he is a "true" Veteran.

    Dear Veteran: I Salute thee for resisting the pressures of becoming another me-too manager and instead staying in trenches to fight with poor soldiers.

    --
    "Doing what i can, with what i have." ~ Burt Gummer
  2. What bugs me.. by bot · · Score: 1, Interesting

    is random claims like 'For every 25% increase in problem complexity, there is a 100% increase in solution complexity.'

    Where do they get these figures?

    BTW First post!!

    1. Re:What bugs me.. by stratjakt · · Score: 1

      75% of them come straight out of the authors ass. ...even the best new methods only offer 5-35% increases

      --
      I don't need no instructions to know how to rock!!!!
    2. Re:What bugs me.. by racer19 · · Score: 5, Insightful

      It's like the 80/20 rule...it's a ROM (Rough Order of Magnitude).

      No, it's not an exact figure, but it sure got his point across as to
      an approximation of the relationship, didn't it?

      --
      Could someone please point out to me where in the Constitution, exactly, is the "Right To Not Be Offended"?
    3. Re:What bugs me.. by Short+Circuit · · Score: 1

      The funny thing is that, in a competitive corporate environment, many managers will jump at a 5% like a man on a mission.

      35%? Stay out of the way...

    4. Re:What bugs me.. by j.+andrew+rogers · · Score: 5, Insightful
      The 25% increase in problem complexity creating a 100% increase in solution complexity is probably reflective of what is effectively a combinatorial explosion in implementation required to make all the various parts of the model play nicely together under all circumstances.

      In fact, I've generally held that the complexity of implementation is generally an exponential function of the general complexity of the problem. Allowing additional degrees of freedom in a design is typically very expensive. You aren't just adding that additional degree of freedom to the design, you have to make the rest of the design aware of that new dimension and put it into implementation.

    5. Re:What bugs me.. by Anonymous Coward · · Score: 3, Informative

      Woodfield, Scott N. 1979 "An Experiment on Unit Increase in Problem Complexity." IEEE Transactions on Software Engineering, (March)

    6. Re:What bugs me.. by over_exposed · · Score: 1

      Actually, 57.3% of all statistics are made up on the spot.

      -naner

      50% of people are dumber than average.

      --
      "The object of war is not to die for your country, but to make the other bastard die for his." - Patton
    7. Re:What bugs me.. by Abcd1234 · · Score: 1

      Not to mention the extra time in the test/debug cycle that this additional complexity incurs... after all, another degree of freedom (presumably) means a whole new degree of inputs to test.

    8. Re:What bugs me.. by drooling-dog · · Score: 2, Insightful
      Where do they get these figures?

      They're meaningless. The complexity of the solution is the complexity of the problem.

    9. Re:What bugs me.. by dash2 · · Score: 4, Funny


      At university I and a friend invented the IRS.

      We smoked pretty heavily in those days (cigarettes) and felt a need to justify it.... 87% of Nobel prize winners are smokers. Furthermore, children who smoke are more likely to get GCSE grades A to C; non-smoking prisoners reoffend more often. In fact smoking cures AIDS. And cancer.

      All these came from the sound research of the IRS (Institute for Random Statistics). We got pretty far down the list with some people.

    10. Re:What bugs me.. by richieb · · Score: 0, Redundant
      Where do they get these figures?

      Everyone knows that 76.34% of all statistics are made up.

      --
      ...richie - It is a good day to code.
    11. Re:What bugs me.. by Anonymous Coward · · Score: 0

      Note that 20% of patterns don't fit the 80/20 rule.

    12. Re:What bugs me.. by otisg · · Score: 1

      Experience.

      --
      Simpy
    13. Re:What bugs me.. by i_r_sensitive · · Score: 4, Interesting
      I had a Prof in U who used to make similar statements. On one occasion a student took umbrage with this position and demanded data and proof. The prof indicated he would be happy to do so, as soon as the student was able to give him two problems, one 25% more complex than the other. After 15 minutes of demolishing every example offered by the student, the prof went on to explain that until the student was able to evaluate complexity in a meaningful and coherent fashion, any such proof would be a waste of time. The student was citing examples, which as the prof demonstrated, were consistent with scaling not complexity. A 25% increase in scale, while easy to understand and quantify, is not (in most cases) a significant increase in complexity, and certainly not a 25% increase.

      More often I think folk don't understand what a 25% increase in complexity really is. Once you have a valid framework to make this evaluation it is easier to see how this relationship works, well, after you evolve some way of evaluating solution complexity as well...

      --
      "Talk minus action equals nothing" - Joey Shithead, D.O.A.
      "Talk minus action equals /." -
    14. Re:What bugs me.. by DarkMan · · Score: 2, Interesting

      Sort of, but not really.

      The way you want to define the compexity of the solution makes it the same as the compexity of the problem. That's a perfectly valid defintion, but that's not the one the author uses (clearly).

      What I think the author means is that the difficulty to understand the code that is the solution increases 100% for every 25% increase in the difficutly to understand the details of the problem.

      That's clumsy language, but I think it gets the gisty of the point over.

      By example, if you have a hunk of code that does something subject to 4 independant constraints, applying a 5th indepentant constraint will increase the volume and turgidity of the code by around 100%.

      Not sure I agree with the precise numbers, but the principle is roughly there.

    15. Re:What bugs me.. by RWerp · · Score: 1

      56,34% of all statistics is taken out of thin air.

      --
      "Long run is a misleading guide to current affairs. In the long run we are all dead." (John Maynard Keynes)
    16. Re:What bugs me.. by Larry+Lightbulb · · Score: 3, Insightful

      So prof makes a claim, student asks for proof, prof says student is too dumb to understand the proof? Shouldn't the prof have then gone on to show examples of a 25% increase in complexity, and how it explains his original statment?

    17. Re:What bugs me.. by Euler · · Score: 1

      Bingo.

      And I would only consider complexity of a solution to be that which cannot be abstracted or factored out to underlying functions and glue code.

    18. Re:What bugs me.. by lesmiralha · · Score: 1

      Actually he cites a 1979 article from IEEE Transactions on Software Engineering to backup his claim.

    19. Re:What bugs me.. by EvilTwinSkippy · · Score: 1
      Well, no.

      Most of the great solutions in history solved complex problems with simple solutions. Why are cups round? Is it because round shapes are easy for a potter to make? Is it because round shapes are easy for the human hand to hold? No one knows. They simply made round cups, and solved 2 problems at once.

      --
      "Learning is not compulsory... neither is survival."
      --Dr.W.Edwards Deming
    20. Re:What bugs me.. by EvilTwinSkippy · · Score: 1
      Well no.

      It is very possible to have a solution that is far more complex than the problem it was trying to solve. Ask an EE to work the control equations for an inverted pendulum some time. Now, take said control equations and try to implement it in real life.

      What sounds like simple physics (just create a force opposite gravity) turns out to be a nasty control problem. And once you work out the theory, there are a whole lot of problems you run into implementing the theory. The solution to this problem is to this day the subject of Masters and Doctorate thesis. You have to take into account the position of the mass, the speed at which it is traveling, the lag between your control signal and the actual change in current in the motor, harmonic motion, and the fact that your pendulum, despite your best efforts, moves in 3 dimensions and not 2.

      --
      "Learning is not compulsory... neither is survival."
      --Dr.W.Edwards Deming
    21. Re:What bugs me.. by EvilTwinSkippy · · Score: 1
      There is something to be said for making sure that the 5th constraint is really an independent constraint, and not:

      controllable by tweaking the parameters of a few of the other systems

      eliminated by governing said factor through artificial means.

      negligable or correctable by an error compensating device

      --
      "Learning is not compulsory... neither is survival."
      --Dr.W.Edwards Deming
    22. Re:What bugs me.. by Bush+Pig · · Score: 1

      Three problems. A square cup is also more likely to tip your beer all over your shirt.

      --
      What a long, strange trip it's been.
    23. Re:What bugs me.. by Anonymous Coward · · Score: 0

      A rough round bowl shape is clearly much easier to make with a lump of clay and your hands than a square, so we get round-bottomed bowls which evolved through technology into cylinders.

    24. Re:What bugs me.. by awol · · Score: 1

      There is an aspect of this that I call (and I am not sure if I heard the phrase somewhere else first or not) the zero, one, many problem. That is all solutions to "problems" can be implemented in one of three ways; a solution that does not implement a particular thing (the zero case). The solution that implements the "single" approach to the problem (the one case) and finally the solution that implements the generic solution that will allow N results (the many case) approach.

      The critical thing about this is that id not the zero or one case, the 2, 3, ... case is almost always presented by the user as a requirement but to do it properly we should do the many case at first instance since if they can identify the 3 case they will eventually find a need for the 4 case and the reengineering that is required to go from 3 to 4 is better spent designing the many solution in the first place.

      --
      "The first thing to do when you find yourself in a hole is stop digging."
    25. Re:What bugs me.. by Grab · · Score: 1

      It's actually not too hard, if you've got a properly run system. Get your spec and count requirements. Get your timesheet logs and count hours spent on implementing requirements. Divide B by A.

      Of course, I couldn't guarantee you'd get the 25%/100% correspondance, because it depends on the situation. If you've got a lot of stuff to do and no one bit is related to another bit, this is an issue of scaling, not of complexity.

      To be smarter, work out how long it takes you to implement something for which there are 40 requirements stating how it should work, and to implement something for which there are 50 requirements. Making sure, of course, that the requirements all influence each other somehow so that it is a true increase in complexity.

      Getting the figures is a pretty trivial computational step *IF* you have the information to start with. Everyone hates longwinded timesheets though, so it's difficult getting that info in the first place. And then there's usually some emergency that's more important than analysing data, so you never get to find out how long you *should* estimate for work, because you're too busy firefighting the last bit of work that someone underestimated on! :-/

      Grab.

    26. Re:What bugs me.. by tiger99 · · Score: 1

      it is an order of magnitude estimate based on many years of experience, and is very approximately true in every branch of engineering, although it might be expressed in different ways.

    27. Re:What bugs me.. by Anonymous Coward · · Score: 1, Interesting

      It sounds like the Prof proved the student's point! The Prof, after being called out on his claim, proceeded to demonstrate that a 25% complexity increase CAN NOT be measured, even approximately. By extension, no complexity increase can be measured. Therefore, any claims that a specific increase in problem complexity leads to some related increase in solution complexity is completely meaningless.

    28. Re:What bugs me.. by johnnyb · · Score: 1

      An added requirement is not necessarily an increase in complexity. I think by "increase in complexity" they mean is something like a relation that was previously 1:1 becomes 1:Many. That becomes a much more tricky task to deal with.

    29. Re:What bugs me.. by drooling-dog · · Score: 1
      Ahh... But isn't this a "deceptively simple" problem that turns out to be much more complex on detailed analysis? By the same token, when a solution is unnecessarily complex, it's usually because of a failure to appreciate the underlying simplicity of the problem.

      But these are mostly word games. If I say anything more I may have to slap myself...

  3. Ahhhh... by Anonymous Coward · · Score: 2, Funny

    "Fact 21: For every 25% increase in problem complexity, there is a 100% increase in solution complexity." How is that a fact? Some data would be nice, and i'll wager 60 Quatloos he doesn't have any.

    1. Re:Ahhhh... by MikeMacK · · Score: 1

      20 Quatloos on the newcomer...

    2. Re:Ahhhh... by Anonymous Coward · · Score: 0
      How is that a fact? Some data would be nice

      The article is a review of a book. A "book" is a printed work consisting of many pages of text, in this case 224 pages. You obviously haven't read this book, so your comment about what isn't in it is pretty stupid.

    3. Re:Ahhhh... by scovetta · · Score: 1

      Star Trek TOS Season 1 on DVD comes out today!

      --
      Wer mit Ungeheuern kämpft, mag zusehn, dass er nicht dabei zum Ungeheuer wird. --Nietzsche
    4. Re:Ahhhh... by Jussi+K.+Kojootti · · Score: 1
      According to this pdf, the source of those numbers is "An experiment on unit increase in program complexity", S.N.Woodfield, IEEE-Software Eng., vol-SE5, no 2, pp. 76-79, 1979.

      Haven't read it, so I've no idea if Woodfield just made them up or if you just lost a fistful of Quatloos.

  4. I resent that by GillBates0 · · Score: 2, Funny
    and want to be more than just a code pig

    I resent that. As we all know, the correct term is r as in coder.

    --
    An Indian-American Hindu committed to non-violent thought/speech/action alarmed by the global explosion of radical Islam
    1. Re:I resent that by CanadianCrackPot · · Score: 1

      No I don't want to be a code pig. I want to be a code monkey!

      --
      Good programmers drink beer to relieve job stress.
      Great programmers drink hard liquor and work best hungover.
  5. "experienced, cranky, opinionated old coot" by Black+Parrot · · Score: 5, Funny


    You could have shortened that to "experienced"; the rest follows naturally from that.

    --
    Sheesh, evil *and* a jerk. -- Jade
    1. Re:"experienced, cranky, opinionated old coot" by EvilTwinSkippy · · Score: 1
      Not neccisarily. I'm an experienced, cranky, opinionated, young jack off.

      Though 30 in computers does pretty much mean you are heading for the old folks home.

      --
      "Learning is not compulsory... neither is survival."
      --Dr.W.Edwards Deming
  6. Another review... by tcopeland · · Score: 4, Insightful

    ...this one by Mike Cohn of Mountain Goat Software.

    Mike's review is from the "agile software" point of view, so he comments favorably on (among others) Fact 22 - "Eighty percent of software work is intellectual. A fair amount of it is creative. Little of it is clerical".

    1. Re:Another review... by peluchejs · · Score: 1

      "Little of it is clerical" That depends on where you work. At a company I've worked at, probably 50% of my work was clerical--documentation, and most of it useless. The documentation you needed was never around.

      --
      If you give a man a program he will use it badly for a day. If you teach a man to program, he will do it badly for life.
    2. Re:Another review... by lawpoop · · Score: 1

      80% + a fair amount + a little = 100%.

      --
      Computers are useless. They can only give you answers.
      -- Pablo Picasso
    3. Re:Another review... by Anonymous Coward · · Score: 0

      Unfortunately, in my party, nobody wants to play a cleric.

    4. Re:Another review... by twiddlingbits · · Score: 1

      Good one! I prefer the one that says "The first 90% of the solution takes the first 90% of the schedule, the last 10% takes the second 90% of the schedule". I think Murphy came up with that one.

    5. Re:Another review... by Aku+Head · · Score: 1
      I read some career advice, 25 years ago, that said that women should pursue a career in computer programming because most of them already had the typing skills that are required. (This was when a keyboard at home was very rare.)

      I remember that statement to this day because it is one of the dumbest things that I have ever read.

  7. COBOL by spidereyes · · Score: 2, Interesting

    I saw the word COBOL and cringed and immediately thought of long hot days in the arid lab. Also, spending enormous amounts of time programming/debugging on what I thought was the worst language ever. Master file update...almost makes me cry what they put us through...and then there was Assembler. I'll be interested to check this book out for the COBOL section alone.

    --

    I say we just grow up, be adults and die.
    1. Re:COBOL by Anonymous Coward · · Score: 0

      >COBOL is an old language, not necessarily a bad language.

      Speaking as someone who learned COBOL after several other languages (including FORTRAN) COBOL is both old and bad. I'd rather program in assembler.

    2. Re:COBOL by gillbates · · Score: 3, Funny

      COBOL was designed not to actually get work done, but rather to destroy the ego of any young, up-and-coming prima donnas.

      After the first year of debugging and maintaining COBOL programs with millions of lines of spaghetti code, obfuscated, global variables, etc... the young programmer has no room left for an ego. He has come to the realization that he can't understand everything about the system completely; he is humbled.

      Then, when given a Java assignment, he feels a sense of gratitude and loyalty to his boss, who has just lifted him from an endless quagmire of PERFORMS and GO BACKS, and SOC4 ABEND...

      THAT is why COBOL came about. IBM never expected that business would build systems with a language designed to break-in the new hires...

      But, as they say, the rest is history...

      --
      The society for a thought-free internet welcomes you.
    3. Re:COBOL by MarsDefenseMinister · · Score: 2, Insightful

      Counterexamples: brainfuck, intercal. The lesson is that at least at some level, programming language does really make a difference.

      --
      No weapon in the arsenals of the world is so formidable as the will and moral courage of free men.-Ronald Reagan
    4. Re:COBOL by Oligonicella · · Score: 1

      Since the post is so full of error, I'll assume you were being humerous.

    5. Re:COBOL by Anonymous Coward · · Score: 0

      Funniest thing I've read today. Thanks :)

      /COBOL sucks

    6. Re:COBOL by RWerp · · Score: 1

      Did the author of the book write anything on FORTRAN?

      --
      "Long run is a misleading guide to current affairs. In the long run we are all dead." (John Maynard Keynes)
    7. Re:COBOL by sevinkey · · Score: 1

      mov dx, 42
      mov ah, 9c
      int 21
      42: ds "assembly is cool even if I can't remember the details"

    8. Re:COBOL by biobogonics · · Score: 2, Informative

      I saw the word COBOL and cringed and immediately thought of long hot days in the arid lab. Also, spending enormous amounts of time programming/debugging on what I thought was the worst language ever. Master file update...almost makes me cry what they put us through...

      Modern COBOLs are a far cry from the original language. Some even have OO features. While the thought of using traditional COBOL file management makes me cringe too, nowadays you can use SQL or call out to an ODBC driver. Probably the best feature of the language is its data types. You are guaranteed to have (what appears to be) decimal arithmetic of specified precision. Good built in and external products are available for creating GUIs. While I would not consider it a general purpose programming language, in fact several COBOL compilers and associated tools are written in COBOL.

      Similarly, modern Fortran (90 & 95) is a much more capable language then the 66 or 77 standard versions. I would prefer to use it rather than C or C++ in numeric computation.

      I'm sure the author is trying to make the point "use the right tools for the job".

    9. Re:COBOL by miscGeek · · Score: 1

      OO in COBOL? Now that is scary! Yes, I have paid my dues writing COBOL programs and don't miss it at all thank you very much :)

      --
      May the source be with you!
    10. Re:COBOL by cdn-programmer · · Score: 2, Interesting

      Cobol is a bad language and it always has been! There is just so much that is bad about Cobol that it is unbelievable that people would use it.

      Flow control like PERFORM, no good way to set up storage classes, akward syntax, horrible verbosity are just a few things.

      Setting up linkage sections is a pain in the ass. It is no wonder Cobol programers hated calling subroutines. What is worse is the spagetti code they rouintly wrote and then painfully debugged.

      There is a language that is quite good as a replacement for Cobol - IE PL/I. It has all the data types Cobol has, a nice syntax, good flow control, good I/O control - you name it - PL/I has it.

      In many respect I consider PL/I to be superior to C. Its purpose however is different. C is a systems development language that has been adopted for applications work. Pl/I is an applications development language by design.

      Where C falls down IMHO is that it allows the programmer to become too cleaver. What one needs to strive for is readable code and clear logic. While one can write good C programs, it is also true that one can get carried away. PL/I is a little more restrictive in this.

      There is a really good analysis of the difference between PL/I and C on the net. Lokk here: http://www.uni-muenster.de/ZIV/Mitarbeiter/Eberhar dSturm/PL1andC.html

      The programming language does make a difference. In fact - it can hobble really good programmers and seriously cut their productivity. The opposite however is not necessarily the case... a poor programmer is not encumbered all that much be a bad programming language because he/she will not have the productivity anyways and will find a tremendous amount of time must be spent debugging .

      There is another way to look at this. If you are trying to get a system going and you find random bugs all over the place in pretty much everything you try to use - then you are not going to make good progress regardless how good or bad the language is. On the other hand, team a good language up with a brilliant programmer and it is like making beautiful music.

    11. Re:COBOL by Anonymous Coward · · Score: 0

      PL/I is an applications development language by design.

      What was MULTICS then?

    12. Re:COBOL by JCOTTON · · Score: 0

      Cobol is a bad language and it always has been! There is just so much that is bad about Cobol that it is unbelievable that people would use it.

      Hmmm. Interesting. Reminds me of the famous quote on democracy: it is the worst possible system of government, except for all of the others.
      Flame on. What we have here is basically a bad programmer. A good programmer can use the tools that he or she is given, productivly. If this guy is not able to think out of the box, then he should have gone into another field. Flame off.

    13. Re:COBOL by sql*kitten · · Score: 1

      There is just so much that is bad about Cobol that it is unbelievable that people would use it.

      Yes, it's very easy to assert that, when you have 40 years worth of other languages to compare it to. When they were designed, both COBOL and FORTRAN were the best languages available anywhere for their intended purposes, namely commercial data processing and scientific number crunching.

      Hey guess what, the Ford Model T wasn't actually a very good car! The Wright brother's plane actually wasn't much use! Well no shit, Sherlock!

    14. Re:COBOL by cdn-programmer · · Score: 1

      Actually it was very easy to come to this conclusion by 1973. By then IBM had a high quality PL/I compiler on its OS's. Furthermore this compiler had good multilanguage capabilities and it was quite easy to interface to Fortran and Cobol code as well as assembler if required.

      Some of the "studies" at the time were enough to make you laugh. One I recall was that PL/I was condemed for being "less efficient" than Cobol. The computational speed was reported to be a little "slower". When one looked in detail at the study it turns out that Cobol was not doing overflow and underflow checking and Pl/1 was. So much for the study!!!

      The biggest issue seems to be corporate inertia.

      In the company I worked for before I left the IBM world basically forever, we did use PL/1 but the main IT department found many reasons not to. Next, the IT department decided that they didn't need degree people developing software and furthermore it would be ok for programmers to work from cubicles.

      I left the company over this. Within a year I was managing a small development group and the programmers I hired had degrees. I would say that today this may not be an issue, but back then this rule did serve to separate the men from the boys so to speak.

      Productivity differences by any measurement were more than 5:1.

      There really is a HUGE difference that escaped most of the managers I knew at the time, and perhaps one of the reasons for this is that most of the managers I knew at the time grew out of the hardware side of the IT department. In that game, all you needed to do was parrot what the vendor's salesmen told you. You were thus pretty much guarenteed that you could supply say 20% more horsepower for 10% less year after year so you always looked good.

      Now the developers usually looked bad. They were usually behind schedual and over budget. The systems often didn't work properly and took forever to debug. Productivity was usually in the toilet. Typically they were too afraid to change their ways because if the "next" project using the "better" language were tried and came in late and over budget, then they would be attacked mercilessly. Office politics can be pretty dirty when you have the hardware manager looking like a white knight after signing the maintenance contract and the software manager slugging it out in the trenches using horrible tools.

      So my experiance was that the software development side of the IT department used "herd" think whenever possible probably mostly for protection!

      But mixed into this was a tremendous amount of incompetance and managers who knew dick all about the technical side of systems development. It was so bad in fact that many "programmers" did not even know the basic number types their machine supported. For example, when a Cobol programmer with 5 years experiance does not even know the difference between COMP-1, COMP-2 and COMP-3 this is IMHO totally unacceptable.

  8. Re:As long as he is not management, he's fine by m by daveo0331 · · Score: 5, Insightful

    If he was in management, wouldn't he have more influence which he could use to change things for the better? Just because you have a management position doesn't automatically mean that you believe in the PHB management style.

    --
    Remember the days when Republicans were the party of fiscal responsibility?
  9. Deadlines by Scoria · · Score: 3, Insightful

    The most important factor in software work is not the tools or techniques used by the programmers, but rather the quality of the programmers themselves.

    Another important factor is the amount of time that they are given to accomplish the task. Certain programmers, including many who are otherwise excellent, procrastinate and cannot meet deadlines. And, as we're aware, even good programmers often take shortcuts once fatigue begins to set in.

    --
    Do you like German cars?
    1. Re:Deadlines by escher · · Score: 1

      *clap* *clap* *clap* *clap*

    2. Re:Deadlines by Moraelin · · Score: 2, Interesting

      Being a programmer myself, let me shed some light on why and when it may look when someone is working at low speed. Or really is procrastinating.

      1. The obvious, they are not a great programmer after all.

      2. You mention fatigue. You're dead on. Being tired can sap someone's efficiency (including via increasing the number of bugs) a lot. Whipping a team into working 12 hour shifts, 7 days a week, may work for a week, maybe even two, but then you have tired _and_ demoralized people.

      3. Morale problems. Being an intelectual activity, and not just something like digging dirt or flipping burgers, you can't just whip and shout some serfs and get results. Low morale can sap someone's efficiency _a_ lot. Or bring them in a "ah, wth do I bother anyway?" road to procrastination.

      Morale is hard to build, but very easy to destroy. Sometimes the easiest road to destroying it is taking a ham fisted approach and trying to force people to be cheerful.

      E.g., asking people to come to mandatory team building meetings in their free time, is a great way to make the team hate each other. You can't force people to be friends. And imposing on their free time or money just builds resentment.

      Doubly so if it's done in a condescending or insulting way. "Hey, we're paying for a cheap buffet, so that's your pay for being here. Of course you're not supposed to put it on your timesheet." Eh. I'm not a beggar. I can pay for my own food, _when_ I need it. Right now I needed more to be at home.

      E.g., ego masturbation meetings ("status report meetings") where only one person is supposed to speak, don't really build up morale. They are actually perceived as just that: public verbal masturbation. Any one-way information exchage, that doesn't really require any decision or feedback, ought to go through email. Or if not, at least keep it very short and to the point.

      (And, no, the most common excuse "but what if they have questions?" is usually just that: a piss-poor excuse. "Yes, the company still exists, we're great, the marketting guys sold some other team's product, etc." Well, it's all great news, but exactly what questions is someone supposed to ask? The only you'll actually get is from idiots who think they get bad marks from the boss if they don't ask something. Anything. Just to show they were there.)

      E.g., lack of feedback or lack of sense of any purpose. It may seem like it's conflicting with the previous point, but it's not. Feedback doesn't equal endless pointless meetings.

      4. Mis-management.

      E.g., poor resource use, when someone actually has nothing to do for a month.

      E.g., poor team management where people are left to basically fend for themselves and coax each other into adding this one more function or fixing this bug. Some will take this as a good opportunity to not do anything, not even fix their own bugs, such as the Wally avatar I have for a co-worker. Some will get disheartened at having to spend hours coaxing Wally to even fix a bug, and delay that as much as possible out of self-preservation. Some things will deadlock because of conflicting requests and no management to decide which way to go. (True case: "Yes, I need this new parameter" from one co-worker, and 3 others going "No way mate, I'm not changing to a new and incompatible version of your EJB's client right before a release".)

      E.g., the most harm that management can do is sapping morale, or letting people sap each others.

      For example if it degenerates into a chaotic situation where everyone comes to work and finds that code that they spent 12 hours debugging yesterday doesn't work today, because someone changed something. And you don't even know who, what or where. It's not only a waste of time as such (and the boss may just see this as "these procrastinators aren't making any progress again"), it saps morale too.

      5. Morale again: that feeling of "why should I bother any more?" Maybe it deserves its own point after all.

      E.g., feedback from the team bei

      --
      A polar bear is a cartesian bear after a coordinate transform.
    3. Re:Deadlines by pebs · · Score: 1

      Another important factor is the amount of time that they are given to accomplish the task. Certain programmers, including many who are otherwise excellent, procrastinate and cannot meet deadlines. And, as we're aware, even good programmers often take shortcuts once fatigue begins to set in.

      Procrastination isn't the problem with meeting deadlines. The true problems are:
      -unrealistic expectations
      -underestimated time requirements
      -underestimating research/learning time
      -difficulties in working in a team
      -unexpected issues
      -poor requirements and specifications
      -inefficient feedback from the users/customers

      Sure, there are the lazy-ass coders who browse the web and waste time, but even with a team of hardworking coders, you are still going to have problems meeting deadlines if they are not set realistically. Especially when you are trying to write quality software that can be easilly maintained, not just pump out some pile of horse shit that your customer will hate you for.

      --
      #!/
  10. Fact 37 - code reviews catch errors by tcopeland · · Score: 4, Informative
    > Fact 37: Rigorous inspections [code reviews]
    > can remove up to 90% of errors before the
    > first test case is run. [But are so mentally
    > and emotionally exhausting that we
    > rarely do them.]

    I think some of these terms mean different things to different people. When he says "test case", he means (I think) a tester clicking around a UI and adding a new employee or whatever. But "test case" can also mean a unit test, i.e.:
    Employee e = new Employee("Fred");
    assertEquals(e.getName(), "Fred", "Name not set correctly on instantiation");
    The latter meaning of unit test provides a way to do "rigorous inspections" over and over - because a computer is doing the work. Good times.
    1. Re:Fact 37 - code reviews catch errors by mrtroy · · Score: 1

      The latter meaning of unit test provides a way to do "rigorous inspections" over and over - because a computer is doing the work. Good times.

      You CANNOT do unit testing. Think of the poor QA's who rely on our incompetence to feed their families.

      Fact 37: Rigorous inspections [code reviews] > can remove up to 90% of errors before the > first test case is run. [But are so mentally > and emotionally exhausting that we > rarely do them.]

      What I question more than the meaning of "test case" what does "rigorous inspections[code reviews]" consist of? If it involves a senior developer going line by line over all of the code, this will both be time consuming and anger the senior developer with the repetitive code correction. In all seriousness, I would STRONGLY suggest unit testing. It helps reduce help from senior employees, reduces errors, reduces QA time, and is just good practice all round.

      --
      [I can picture a world without war, without hate. I can picture us attacking that world, because they'd never expect it]
    2. Re:Fact 37 - code reviews catch errors by tcopeland · · Score: 1

      > You CANNOT do unit testing. Think of the
      > poor QA's who rely on our incompetence

      You're right! I retract my post. Let the clicking continue unabated!

      > a senior developer going line by line over
      > all of the code, this will both be time
      > consuming and anger the senior developer

      So true. What a nightmare. That company will be minus one senior developer pretty soon.

    3. Re:Fact 37 - code reviews catch errors by Jeffrey+Baker · · Score: 4, Insightful
      Sure, but code reviews (especially of the latest patches, instead of whole tracts of fresh code) can easily catch errors for which no test exists, or for which no simple test is possible.

      Just as an example off the top of my head, it's common to write

      if (condition = immediate) ...
      which in some languages could be caught by the compiler, but not always. The author of that line can read it over and over but something in his brain will replace the mistaken '=' with '=='. The code reviewer has no such preconceptions and will (might) see it immediately.

      One good example of open review is the Mozilla project, where all commits must be reviewed by at least two people, at least one of whom must be the owner of the relevant subtree of the project. (sorry if this is not quite right, i'm going from memory here). As a result the quality of the code making it into the Mozilla tree is pretty high, with minimum "paper bag" errors.

    4. Re:Fact 37 - code reviews catch errors by tcopeland · · Score: 1

      > code reviews (especially of the
      > latest patches,

      I agree, it is handy for all the diffs to come thru a mailing list for a sanity check, at least.

      > if (condition = immediate)

      Right.... although this is exactly the sort of thing I would hope a unit test would catch.

      > The code reviewer has no such preconceptions
      > and will (might) see it immediately.

      Very true; a fresh pair of eyes and all that sort of thing.

    5. Re:Fact 37 - code reviews catch errors by mrtroy · · Score: 1

      You're right! I retract my post. Let the clicking continue unabated!

      I have a QA on the other side of my cubicle, and I am impressed with their mouse's endurance. Click click click click...all day. (We also do automated testing, but the QA ppl still check specific problems)

      Btw...I have checked out some of your coding stuff, and I like what I see. The SQL wrapper is something I actually had to do something similar for in PHP because of the annoying syntax.

      --
      [I can picture a world without war, without hate. I can picture us attacking that world, because they'd never expect it]
    6. Re:Fact 37 - code reviews catch errors by abigor · · Score: 5, Insightful

      No, unit testing and code reviews are orthogonal. Unit tests verify correctness for certain types of input, but often fail to catch subtle bugs or identify poor solutions (bad algorithms or whatever), and of course they are only as good as the person who wrote them - most often, the person who wrote the code being tested in the first place. So the input to the unit test is often just the sort of thing the code was written to manage, not edge cases and so forth.

      Nothing compares to a code review done by a super-anal type who nitpicks over everything. It is amazing what such a person can catch in terms of weird edge cases, inefficiencies, and so forth, simply by making you sit there and justify what you've done. Like the reviewer said, they are emotionally draining, but are truly worth it.

    7. Re:Fact 37 - code reviews catch errors by tcopeland · · Score: 1

      > Click click click click

      Carpal tunnel waiting to happen, argh.

      > The SQL wrapper

      Thanks.... it's kind of tricky, because using a wrapper library for complex queries - i.e., a 3 way join - looks more obfuscated than just embedding the SQL in the Java code. I mean, it's either 20 lines of "new WhereClause()" or one line of SQL. I dunno. I'm not sure where the balancing point is.

    8. Re:Fact 37 - code reviews catch errors by tcopeland · · Score: 5, Insightful

      > a super-anal type who nitpicks over everything

      Hm. Maybe that super-anal person could fill the missing test cases for all those edge conditions. Then his analness will be preserved for posterity, because everyone can run those test cases to catch possible bugs in future code changes.

    9. Re:Fact 37 - code reviews catch errors by otisg · · Score: 2, Insightful

      One could say that this is one of the situations that pair programming solves. In real-time, too, not with a CVS commit message or code review delay.

      --
      Simpy
    10. Re:Fact 37 - code reviews catch errors by Derkec · · Score: 2, Insightful

      Sure, when he finds the bugs in your code through a peer review, you can add the test cases to first expose the problem then prove that you've corrected it.

      The other major advantage of code reviews is that you know someone else is going to look at your code soon. You're less likely to try to slip something trashy that works through.

    11. Re:Fact 37 - code reviews catch errors by ClosedSource · · Score: 1

      "If it involves a senior developer going line by line over all of the code, this will both be time consuming and anger the senior developer with the repetitive code correction."

      It's not fun, but I think that's why they call it work. Of course, if the senior developer is checking lines of code for naming conventions and the like, then it's a waste of time.

      Unit testing is a good idea, but if the same developer is writing the product code and the unit test, why should you believe that his product code is bad but his unit test is good?

      OK, I admit it's not quite that simple, but I believe there's a lot of value in independent inspections or testing.

    12. Re:Fact 37 - code reviews catch errors by Anonymous Coward · · Score: 0

      Bad example, mozilla's codebase is terrible. Its full of bugs, bad code, and security issues waiting to happen. With every release non-linux unix's have to redo a ton of work just trying to get the danm thing to compile.

    13. Re:Fact 37 - code reviews catch errors by abigor · · Score: 1

      No, because it still amounts to black-box testing for the code unit (whatever you define that to be). There is no substitute for another set of eyes on the code itself. Unit testing is, however, useful in its own right, as you noted.

    14. Re:Fact 37 - code reviews catch errors by Anonymous Coward · · Score: 0
      Just as an example off the top of my head, it's common to write
      if (condition = immediate) ...
      Yeah, but if you get into the habit of writing this:
      if (immediate = condition) ...
      then the compiler will barf out a warning since immediate is not a valid lvalue. And if you use == (like you should), then there is no problem. Joel on Software talked about this in one of his columns not that long ago. It's a good habit to get into -- although it's strange to get used to at first.
    15. Re:Fact 37 - code reviews catch errors by Aidtopia · · Score: 1
      Maybe that super-anal person could fill the missing test cases for all those edge conditions.

      That's not the point. A good code review can find ways to simplify the implementation so that there are fewer edge cases in the first place.

      Grandparent poster was right: unit tests and code reviews are both important.

    16. Re:Fact 37 - code reviews catch errors by pyrrhonist · · Score: 1
      Then his analness will be preserved for posterity

      Anal! Posteri[or]! That's a joke, son. Went right past you...

      Sorry, I'll leave now...

      --
      Show me on the doll where his noodly appendage touched you.
    17. Re:Fact 37 - code reviews catch errors by mpmansell · · Score: 1
      I'm not familiar with the Mozilla code, but surely the point: "With every release non-linux unix's have to redo a ton of work just trying to get the danm thing to compile." is irrelevant unless they are trying to write properly portable code (even if they were this problem would arise in some cases).


      Had you though that Linux was their base development, and the other platforms are derived as a result of fixing the compiles to work. With broadly similar OS versions, this is not an unreasonable way of doing things.


      In the commercial world it would make more sense to make an effort to develop with all targets in mind, but with the Open Source development resources available, it may be more economic for the Moz developers to think of one UNIX (this case Linux) and let the community port the other versions.


      I can't say this is the case, but it could make sense in some cases.


      (I've no knowledge of the code base, so can't comment on the other points)

    18. Re:Fact 37 - code reviews catch errors by apankrat · · Score: 1

      Nothing compares to a code review done by a super-anal type who nitpicks over everything.

      Amen to that. Things like race conditions, improper locking sequencing, reference leaks and other hard-to-trace run-time bugs normally cannot be catched by asserts() or unit tests.

      Also needless to say that unit tests become exponentially useless when the complexity of the code doubles. They also tend to 'pollute' the code obscuring actual logic and making it hard to follow.

      PS. Having too many asserts in the code means only one thing - too many untrivial invariants , which in turn is usually a clear indication of a sloppy design.

      --
      3.243F6A8885A308D313
    19. Re:Fact 37 - code reviews catch errors by Weirdofreak · · Score: 1
      If I have the definition of a unit test right, there's a strong chance it wouldn't. It would go wrong somewhere (in all probability; I suppose there's a chance it wouldn't) but it might not be noticable and even if you do see it you've got to track it down.

      Something I think every language should have is a way of checking for common errors - like a debugger, but easier to use. Just a quick one-time scan, it prints everything that it's skeptical about, then snorts. An easy way to catch things like variable assignment in if statements and bad precedence.
      if ($foo = $bar) { ###variable assignment in if statement - did you mean '=='?
      print ($baz * $blech) / $fum ###'/' operator redundant outside of useful context - have you used brackets correctly?
    20. Re:Fact 37 - code reviews catch errors by chris_sawtell · · Score: 1
      "if (condition = immediate) ...

      Assuming that the symbol 'immediate' is a constant of some kind, you should express the conditional around the other way, eg:-
      if ( immediate = condition ) ...

      Then every compiler will pick up your error. I know it's counter intuitive, but it can save you ages searching for that elusive bug.
    21. Re:Fact 37 - code reviews catch errors by miscGeek · · Score: 1

      Try putting two senior software engineers at the same keyboard and monitor... Then accept bets on which one gets smacked on the head with mouse first :)

      --
      May the source be with you!
    22. Re:Fact 37 - code reviews catch errors by CommandLineGuy · · Score: 1

      > a super-anal type who nitpicks over everything

      Yes? You needed something from me? Btw, it's called being anal retentive .

      --
      [Of course it's client-server; it runs on a LAN]
    23. Re:Fact 37 - code reviews catch errors by Nevyn · · Score: 1
      Just as an example off the top of my head, it's common to write
      if (condition = immediate) ...

      Yeh, I've seen a lot of people think that one up off the top of their head when in these kinds of discussions. So here's my std. answer: "Here's two cents kid, go get yourself a copy of GCC".

      I can't even remember how many years GCC has warned on the above, but even if you come up with a valid problem that is repeatable and can't easily be found vbia. the compiler. Yeh, let's use code reviews (large resources drain on multiple people, only useful once) instead of unit tests (single resources drain, can be run nightly until the heat death of the universe).

      I'm not saying code reviews should never be used, but if your code reviews keep turning up the same problems ... it's time to start firing people.

      --
      ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
    24. Re:Fact 37 - code reviews catch errors by Anonymous Coward · · Score: 0

      Agreed.. Unit tests are a very good thing, but do not replace other types of testing, only supplement.

    25. Re:Fact 37 - code reviews catch errors by William+Tanksley · · Score: 2, Informative
      Also needless to say that unit tests become exponentially useless when the complexity of the code doubles.

      This is hardly "needless to say". You'll have to justify it if you're going to get me to believe it; I don't have data (so I'm vulnerable to any studies you post), but you'll have to at least counteract these reasons:

      • Unit tests always verify the leaf nodes well (the primitives and the functions that only call primitives), by a constant amount independant of the overall complexity.
      • Branch nodes (functions that call the leaf nodes) benefit from being able to call verified code. Debugging the branch nodes is easier when you have some level of confidence in the leaf nodes.
      • The unit tests for the branch nodes also test the leaf nodes. As the complexity increases, confidence in the low level nodes must also increase.
      • The unit tests for each branch node will be as complex as the new functionality added by that branch node. If the node is complex, the test will be complex -- but if the node is complex, its design is BROKEN, and perhaps having that problem show up in the test is a good thing. If the test is that complicated, think of how complex the use case must be, and the documentation, and the actual code that has to call the function?
      • Unit tests make code modification much simpler and more testable. Without a unit test, you can't know whether your change preserves even the simplest of the properties of the old code. With unit tests throughout the code, you can be certain that every programmer's old expectations are met by your new changes.

      They also tend to 'pollute' the code obscuring actual logic and making it hard to follow.

      No, they don't. Are you under the impression that unit tests have something to do with conditional debug statements? They have NOTHING to do with each other.

      Unit tests sit outside the code. They, in fact, should be written as examples of correct and expected use of the code in question. Whenever you want to reuse some code, you can scan through that code's unit tests, and imitate the use you see there. If you don't see any use that's like what you're planning, you know the code doesn't support what you want; you should either add some new unit tests to the old code (and expect to have to modify the code to satisfy your new tests), or decide to write new code after all.

      BUT -- I think code reviews are important.

      -Billy
    26. Re:Fact 37 - code reviews catch errors by Theatetus · · Score: 1

      OTOH, there are times when

      if (some_expresion_returning_a_variable() = some_assigning_expression())
      is a perfectly valid thing to want to do.

      GCC still kvetches about it if you do it, though, and I do tend to do (literal == variable) for just that reason...

      --
      All's true that is mistrusted
    27. Re:Fact 37 - code reviews catch errors by Anonymous Coward · · Score: 0

      Just as an example off the top of my head, it's common to write

      if (condition = immediate) ...


      I don't believe you. It's commonly brought up as a flaw, and commonly pointed out that you can swap the order, which is then commonly refuted somehow, but I don't think I've ever seen that particular mistake occur.

    28. Re:Fact 37 - code reviews catch errors by Anonymous Coward · · Score: 1, Funny

      Assuming:
      a) Mouse and keyboard are infront of monitor and next to each other
      b) Engineers are also sitting infront of monitor and next to each other

      I would say the odds are that the engineer sitting infront of the keyboard is the most likely to get hit with the mouse... Conversly the engineer sitting infront of the mouse is most likely to get hit with the keyboard.

      Which happens first is still to be determined...

    29. Re:Fact 37 - code reviews catch errors by GuyWithLag · · Score: 1

      Not necessarily. I'm using the Criteria class from Apache's Torque ORM tool, and it's a pleasure to use. Really helps when you need to construct dynamic queries, and you don't need to buy into the whole ORM thing.

    30. Re:Fact 37 - code reviews catch errors by Cederic · · Score: 1


      If you're unit testing using one of the xUnit frameworks, following best practices, then your unit tests will almost certainly catch

      if (x = y)

      type errors.

      Not least of which is that if you're using best practice, you're writing a test that checks the logic when x == y and when x != y, and you're writing those tests before you even write the 'if' statement.

      ~Cederic

    31. Re:Fact 37 - code reviews catch errors by julesh · · Score: 1

      As someone who has worked in a company that has practiced pair programming for a lot longer than XP has been around, I know you're right. We find substantially fewer defects in code that has been produced by a pair of engineers than code than single engineer code. Also, the code is often much more efficient, as the programmer who isn't typing the code has more time to think of and suggest possible optimisations that might help performance.

    32. Re:Fact 37 - code reviews catch errors by nimblebrain · · Score: 1

      "You CANNOT do unit testing. Think of the poor QA's who rely on our incompetence to feed their families.

      *laugh* ...and our carelessness to feed them dessert :)

      Unit testing is great to quash some of the "ghosts in the machine" before they happen, and to make maintenance more reliable - less guesswork about whether a refactoring or other maintenance change made something screw up.

      Unit testing can cover off some things that QA just can't find because they never trip off a scenario QA comes up with. Saw a line to the effect of 'if (size<0) size=-size;' in someone's code the other day - who knows what the propagation of a negative size could do behind the scenes?

      Where unit testing works less well-to-rather poorly is in the interface to 'real world' pieces, like talking to your LDAP server or communicating over modem. That's the realm of functional testing, and QA goes nicely with it. With a passel of tools (such as AutomatedQA's ones, or FIT for functional testing in some environments), QA can test out user entry scenarios, installs, stress-testing, running on different hardware and using different configuration files.

      Most commercial developers I know like a relatively stable environment for developing in, and would be pretty averse to setting up and tearing down different versions of a database on their machine, or constantly booting to different OS versions to check things out.

      No, what's more likely to make QA folks go hungry than anything else is corporate ignorance of how important they really are, especially when QA rightly gets in the way of releasing a buggy product :)

      In all seriousness, I would STRONGLY suggest unit testing.

      You bet! :) It can be a major conceptual hurdle to get over (my first thoughts were along the lines of 'why would I bother going "a.b = 1; check a.b == 1" - that's stupid!', but of course that's not what unit testing is about), but it's really, really worth it.

      -- Ritchie

      --
      Binary geeks can count to 1,023 on their fingers :)
    33. Re:Fact 37 - code reviews catch errors by mce · · Score: 1
      I've seen it in real life. I myself wrote the code in question and I was the one who spent a full day looking for the bug some 15 years ago when I just started my career in software.

      That said, I hate adding lines of code just to make things "obvious", because it doesn't by definition do so. Hence, I do on occasion use this construct on purpose. But then I always comment it as such:

      while ((object = accesses->next.target)) /* = intended */
      {
      ...
      }

      Ever since I started doing that, the "= for == bug" never caught me again, because I learned from experience that any if (...=...) is suspect unless explicitly marked otherwise.

    34. Re:Fact 37 - code reviews catch errors by tcopeland · · Score: 1

      > [Criteria, Torque]

      Cool, thanks for the pointer, I'll have to give that a whirl the next time this issue arises....

    35. Re:Fact 37 - code reviews catch errors by apankrat · · Score: 1

      They also tend to 'pollute' the code obscuring actual logic and making it hard to follow.

      No, they don't. Are you under the impression that unit tests have something to do with conditional debug statements? They have NOTHING to do with each other.


      I'm perfectly aware of that, but I was replying in the context of the grandparent post, which implied exactly the opposite.

      --
      3.243F6A8885A308D313
    36. Re:Fact 37 - code reviews catch errors by William+Tanksley · · Score: 1

      I'm trying to see that, and I just can't. He does say that unit tests allow you to test various inputs, and I can see how that might be understood to mean "test whether the inputs are correct", but it could also be understood to mean "test the function with various input values". Given that the second is the definition of "unit test", I don't see why one should choose to read the second way.

      You have to let people know you've got your definitions right, ESPECIALLY if you're going to make a post critical of unit tests in general (and not just the wrong concept you think someone else has).

      -Billy

    37. Re:Fact 37 - code reviews catch errors by Eivind+Eklund · · Score: 1
      Hi Tom! We're usually eye-to-eye on software development issues, but in this case, I think you're missing the target (and possibly shooting people behind you).

      Automated tests and code review partially fill the the same space, but not at all completely. I'm strongly in favour of both. (I have experience using both the techniques, in various forms, but little experience with using both at the same time except when pair-programming with tests.)

      Tests give you:

      • Less likelihood of bugs in the moment, because of the actual tests
      • A mechanical form of documentation that is, to the degree it is there, up to date (as long as the tests pass)
      • An extra consumer for the code, often forcing better code structure
      These are very good qualities. I love them.

      Inspections has different good qualities:

      • Less likelihood of bugs in the moment, because of the actual tests
      • An extra pair of eyes for the code, often forcing better code structure
      • Better naming and readability for the code, directly from human feedback
      • Ensuring that in-code documentation (whether that is comments or well-named symbolsl) is present and match the code
      • Simplifying the design (by direct suggestions from somebody with a different point of view)
      • Helping to find places where the code duplicate functionality elsewhere in the system (instead of writing tests for this new code, use that old, well-tested method that's over in this Util class...)
      • Training "rookies" in the craft issues of software development, including stuff like the above
      • Finding bugs in code that is not covered by the tests (by some sort of mistake_
      • Finding bugs that are both in the test cases and the code. This is in my experience a fairly small but still noticable number of bugs. (An interesting datum here is that when NASA run with several separate, non-communicating teams, they still had a fair number of the same bugs after minimum Something like 20-30%, if I remember correctly.)
      • It teaches the person that review the code somewhat about how the code works, decreasing the "truck count" (number of problems you get when somebody get run over by a truck)
      • The "super-anal nitpicker" will likely also know that the reason that serial device driver you're hacking had an extra 2ms delay if bit 3 of the status register is set is that there was a bug in the hardware delivered by Crowynx in the first half of 1993. Or (to take an example where I've been the nitpicker) that the semantics of the the software protection level macros have changed since the architecture book was written, and they are now masks instead of levels. Thus, the seemingly correct locking code will lead to semi-random crashes roughly every three weeks. Or that said locking is necessary at all, something that no amount of unit tests will find if the person writing the unit tests isn't aware of it.

      There is another point missing in here, too: Writing tests is more expensive than doing reviews, as to write tests, you need to first review the code to find out how it works, and then write the tests to verify that it ACTUALLY work that way. This is a factor ten difference in amount of work.

      OBTW: Feel free to hail me on IRC to continue discussing this (if you feel like using a different medium).

      Eivind AKA eek/#ruby-lang.

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
    38. Re:Fact 37 - code reviews catch errors by tcopeland · · Score: 1

      > eek/#ruby-lang.

      Cool, catch ya there!

      Yours,

      Tom

    39. Re:Fact 37 - code reviews catch errors by otisg · · Score: 1

      That's why you interview people you hire and do your besto to hire the non-violent people and not egotistic know-it-alls. And, if it turns out you made a mistake, you have options, too...

      --
      Simpy
    40. Re:Fact 37 - code reviews catch errors by raduf · · Score: 1

      Nothing compares to a code review done by a super-anal type who nitpicks over everything. It is amazing what such a person can catch in terms of weird edge cases, inefficiencies, and so forth, simply by making you sit there and justify what you've done. Like the reviewer said, they are emotionally draining, but are truly worth it.

      Super-anal nitpicks guys are the very reason code reviews are so uncommon in practice. I can't remember how many times I had to explain that yes, this piece of code may be inefficient but i don't give a rats ass because:
      1. premature optimisation is the root of all evil
      2. well, actually the first said it better

      Before code reviews can take place there should be a common understanding of what the programmer strives to optimise, which in most cases should be code size and clarity. After that... well, code reviews are solid gold.

      And btw, I usually try to re-read my code before compiling, and I found that usually
      bugs = compiling errors * 2
      Anybody can confirm?

  11. COBOL by MikeMacK · · Score: 3, Insightful
    Fact 30: COBOL is a very bad language, but all the others (for business data processing) are so much worse

    COBOL is an old language, not necessarily a bad language. Like anything else, you get out of it what you put into it. If you like programming in COBOL then you'll probably be good at it. If you like programming in Java, then you'll probably be able to code any business data processing functionality you need in it too. I think it's best to use the tool you're most comfortable with.

  12. So COBOL is like Capitalism... by Anonymous Coward · · Score: 4, Funny

    ...the worst system except for all the others.

    1. Re:So COBOL is like Capitalism... by Anonymous Coward · · Score: 0

      the quote is actually about Democracy not Capitalism

    2. Re:So COBOL is like Capitalism... by john_smith_45678 · · Score: 1

      Which makes capitalism the best system.

    3. Re:So COBOL is like Capitalism... by Anonymous Coward · · Score: 0

      Or, you might argue, least worst - at best.

      -uncle adam

  13. Re:As long as he is not management, he's fine by m by Mateito · · Score: 3, Insightful

    Hear hear!

    This is the big problem with management. Pre-boom managers were PHBs, and thus promote PHBs. New skilled IT people look at PHBs and think, I don't want to be like that, so I won't become a manager.

    So its a self-feeding cycle.

    WE NEED MORE GEEKS IN MANAGEMENT.

    Right now, I should be writing my MBA assignment, worth 25% of the subject, due in at midnight tommorrow, but instead I'm procrastinating on SlashDot. If that doesn't qualify me to be a geek manager, I don't know what does.

  14. "Fact", but still irrelevant by fishwallop · · Score: 4, Insightful
    In regards to Fact 37 ("Rigorous inspections [code reviews] can remove up to 90% of errors before the first test case is run, but are so mentally and emotionally exhausting that we rarely do them."): so what?

    If a code review, which takes several hours of my time and the time of my fellow developers, can catch 90% of the errors before the first test case is run, or I can catch 90% of the errors (not necessarily the same ones) using the test cases, it's a better use of resources to let the computer point the errors out to me.

    A code review on "90% debugged" software that finds an error strikes me as more useful than a code review that finds several errors in 0% debugged software.

    As for fact #1, good process or tools may not be able to make all programmers gods, but bad process or tools can make a mortal out of anyone.

  15. Fact 21 Addendum by SlashCrunchPop · · Score: 5, Funny
    Fact 21: For every 25% increase in problem complexity, there is a 100% increase in solution complexity.

    Addendum: Unless you are talking about a Microsoft product where for every 1 % increase in problem complexity, there is a 7 year delay in solution delivery.

    1. Re:Fact 21 Addendum by ConceptJunkie · · Score: 1

      Actually that's not entirely true. For every 1% increase in problem complexity, Microsoft will give you a solution in a reasonable time, but the program will be subject to 10% more security issues, and require 20% more CPU and memory resources.

      --
      You are in a maze of twisty little passages, all alike.
    2. Re:Fact 21 Addendum by GrahamCox · · Score: 1

      Isn't is in fact a 0% increase in complexity? After all, they never actually invent anything new.

  16. Algorithmic-Based Programming Is Wrong-Headed by Louis+Savain · · Score: 0, Flamebait

    Fact 1: The most important factor in software work is not the tools or techniques used by the programmers, but rather the quality of the programmers themselves.

    This may be true as far as conventional algorithmic programming is concerned. But the reason that algorithmic programming is wrong-headed has to do with this well-known fact:

    Fact 31: Error removal is the most time-consuming phase of the life cycle.

    Why is this true? It is because there is something fundamentally wrong with the way we program our computers. It has to do with the old practice of using the algorithm as the basis of software engineering. For an alternative approach to software construction, check out the info at this site: The Silver Bullet

    1. Re:Algorithmic-Based Programming Is Wrong-Headed by avalys · · Score: 1

      The Silver Bullet

      That link is so full of technical BS and hyped up marketing drivel, it's nearly impossible to tell what the point is.

      --
      This space intentionally left blank.
    2. Re:Algorithmic-Based Programming Is Wrong-Headed by photon317 · · Score: 2, Informative


      Uhm... I have a hard time taking that guy's stance on software development seriously when the same site also hosts the following rather, uhm, interesting [whacked the fuck out] paper: http://users.adelphia.net/~lilavois/Seven/bible.ht ml

      --
      11*43+456^2
    3. Re:Algorithmic-Based Programming Is Wrong-Headed by Oligonicella · · Score: 2, Interesting

      See those little green circles in the picture at the top of the page? Guess what's inside them. Algorithms

    4. Re:Algorithmic-Based Programming Is Wrong-Headed by 12357bd · · Score: 1

      AI from Bible?.. And you are talking about something fundamentally wrong? ... Sure!

      --
      What's in a sig?
    5. Re:Algorithmic-Based Programming Is Wrong-Headed by hobo2k · · Score: 2, Interesting
      It sounds like they want to use the declarative programing paradigm (e.g. Prolog). Would you agree with that classification or is this a truly novel idea?

      Declarative is effective in some domains (I would classify regular expressions as declarative programming). But I hesitate to believe that it is the best tool for all problems. Even if you ignore performance issues.

    6. Re:Algorithmic-Based Programming Is Wrong-Headed by Anonymous Coward · · Score: 0

      Wow a real certified nutcase out in the open. Fascinating.

    7. Re:Algorithmic-Based Programming Is Wrong-Headed by Catullus · · Score: 1

      I'm sorry, this is just absolute tripe. I can't even be bothered to moderate it -1, Flamebait. Just consider an example phrase from the article: "the use of algorithms plays havoc with event ordering". What does that mean? How on earth did this get to Score 3, Informative? Sometimes I despair.

    8. Re:Algorithmic-Based Programming Is Wrong-Headed by Anonymous Coward · · Score: 2, Interesting

      It has to do with the old practice of using the algorithm as the basis of software engineering. For an alternative approach to software construction, check out the info at this site: The Silver Bullet

      Then I take it this suggests a new computing model that's not equivalent to the Turing model. Hmm. Nope. Looks like somebody just rediscovered declarative programming. Not that this idea is neccesarily bad. Declarative programming doesn't get used enough.

      The author seems to have a bunch of fundamental misunderstandings. For one, he for some reason seems to think that all hardware is developed by plugging together logic circuits (guess he forgot that microcode stuff), and that it works perfectly (bwahahahhaha). For another, as I suggested in the first sentence, he seems to not understand that these hardware circuits are logically equivalent to the software, which is all logically equivalent to the Turing machine. It was also very confusing until I realized that by "algorithmic" he really meant "procedural". If he's found problems with that, well join the club. What makes this site most amusing though is that, after saying the problem is procedural programming, he then proceeds to reinvent concepts from object-oriented, declarative, and functional programming.

      I do congratulate the author on realizing that procedural programming has problems. I also congratulate him on independently reinventing some great programming concepts. At the same time I have to say, sorry, you have not found the silver bullet. If he's really interested though, it would be great if he did language research. Functional languages are great to work with, and I think declarative programming would be good for doing a little sanity checking in large programs. His networking idea might also bear out a new programming model (although when I put some thought into it a few years ago, it seemed the same as object-oriented programming).

      (And after writing all that I noticed you're the author. Anyways, I'm sorry but you haven't found the silver bullet. I like your thought process though. If you keep looking for new models you might come up with something.)

    9. Re:Algorithmic-Based Programming Is Wrong-Headed by epine · · Score: 0


      The Sliver Buttel is so full of technical BS it addled my brains, which by the way, if they were half as reliable as this link would like to claim, my programs would be error free already, wouldn't they? What makes my brain so reliable: I use a computer in any situation where I have to multiply two numbers where the product contains more than three digits worth of algorithmic complexity.

    10. Re:Algorithmic-Based Programming Is Wrong-Headed by Jerf · · Score: 3, Interesting

      Wow, that was almost a sad experience, reading that (and also you must read this). They go on and on about how bad algorithms are... and create an alternate system that still runs on algorithms, only instead of concentrating on a clean implementation they have this amazingly obscured one that will guarentee the impossibility of any human ever understanding a COSA "program", by taking componentization to truly absurd levels. They have successfully hidden the algorithms from themselves, perhaps, but I still see them, and they will still be bitten by them.

      It would be funny if it weren't also sad.

      Brooks still reigns and there remains no Silver Bullet. Wake me when these guys have a decently complex program that is better than anything I can come up with in Python. (Don't miss that second clause; making a program do something in 2004 is nothing special. It needs to be better. Handwaving is not an OS.)

    11. Re:Algorithmic-Based Programming Is Wrong-Headed by Anonymous Coward · · Score: 0

      there's an old saying that there is no silver bullet...
      one should think about that.

      One should also consider the functional and logical computer languages, such as Lisp and Prolog.

      We all know how easy they are to program in.

    12. Re:Algorithmic-Based Programming Is Wrong-Headed by panaceaa · · Score: 1

      "A Silver Bullet"??? Hahaha, everyone knows that those are always a fantasy. What people really need to do is hire me, Panacea. I'll cure all the problems on the project.

    13. Re:Algorithmic-Based Programming Is Wrong-Headed by Anonymous Coward · · Score: 0

      From the front page of the site:

      There is a foolproof way to spot a voodoo scientist. If a scientist claims to have a theory about a natural phenomenon but is unable to explain the theory in a simple language that the average layman can understand, one can be absolutely certain that he is as clueless about the nature of the phenomenon in question as anybody else.

      Anyone managed to understand exactly what this person is driveling on about (in an authoritative and completely obscure manner)?
      Seems to me he's saying that algorithms are EVIL and nature didn't intend computers to work with algorithms, so we should hide all the algorithms into little boxes, call them components and *poof* problem solved!!! (I could be wrong about this, the level of technical bs in the article(s) is frightening)

      oh and I'm not a layman, but I do have several degrees in CS - kinda funny when looking at his description of voodoo science (which I've never heard of before either - Baron Samedi here I come!!!)...

    14. Re:Algorithmic-Based Programming Is Wrong-Headed by Louis+Savain · · Score: 1

      They go on and on about how bad algorithms are... and create an alternate system that still runs on algorithms

      The point of the article completely went over your head. I guess it is my fault for not being clear enough. But then again, one can never please the entire world. I'll give it a try.

      Since a von Neumann computer is a sequential machine, algorithms cannot be eliminated. This is obvious to everybody. But, due to the availability of fast CPUs, one can easily emulate parallel systems in a computer. This is done all the time (e.g., neural networks, simulation programs, video games, etc...).

      The Silver Bullet

      Note that using an algorithm does not necessarily mean bad software. A simple algorithm can certainly be reliable. It is when you use a lot of algorithms that the reliability problem increases proportionately and, at times, exponentially.

      The idea is to minimize the number of algorithms as much as possible. In COSA, there is only one algorithm, the execution kernel, a very simple program which can be made bug-free through thorough testing. No new algorithmic code is ever allowed. At the application development level, it is all synchronous software objects.

      In the future, when we develop non-von Neumann computers, there will no longer be a need for an execution kernel as all software objects will be self-running.

    15. Re:Algorithmic-Based Programming Is Wrong-Headed by Jerf · · Score: 1

      The point of the article completely went over your head.

      No, it didn't. You are magically invoking parrallelism, and hoping the magic of the brain lies there, rather than in how the nueral networks work. Which betrays a serious lack of comprehension of how the brain works, and as a result, your fancy scheme falls down from axiom one.

      If you pursue this, I personally guarentee you will have more "algorithm-based" problems than those of us in the mainstream.

      I understand how your scheme works. I've seen other graphical languages that differ primarily by the fact they will solve real-world problems better.

      Like I said, wake me when you have a better solution to a problem. With your comprehension of biology and computer science, I'm not holding my breath. For instance, this rather breathtaking claim:

      In COSA, there is only one algorithm... at the application development level, it is all synchronous software objects.

      Yes, I saw that, but your objects are algorithmic. I saw AND gates and OR gates and other gates, built up into more complicated objects. Welcome to the world of algorithms. That is not how the brain works. This is why I said that you may have hidden the algorithms from yourself, but I still see them, plain as day. Parallel graphical languages have been done, and they weren't a magical path to bug-free programming.

      Put another way, your objects trivially serialize into LISP programs, with a small handful of custom functions.

      BTW, I am very open to alternative formulations that solve fundamental problems in new ways, so you really shouldn't discount this as some close-minded person desperately clinging to what they know. I know software sucks. However, I see every reason to believe that your scheme will be a massive net negative. You've created another scheme that avoids problems as long as you stick to the simple samples but won't scale into even the simplest real-world problem, which is the same problem all of the previous general-purpose graphical languages fell into. You see there's a problem, like the rest of us, but you have only a vague and fuzzy sense of what it is, and as a result your solution doesn't even begin to make progress.

    16. Re:Algorithmic-Based Programming Is Wrong-Headed by Louis+Savain · · Score: 1

      Yes, I saw that, but your objects are algorithmic. I saw AND gates and OR gates and other gates, built up into more complicated objects. Welcome to the world of algorithms.

      You still don't get it. It is not the use of an algorithm that leads to unreliable software. It is the accumulation of many algorithms. Reliability decreases as the number of algorithms increases. In COSA there is only one algorithm. Adding a new software object does not add a new algorithm in COSA as it would in a conventional programming environment. For those of you who do get it, here's the link to the site:The Silver Bullet

      PS. Thanks to all of you who have contacted me to offer your support and comments. Unfortunately, I probably won't be able to answer all of your emails. Too many of them. But I'll give it a try.

    17. Re:Algorithmic-Based Programming Is Wrong-Headed by Jerf · · Score: 1

      In COSA there is only one algorithm.

      Your saying it does not make it true.

      Good luck.

    18. Re:Algorithmic-Based Programming Is Wrong-Headed by Louis+Savain · · Score: 1

      In COSA there is only one algorithm.

      Your saying it does not make it true.

      Your persistent denial does not make it false.

      Good luck.

      From you? I'll pass.

    19. Re:Algorithmic-Based Programming Is Wrong-Headed by julesh · · Score: 1

      His networking idea might also bear out a new programming model

      I've come across researchers in massively parallel systems using remarkably similar ideas -- you take an array of very simple components and connect them in order to form a system that does what you want. ISTR seeing solutions for linear time sorting -- of course, you need 1 processing element per item you want to sort which is not exactly helpful, but the processors were _very_ simple (I think they needed to implement instructions like compare, transmit and receive, I think the destination of transmit & receive could be varied based on the comparison). The problem is, that actually understanding the system was _incredibly difficult_.

      And this, of course, is also the problem with working with hardware. This is why we don't routinely solve problems using FPGAs. Designing such things is actually _much harder_ than designing an equivalent procedural computer program.

      A point: the author of the article talks about the complexity of a modern microprocessor, and how amazing it is that they work. Perhaps he doesn't realize how much time and money it costs (e.g.) Intel to ensure that their processors work correctly. It took them 4 years, for instance, to design the original Pentium (assuming they started work on it immediately after the release of the 486, which sounds likely, if not leaving it a little late). I don't know how many people worked on that design, but you can bet you couldn't count them on the fingers of your hands. Let's be generous and call it 10, though. 10 people x 4 years x 2,000 hours per year = 80,000 man hours (almost certainly a gross under-estimate). I bet you I could write software that simulated what a Pentium does in substantially less time. In fact, in less than a tenth of the time.

      If anyone wants to take me on, I'll do it for GBP 80,000. If I can't do it in less time than it took Intel to develop the Pentium, that means I've effectively worked for you for GBP 1 per hour or less, and you get to do whatever you want with the results.

  17. Me-too manager ... by Anonymous Coward · · Score: 1

    Maybe all the managers are 'me-too' because all you foot soldiers are cowering in the trenches instead of representing.

  18. Book Club by Viking+Coder · · Score: 4, Interesting

    We had a Book Club at my job, where we reviewed one to four Facts or Fallacies at each meeting, once a week. We collected comments and suggestions about how to change how we worked. It was really interesting, and it was good to engage more people in the discussion, because while I might really care about this stuff and have strong opinions, other people in our organization did not have strong opinions and actually started to think about this stuff as a result of our meetings.

    Unfortunately, our suggestions didn't really get anywhere as a Massive Reorganization (TM) of the department took place. *grumble*

    We're thinking of doing another Book Club, talking about the "Dynamics of Software Development" by Jim McCarthy.

    --
    Education is the silver bullet.
    1. Re:Book Club by korbin_dallas · · Score: 1

      What?!

      We did this too, but CMM just hasn't improved anything here yet. We're all behind schedule, I have to spend a whole day of the week on paperwork that no one will read 2 months from now. Oh but they spent Deity knows how much $$$ on METRICS software. [HINT: I ran my own metrics with a Perl script for FREE hahahahaha]. And do not get me started on PVCS. Ack!

      This is whats demoralizing and stupifying about the US IT workplace to me. We were a successful project that managment has jumped onto so they can run us into the ground I guess.

      Instead of letting the manager manage, and the tech lead - lead. We got SQA and CMM and lots of other useless pretties.

      --
      They Live, We Sleep
    2. Re:Book Club by Viking+Coder · · Score: 1

      If it ain't broke, don't fix it.

      Assemble a team of smart people, and get obstacles out of their way.

      It sounds like your organization was working, and they overloaded you with process. That's too bad. Glass doesn't even mention CMM, I don't think - so don't blame it on him.

      --
      Education is the silver bullet.
    3. Re:Book Club by The+Dark · · Score: 1

      That should be one of the facts:
      "No matter how well you software project is going, a Massive Reorganization (TM) of the department will cause it to fall behind schedule or be cancelled."

      --
      sig's not here
    4. Re:Book Club by cerberusss · · Score: 3, Funny
      We had a Book Club at my job

      We had a Fight Club at my job, but I'm not allowed to talk about it.

      --
      8 of 13 people found this answer helpful. Did you?
  19. Fact 41 - maintenance by tcopeland · · Score: 3, Insightful

    > Fact 41: Maintenance typically consumes
    > 40 to 80 percent (average, 60 percent)
    > of software costs. Therefore, it is probably
    > the most important life cycle phase of software.

    Hm. This is a tricky one. Does maintenance take that big a chunk because of the way we write v1.0? Maybe we can improve our initial code to make subsequent changes easier. And build in a safety net of units tests to make those changes less painful.

    A lot of maintenance may be a good sign - it may mean that the program is being evolved and improved and is actually useful to someone. Dead programs and cancelled projects don't get maintained, but that's not a point in their favor.

    1. Re:Fact 41 - maintenance by tootlemonde · · Score: 1

      Maybe we can improve our initial code to make subsequent changes easier.

      Fact 41 is an example of a rule that only applies to the cases for which it is true. For instance, applications that are based on legislation like tax laws or industry regulation will certainly be under revision for their lifetimes. On the other hand, utilities like backup scripts may not be revised for years.

      One good programming design is to divide the project as strictly as possible into those parts where revision is inevitable and those where revision is unlikely.

      Where revision is inevitable, try to write the program so that the updates can be made by non-programmers through forms.

      Ideally, a program that is revised frequently shouldn't need the intervention of a programmer any more than a program that is is revised infrequently.

      In the ideal situation, all programming is development and all maintenance is clerical.

    2. Re:Fact 41 - maintenance by tcopeland · · Score: 1

      > all programming is development
      > and all maintenance is clerical.

      Well said!

  20. Egoless Programming by Anonymous Coward · · Score: 5, Insightful

    Fallacy 5: Programming can and should be egoless

    I have worked with somebody who turned himself into a great programmer by being egoless. He could solve any problem by the simple expedient of not trying to do it all himself and being very good at accepting ideas from other people. In most circumstances programming is done within a team and ego just gets in the way.

    Who wants to work with somebody who rejects an idea just because they didn't think of it!!.

    1. Re:Egoless Programming by Anonymous Coward · · Score: 2, Insightful

      Not only are egoless programmer better at accepting ideas, they are better at giving ideas. I've seen time and time again more junior programmers act proprietary with their ideas because they are in competition with the world. The economics of programming guarantee there will journeymen programmers and one mature team mentor is worth a whole room full of ambitious young monkeys with typewriters.

    2. Re:Egoless Programming by Anonymous Coward · · Score: 5, Insightful

      Different sense of "ego", I think. There is ego, "Everybody else sucks", and then there is ego, "Yes my code is good, and I'm confident enough in myself to know that I can deal with the problem."

    3. Re:Egoless Programming by otisg · · Score: 1

      I do. What's his name and email address? If his ideas are all good, I'm hiring!

      --
      Simpy
    4. Re:Egoless Programming by kin_korn_karn · · Score: 4, Interesting


      The main reason programmers appear to have an ego about their work is that as you get older and more experienced you're expected to know more about software engineering than the people younger or less experienced than you. Never mind that you've never worked with Package X, you are a senior guy and you can handle it. They also have their junior people lean on you and then their success depends on yours.

      If you appear egoless and unashamed to draw from others' advice, you appear to be ignorant and unmotivated once you get to be a certain age or get a certain amount of experience.

    5. Re:Egoless Programming by kin_korn_karn · · Score: 1

      In my experience older programmers are the ones that act proprietary because they're (usually rightfully) concerned about job security and not looking like they're no good anymore.

    6. Re:Egoless Programming by Oligonicella · · Score: 5, Insightful

      "If you appear egoless and unashamed to draw from others' advice, you appear to be ignorant and unmotivated once you get to be a certain age or get a certain amount of experience."

      Only to a young, pompous jackass do you.

    7. Re:Egoless Programming by Retric · · Score: 1

      How about teams work best when most members are trying to solve the problem vs look good. I when someone does not understand what I am saying but through a desire not to look foolish say they disagree I have to guess that there not understanding what I am saying vs disagreeing with me. Which is a pointless waste of time.

      IMO it's all around the approach each person is using I don't want to stay late dealing with a system that is inflexible when some deadline shows up. So I try and promote simple and powerful solutions instead of trying to places my preconceived notion of how things should work on top of the problem.

      EX: My boss's boss kept looking for a good (simple as in easy to use) system for pricing delivery's between zones. My response uses a cost to travel algorithm and have the users setup a somewhat complex weighting system. Is it point a click easy well not really but it's far better than trying to build an increasingly complex module of how city's work and then trying to overlay that module on top of an existing city. Want to deal with 2 bridges and a tunnel each at different part's of the city and each with a different tool cost well fine just give them a cost of use and have the program guess which one they would use. If it does not pick the correct one o well it's only going to do that when there close to the same cost so who cares.

      Now with his approach it's not that hard to end up with something that works for some places but then you need to keep making an ever more complex system with each new problem. Sure you could say well I can take that problem head on no problem, but I think that's more an ego issue than a sane approach to problem solving.

    8. Re:Egoless Programming by 12357bd · · Score: 1

      Ego is like vinegar, use it avariciously.

      Ego is a necessary component, without the proper recognition of the work done, people gets unmotivated with the result, but too much of it will surely ruin the whole thing.

      --
      What's in a sig?
    9. Re:Egoless Programming by Iffy+Bonzoolie · · Score: 2, Insightful

      Oh, you mean my boss? Or his boss? They both fit the bill... Not everyone is fortunate enough to work in an enlightened environment.

      -If

      --
      Run a pencil-and-paper RPG campaign with your far-off friends: Gametable!
    10. Re:Egoless Programming by NoMoreNicksLeft · · Score: 1

      This sounds true, but upon further inspection it reeks of manager-speak. Think carefully here, this is very subtle.

      Somewhere in your experience, there is a coder, friend, former coworker, whatever, a very talented and brilliant one. He also has an attitude. Sarcasm, lack of respect for managers, the more stereotyped the better. Even an asshole at times, maybe thought he was smarter than you. I know at least 3 people who would fall into this category.

      Did all 3 have ego problems? One definitely did, we'll get back to him. The others fall somewhere on that spectrum away from him and each other, rather distributed. When in braggart mode, it would be apparent which one fell where. But other than the kind of bullshitting that ocurrs among friends, it didn't really affect anything that I could see.

      Would any of the three ever refuse to use an idea simply because they didn't think of it?

      No. If it was good, they grumbled about it, compared it to other lesser ideas, maybe even briefly compared it to them exaggerating its flaws. If it was bad, but sincere, they'd at least go into why it wouldn't work.

      Did they improve their skill, as the years went by?

      Yes. All were talented to begin with, and if they were gurus before then, they're ubercoders now.

      Did they try to do it all themselves?

      No. For certain there were squabbles about who would get to do the fun stuff, versus who did the boring mundane code... but even with the good stuff, they never bit it all off, and only rarely would they bite off more than they could chew. These instances I'd chalk up more to inexperience, than I would ego.

      What problems did they have at work?

      The general stuff we tend to see. Some boss was afraid that people would walk in (M$ sales reps in particular) and see a redhat bumper sticker on a cubicle wall. That they'd not have the proper decorum for all the pointless meetings, or that they were arrogant with bosses. Personality problems, if anything, and as annoying as they were at times, I still can't say it was 100% them... generally the managers were just as bad, only difference being that they could punish.

      Breaking their will, spirit, losing their ego... is there any way that this might have improved their work?

      Hmm. Not that I can see. Sure, the few annoyances I had to put up with, those would be gone. But they'd be empty as people, nobody you'd want to talk to. Not very interesting. I can't see it having any significant improvement on their overall productivity. Maybe even hurting it long run, if they somehow did manage to brainwash enough people into acting like that, wouldn't it be demoralizing?

      So, if all this is true, why did the parent poster get modded up to 5, Insightful?

      It's simple really. Human beings have only developed technology the last few thousand years, but we spent half a million years on this planet before that. Tens of million years more as monkeys, even before that. Everything in us is still very primitive beneath the surface, and one of our more caveman-like aspects is that of dominance. Abusing dominance the way most do, eventually led to a system where it is used to guarantee a place in the hierarchy. The way that our economy has been designed, there is very little work for many, many people (despite what some will claim). If your boss was to be a nice guy, and just leave you alone to do your work, even those with big egos would find little room to clash, things wouldn't get inflamed, egos wouldn't swell. And if they still had enough ego even without that conflict, and claimed "hey, I'm the guy making all this software work, the whole company depends on it!" wouldn't that be sort of true?

      But then, what would your immediate boss do? No longer necessary to whip you into shape, someone would notice that he wasn't needed. Pink slip. Once several managers started disappearing like that, what would their bosses do? Suddenly they do

    11. Re:Egoless Programming by Anonymous Coward · · Score: 0

      Nope, I was somebody who worked with somebody who impressed me by his ability to get things done. This despite the fact that he was most definetly not an ubergeek.

      He did a lot to bring my opinion round to the point of view that attitude is what makes a programmer truly great.

    12. Re:Egoless Programming by 12357bd · · Score: 1

      Well, not so good programmers grew older too..

      --
      What's in a sig?
    13. Re:Egoless Programming by Anonymous Coward · · Score: 0

      If you appear egoless and unashamed to draw from others' advice, you appear to be ignorant and unmotivated once you get to be a certain age or get a certain amount of experience.

      Only to idiots that believe that they can know everything about everything. Who listens to asshats like them anyway? lol

    14. Re:Egoless Programming by Unoti · · Score: 1

      What is this "enlightened environment" of which you speak?

    15. Re:Egoless Programming by Iffy+Bonzoolie · · Score: 1

      Well, someone mentioned to me that they were happy with their job, once... That's about all I know about it.

      -If

      --
      Run a pencil-and-paper RPG campaign with your far-off friends: Gametable!
    16. Re:Egoless Programming by rfc1394 · · Score: 1
      The main reason programmers appear to have an ego about their work is that as you get older and more experienced you're expected to know more about software engineering than the people younger or less experienced than you.
      I have found that I have done some of my best work by listening to and working with other people even when I thought they knew less than I did. In some cases I took someone else's code, in which they did a particular thing which I found hard to do, (and what they had done amazed me) added to it and improved what they had done by a considerable factor, and they were amazed by what I had done. All of us doing things where we consider our own work nothing special, and are willing to improve upon other people's work. "If we reached the sky it was only because we stood on the shoulders of giants."

      I have seen a number of otherwise very good people end up either burned out or let go because they were too arrogant to consider that other people might have better ideas than their own. In different companies. In different places. In different types of jobs. I was often the one left standing when others had come and gone, because I was willing to accept good ideas no matter where they came from. In one case a customer said something to me that resonated so much I told my boss that I was no longer going to continue a practice we had been doing because, while it mollified most customers, it was dishonest. As it turned out, when the company decided to move (and I turned down an offer to go with them) I was the last person they kept on the job. Because I did my job well, with integrity and with the willingness to suppress ego and accept ideas from any source if they were good.

      If you appear egoless and unashamed to draw from others' advice, you appear to be ignorant and unmotivated once you get to be a certain age or get a certain amount of experience.
      If you're unwilling to draw from others' advice, you're never going to be able to do much above the lowest grade of low worker. A good leader delegates responsibility and authority to subordinates. When a decision needs to be made, they listen to input from various sides, including suggestions, then make a decision. They may go along with the suggestions of others or they may make a different one. The hallmark of a good leader is that they are willing to make decisions and to correct them when they are wrong, not the unwillingness to accept that someone lower than you in seniority or authority may have a good idea or one even better than your own.
      --
      The lessons of history teach us - if they teach us anything - that nobody learns the lessons that history teaches us.
    17. Re:Egoless Programming by awol · · Score: 1

      No, the definition of ego is quite precise (particularly as meant in the context of the fact here) and it is simply a definition of "self" and being aware of "self" in contrast to other "selfs" in the world.

      In this context the author is right, there is no place for self in good software development. In as much as the solution should be independent of the person(s) implementing it. From my perspective, I think that this can manifest it self in many ways and it does not mean that there is a lack of passion, but it does require that the discourse that determines the approach to the solution requires a full and frank exchange of views (which can be a bit shouty if necessary) between a group of people that, and this is the key point, respect each other. If the participants value each other's opinion then it means that there is no issue about "self" because the individual selves know that the right answer will come out of the group, the "uber self" of the team and as such there can, by definition, be no role for the ego.

      It is the true place for consensus and probably one of the best examples of it left in the world today.

      --
      "The first thing to do when you find yourself in a hole is stop digging."
    18. Re:Egoless Programming by GarrettZilla · · Score: 1

      Still different sense of ego. Ego as in "If anybody criticizes my code, they are criticizing me, but my code is good so they must be stupid." Egoless programming is disassociating your self from your code, and not taking it personally if somebody finds some places to make improvements.

      --
      Ecce potestas casei!
    19. Re:Egoless Programming by miscGeek · · Score: 1

      I agree with you to a certain point. But, if you criticize my code you had better be able to back it up :) This paves the way for discussion an improvement for both of us.

      --
      May the source be with you!
    20. Re:Egoless Programming by kin_korn_karn · · Score: 1

      I'm not the kid that thinks the old programmers are ignorant here, I'm the one in the position of the more-experienced guy that has to display a level of experience. It's very nerve-wracking, when you work in real world. The company dictates that you should know this, even if you don't, you have to put on the air of doing so.

      It's not that I can't learn, but - again, with the reality thing that's so hard for most of /. to comprehend - a corp doesn't give you time or training, and when you have a life and a family you can't spend all of your time learning new shit. They'll shitcan you whether you sacrifice your personal life or not, so why waste it?

    21. Re:Egoless Programming by kin_korn_karn · · Score: 1

      The world is full of pompous assholes that never learned that you're not supposed to know everything as you get older. Most of them are managers. Deal w/it.

    22. Re:Egoless Programming by killjoe · · Score: 1

      According to Budha being ego less makes you a better human being. Reason enough methinks.

      --
      evil is as evil does
    23. Re:Egoless Programming by killjoe · · Score: 1

      We have guy in our office who is a egotistical bastard. He thinks the world of himself and thinks everybody else is a retard (and frequently says so).

      He spend half his day yapping the other half coding like a madman. The problem is that although he has read just about every book on software development he has never really produced a piece of software that was exceptional. Just so so programs that occationally crash for no reason. His programs are so badly designed he has to recompile and re-ship the entire application just to make configuration change (I guess he never read that you should have external configuration files).

      The point of the story is that there is no equivalence between ego and quality code. This asshole is the most senior programmer but puts out half assed code and blames everybody else when things go wrong.

      --
      evil is as evil does
    24. Re:Egoless Programming by kin_korn_karn · · Score: 1


      My boss is so anal that he'd rather go through a rebuild and redeploy to make a config change than make it in place. Besides, our promote process from corp is so insanely bureaucratic that it's just as fast to rebuild. each of our main apps has a config file but what's the point of having a config file if you have to rebuild it anyway? I don't get it.

  21. One thing I've learned in my long career... by Anonymous Coward · · Score: 0

    ...there's precious little fallacieso in software engineering unless you count daydreaming fantasies.

  22. COBOL && Lisp? by BerntB · · Score: 3, Interesting
    I'll be interested to check this book out for the COBOL section alone.
    A guestion.

    Let's assume that the book's thesis is true that COBOL is best for administrative programming since it's a specialised language.

    Does the book address e.g. Lisp, where programmers have a standard "pattern" to create sub-languages to attack problems?

    It sounds like an argument that Lisp should be used instead of COBOL, since Lisp is arguably at least as good as any/most for non-low level programming.

    Now I'll probably be flamed by Lisp people... :-)

    --
    Karma: Excellent (My Karma? I wish...:-( )
    1. Re:COBOL && Lisp? by Oligonicella · · Score: 2, Funny

      And the point of using Lisp to create the sub-language COBOL would be what?

    2. Re:COBOL && Lisp? by BerntB · · Score: 1
      And the point of using Lisp to create the sub-language COBOL would be what?
      Sigh. Not necessarily the sublanguage COBOL. The do this kind of thing to get a sub-language with functionality that expresses the problem domain.

      The reason here would be to get something as usable as COBOL but that wasn't more disgusting than x86 assembly language -- that still reads like a bad novel.

      The book's thesis that COBOL would be best for this admin programming is obviously wrong. There would be a good language for the problem domain that didn't have the COBOL drawbacks.

      --
      Karma: Excellent (My Karma? I wish...:-( )
    3. Re:COBOL && Lisp? by EvilTwinSkippy · · Score: 1

      To finally find a beast that is harder to maintain than PERL written by a 14 year old?

      --
      "Learning is not compulsory... neither is survival."
      --Dr.W.Edwards Deming
    4. Re:COBOL && Lisp? by Oligonicella · · Score: 1

      "The book's thesis that COBOL would be best for this admin programming is obviously wrong."

      Your opinion only, and since I don't find it obvious, not a good one (in my opinion).

      "There would be a good language for the problem domain that didn't have the COBOL drawbacks."

      You know, I've heard that "drawback" thing a number of times. Problem is, nobody backs it up with any real drawbacks. This is probably due to their just regurgitating previously heard opinions and not having any real experience with COBOL. Does this describe you, or can you give me some of those "drawbacks"?

      As I've stated elsewhere, I've done lots of COBOL programming and have accomplished anything that needed doing.

      P.S. Sigh yourself, expressing the problem domain is exactly what COBOL does. So using Perl to create a language that described the business domain means pretty much what I said.

    5. Re:COBOL && Lisp? by BerntB · · Score: 1
      I wrote a bit too fast. I hope my point got through.
      Problem is, nobody backs it up with any real drawbacks.
      Ah, I must be wrong about the syntax and utility; so that's why COBOL is used everywhere else both for scripting and is eating up C++... :-)
      As I've stated elsewhere, I've done lots of COBOL programming and have accomplished anything that needed doing.
      Someone could have use exactly the same phrase about writing states to program a Turing machine... Total information lack.
      expressing the problem domain is exactly what COBOL does.
      Yes. Which was my point. You could get the same but without the uglyness. If you're too close to see it, so be it.

      Sorry, I'm in a hurry.

      --
      Karma: Excellent (My Karma? I wish...:-( )
    6. Re:COBOL && Lisp? by chthon · · Score: 1

      I have done fair administrative programming, and from my experience the best languages for administrative programming where COBOL and the xBase dialects, e.g. Clipper and FoxPro.

      The main reasons for this are :

      1) Datastructures can be declared and used consistently, and do not have much clutter.

      2) They work fantastic with fixed point values for currency.

      From all the other languages I know, only C, C++ and Ada are good at point 1. In script languages you cannot define datastructures and address the consistently without clutter (Perl : $rec{field}, $rec->field; Python rec['field'], I am sure you have your own examples).

      If they are good at point 1, then they mostly suck at point 2.

      I learned COBOL 10 years after I learned C, Pascal, xBase and I find it not so bad. However, I had the opportunity to use compilers which did not need as much red tape as older implementations.

    7. Re:COBOL && Lisp? by Oligonicella · · Score: 1

      "Ah, I must be wrong about the syntax and utility; so that's why COBOL is used everywhere else both for scripting and is eating up C++..."

      Syntax and utility. Nice and vague. COBOL's syntax is just fine, point out a problem. Utility - COBOL can be used to perform whatever I want, you need to provide examples. Scripting can't do many things COBOL can, bad example. General use is not a factor in a language's "drawbacks", only popularity - nonexample. If you new kiddies are not taught COBOL, of course you wouldn't use it, no news there.

      "You could get the same but without the uglyness."

      Utterly meaningless statement (other than your personal opinion).

      "If you're too close to see it, so be it."

      Right. I think it's that you don't really know COBOL and are just trumpeting what you do.

    8. Re:COBOL && Lisp? by BerntB · · Score: 1
      Nice and vague.
      No. I pointed out that COBOL isn't used except for exactly what it is used for. That is an exact point. (Yes, I was a bit ironic in stating it.)
      COBOL can be used to perform whatever I want, you need to provide examples.
      As I wrote, check the definition of Turing Machine to see the problem with that argument.
      --
      Karma: Excellent (My Karma? I wish...:-( )
    9. Re:COBOL && Lisp? by johnnyb · · Score: 1

      You should learn Scheme or LISP. In addition, they don't have to be interpretted. Chicken is a great Scheme compiler, with easy-to-use methods for interfacing with any external function.

      The great thing about Scheme/LISP is that you can extend the languages themselves through macros (real macros, not crap like C/C++ has). In fact, you could probably implement the COBOL language as macros if you wanted to, and still get all of the advantages of Scheme - continuations, closures, the ability to do lazy evaluation, etc.

      The problem w/ COBOL is that it's verbose, and very hard to simplify. Newer versions of COBOL are probably better at this, but compared to the amount of code reduction you can get from languages like Scheme and LISP, I have trouble believing that COBOL matches up.

      The one thing I can probably agree with is your #2, though. Few other programming languages put as much thought into fixed-point representations of numbers.

    10. Re:COBOL && Lisp? by johnnyb · · Score: 1
      "As I've stated elsewhere, I've done lots of COBOL programming and have accomplished anything that needed doing."

      The fact that you _can_ accomplish anything that needs doing doesn't mean it's the best way. For example, I recently needed to do some logic programming. Instead of writing an algorithm to search the problem domain, I found a Scheme extension that does ambiguous values. For example, I have a list of questions that a user fills out, and the answers he gives are matched to questions and all items that match the requirements specified by the user are returned. It turns out, this was pretty simple:

      ;assume all_items is an associative array of items and their corresponding answers
      ;assume user-answers are the answers that a user answered to questions
      ;note that "(amb:amb)" is an ambiguous return operator that implicitly causes it to loop through all values until it assigns one that causes all amb:asserts to succeed.
      ;amb:collect-possibilities collects _all_ values that could be returned by the given ambiguous function, not just the first as would normally happen
      ;------Here's the code-------
      (amb:collect-possibilities
      (lambda ()
      (let* ( (the_item (apply amb:amb all-items))
      (item_answers (assoc the_item items)))
      (for-each (lambda (x) (amb:assert (member x item_answers))) user-answers))))
      I know that COBOL _can_ solve such problems, I just think it would wind up being a 20-page program rather than 5 lines. Sorry about the bad indentation, I just don't know how to force slashdot to indent.
    11. Re:COBOL && Lisp? by ACPosterChild · · Score: 1

      Sigh. Since I hate to mod down:

      For an actual example of "exact points", see:
      http://books.slashdot.org/comments.pl?sid=11 9628&c id=10118313

      If COBOL sucks so hard, then why is it used exactly where it's used? Nobody is claiming that it's a C++ replacement, they're claiming that it's good at its job. But, you're the one claiming that it sucks because it's not a good scripting language or C++ replacement.

      Oohh, wait, that's a classic Straw Man Argument!

      Also, rather than looking up the definition of Turing Machine, you should look up the definition of "begging the question". I'll help: it's when you say "it sucks", somebody asks, "hmm, really? why is that?", and you tell them "cuz. it does!", rather than supply anything remotely resembling actual proof.

      Wait, I think I found the pattern! This must be an English class assignment to use fallacious argument techniques! Hmm, but, considering that you even know of Turing Machines (the word, if not their application), this may actually be a Logic 101 assignment...

  23. Re:Engineering? by Anonymous Coward · · Score: 0

    Train engineer here. Bite me.

  24. Re:Engineering? by Anonymous Coward · · Score: 0

    >EE here. Please stop calling yourself "Engineers", because you're not (B/M/PhD.Sc vs B/M/PhD.Eng), and you doing so degrades my trade.

    And having EE folks performing CS tasks degrades mine. Stop it and we'll talk.

  25. Management vs. Geeks by otisg · · Score: 1

    If this type of thinking could be eliminated (through examples and actions), lots of people would have happier, healthier work environments and professional relationships:

    "And he's on your side, having deliberately passed up a more lucrative career in management for a technical track."

    Why they vs. us? Why can't we all just get along? :)

    --
    Simpy
  26. Re:As long as he is not management, he's fine by m by qwijibo · · Score: 3, Insightful

    The hard part about getting geeks into management is that they need to be around one place long enough. PHB's get where they are by riding out the clock and becoming the one with the most knowledge. This happens through attrition in many organizations. We geeks aren't often patient enough to ride the pendulum long enough for it to swing the other way.

    Our management here has been propogated through golf buddies and drinking buddies. Those with the experience to make good decisions for the organization and proven experience are not considered for promotions. How do you propose a geek go about staging a coup de corp?

  27. Re:"Fact", but still irrelevant by Oligonicella · · Score: 2, Insightful

    It is the presumption on your part that you will or can catch the 90% that is the so what.

    It is emperical that people tend to overlook errors in their own work. Hence, the reviewing by others.

    I don't think he's talking about compilation errors, so the computer can't always find the (business logic) errors.

  28. Software Engineering by Hypharse · · Score: 5, Insightful
    I still remember (and cringe when doing so) my software engineering class in college. SE is over-analyzed to a fault. You have so many "improvements" like UML and programs like Rational Rose that only help to overwork and confuse those working on programs. And don't even get me started on the bazillion buzzwords created for software engineering just to make obvious facts sound scientific.

    I think a book like this is what is wholly necessary. I am not saying this book does a good job of it (I haven't read it). There just needs to be a book that tells people how much of the software engineering information is false and unnecessary. This is so we don't have to either sift through all of it or even worse waste countless hours trying to follow a faulty discipline.

    Yea I have an agenda because writing software is hard enough in itself. It is 10 times worse when cluttered with overhead. I remember my very first programming class in high school (it was at a community college) where I was told for a FACT that I should flowchart every function and include a separate box for every line of code. It is ridiculous and they are feeding this stuff into students heads as fact.

    1. Re:Software Engineering by radarsat1 · · Score: 1

      I agree completely.. I can see the need for certain aspects of software engineering, but when it comes down to it, I can get the job done so much faster if you just leave me alone and let me approach it in a way that makes sense to me. I don't want to draw fucking UML diagrams, because they don't help me figure out the problem at all, and they waste my time.

      However, a lot of these things become more important when working with other people..

      One thing that I could NEVER get used to in university was programming "on paper", if you know what I mean. Just give me a compiler...

    2. Re:Software Engineering by Anonymous Coward · · Score: 0

      That sounds like a pretty crappy college to me.

    3. Re:Software Engineering by user32.ExitWindowsEx · · Score: 0, Offtopic
      agreed. to me, it all sounds like made up bullshit that can be summarized into three main points:

      1. comment on what you're doing in your code.

      2. don't put in anything except what you need to get the job done for that function.

      3. assume the user / caller is an idiot and compensate.

      p.s. someone help me, please! I have 4 gmail invites and only need 4 people to complete an offer.

      if you complete an offer, i might not respond right away but you *will* get your invite

      sign up for infone or netscape...no fees, i get credit asap, and you can cancel it in a week or so.

      --
      "Evil will always triumph because good is dumb." -- Dark Helmet
    4. Re:Software Engineering by Anonymous Coward · · Score: 0

      I agree. However, I have noticed that there are a few aspects of "software engineering" that are useful. For instance, if you take RUP with a grain of salt, it works pretty well. For instance, you can start with informal use cases, which help you to think about the problem. Then you can do informal UML diagrams, which help you to think about your class structure (if you're doing Java, say). Then, if you follow an iterative development cycle, but let each iteration LOOSELY follow RUP's waterfallish method, i.e. you don't get too gung-ho about it, things are kinda nice.

      I think the thing is, you borrow from methodologies like RUP without allowing them to constrain you. You take the useful parts and dump the bureaucraptic parts. UML and use cases are kinda cool; clinging to waterfall design sucks. Find the middle ground and be happy.

    5. Re:Software Engineering by Malc · · Score: 2, Interesting

      What's wrong with UML and Rational Rose? I've just come back to a project from 3 years ago that I designed and developed by myself. Nobody else has touched it since. I'm so thankful I used Rational Rose to create UML diagrams for my documentation as it's made my learning experience with everything I'd forgotten much easier. When used properly, UML doesn't confuse people. Either that or the people have been educated about it.

    6. Re:Software Engineering by crazyphilman · · Score: 5, Insightful

      I think if you approach UML diagrams as a bureaucratic annoyance that's been forced on you, then using them is going to suck and they're not going to do you any good. Departments that force UML on people end up just pissing them all off, which ruins its usefulness.

      I think if you use UML as a "sketching on a napkin" tool to think your classes out, it'll be much more useful to you. I use use cases and UML to think about problems, and play with ideas. Sometimes I'll see something I hadn't noticed before, a piece of a class I'll need but which I hadn't anticipated. Sketching with UML lets you fool around with your design, and tinker with it.

      Basically, it's like working an engineering or physics problem, sketching out your diagrams and fiddling with them, letting things occur to you, etc.

      You should give it a chance. Ignore all the "Big Design Up Front" sticks in the mud and use UML as a lego set. You'll like it more that way, I think.

      --
      Farewell! It's been a fine buncha years!
    7. Re:Software Engineering by crazyphilman · · Score: 0

      I think it's one of those things where a teacher learns that a little bit of something, say flowcharting, is a good thing. So the teacher (using adolescent logic for some reason) reasons that if a little is good, a lot must be GREAT. And it becomes their new religion.

      I think it's a good idea to do SOME design up front of your functions, although I think flowcharting is a bit old-hat (most people use pseudocode these days, don't they?). I think use cases and UML are useful because they let you tinker around with a problem without having to code it up. They're a nice way of playing with ideas, in other words, sort of like a mental lego set. Also, they help you keep track of what you want to build, sort of like an architect's notes.

      But I DON'T think it's a good idea to listen to college professors about any of this. Remember what Woody Allen said:

      "Those who can, do.
      Those who can't, teach.
      Those who can't teach, teach gym..."

      If college professors were really any good at any of this stuff, wouldn't they have started companies and made their bones? Why aren't they building software?

      It's a valid question. ;)

      --
      Farewell! It's been a fine buncha years!
    8. Re:Software Engineering by elmartinos · · Score: 1

      One thing that I could NEVER get used to in university was programming "on paper"

      I love it. I have always used a lot of paper before I have written any line of code. Using paper helps a lot, you can make UML like drawings of the program, of the data, and play it through in your mind to see if this can work. This way you can quickly find out a lot about the program.

    9. Re:Software Engineering by Anonymous Coward · · Score: 0

      If college professors were really any good at any of this stuff, wouldn't they have started companies and made their bones? Why aren't they building software?

      That's summed up in the phrase "those that can't, teach". While generalising in this way is bad, I have noticed that many lecturers have either no real-world experience in developing large projects, or have only experience in certain domains or know a single language. When their understanding and field of knowledge is limited, they have no choice but to fall back on a few oft-used mantras. Half the time they are mindlessly repeating whatever it was they were taught, with no experience to back it up. I think a large part of the problem is that the usual source of lecturers is from acadamia. It's important for them to have a good theoretical grounding, sure, but they need experience too!

    10. Re:Software Engineering by Anonymous Coward · · Score: 0

      Good luck coordinating dozens of developers trying to write tens of thousands to hundreds of thousands of lines of code with no documentation.

      Sure, there are counter examples like the Linux kernel, but guess what? That's great and convenient when you have an unlimited schedule and brilliant folks to head the project up, but many companies don't possess either. And even a couple geniuses can't keep a team of 30 programmers running in the same direction.

      And let's not forget that the Linux kernel is already based on existing knowledge and concepts. If your goal is to base your software on someone else's ideas, it's easy to design and develop by standing on the shoulders of those who have gone before you. If you're trying to blaze a path never tread before, believe me, it's hard going.

      Failure to carefully design and plan ahead is begging for failure. Ever wonder why all of those massively multiplayer games come out the door staggering under the weight of game-killing bugs? Hmm.

      That's not to say that you can design down to the deepest level of code but those who fail to plan inevitably take on greater risk. There's a reason there are concepts like refactoring, but those who allow themselves to ignore planning, architecture, and design in favor of refactoring alone will run the risk of massive refactoring impacts. In time that become so expesive that the project itself is at risk.

      Process is a life-saver when dealing with large numbers of developers, particularly those who feel they're smarter and better than the others. Those who have worked in large teams of people with varying skills and egos most likely understand what I am talking about.

    11. Re:Software Engineering by G-funk · · Score: 1

      The short of it is, if the project is small enough for you to just sit in a corner and do it by yourself, then you don't need UML at all. But for large, complicated systems that are meant to handle all sorts of different data in all sorts of ways (and be extensible), and are being worked on by 2 or more programmers full-time, then you bet you need it. Not UML per se, but some sort of agreed-upon standard amongst your developers. When you've got a system with well-defined domains, all being worked on by different people (and swapping sometimes), just the leisure of having all your interfaces / empty classes generated helps enourmously for interoperation and cooperation between developers.

      --
      Send lawyers, guns, and money!
    12. Re:Software Engineering by niteblade · · Score: 1

      I agree wholeheartedly with what you have said. This has got me thinking - how about we teach programming like what it really is - an art?! It seems like our industry is stuck in the constant problem fixing mode - trying to make up for human failings with more tools and processes. Why not teach programmers how to think first (no rigid dogma - flow like water to quote Bruce Lee) - then everything else falls into place....

      Bob

    13. Re:Software Engineering by bob65 · · Score: 1
      If college professors were really any good at any of this stuff, wouldn't they have started companies and made their bones? Why aren't they building software?

      Here's a thought - maybe they want to teach. Maybe they want to research further into their ideas without having to deal with the annoying details of running a company.

    14. Re:Software Engineering by crazyphilman · · Score: 2, Interesting

      Yeah, you're probably right. Who wouldn't want to be able to take summers off and work only a few hours a week... Who wouldn't get into the prospect of being able to crush the dreams of the young with one mighty sweep of the grading pen, to be able to blather on and on about his ideas for hours at a time, while young people are forced to listen respectfully? Who wouldn't want to spend the rest of his life on a college campus, with his own cozy little office tucked away in an ivy covered building, able to hobknob and go to cocktail parties and conferences, be addressed as "professor" or "doctor" and whatnot? Not having to worry about building software that actually WORKS, able to fart around with little academic proof-of-concept work, writing an occasional paper almost no-one will read...

      Now that you mention it, hell yeah, I want to be a professor too. Sounds easier than MY job...

      --
      Farewell! It's been a fine buncha years!
    15. Re:Software Engineering by Anonymous Coward · · Score: 0

      If college professors were really any good at any of this stuff, wouldn't they have started companies and made their bones? Why aren't they building software?

      I don't know. Ask Steve Wozniak.

    16. Re:Software Engineering by Fulcrum+of+Evil · · Score: 1

      Who wouldn't want to be able to take summers off and work only a few hours a week..

      I happen to know a few teachers. They work fairly long hours grading tests, doing lesson plans and so on. They also get to attend seminars on their summer break and usually must get an MS on their own dime within 5 years.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    17. Re:Software Engineering by Anonymous Coward · · Score: 0
      Would you say the same thing about physicists? Show me a world-class physicist that isn't associated with a university and hasn't taught a class?

      I think you're full of shit. If you personally known any professors well--no I don't mean as a student--you'll know that some of them at least are extremely brilliant people who are driven by the need to choose their research and not be constrained by the small-minded corporate mind that thinks only the next quarter or next product release.

    18. Re:Software Engineering by Jim+Starx · · Score: 1

      Do remember that grading papers sucks ass, college's offer classes in the summer, and most professors are expected to keep up certain other activities such as research and authoring books as well.

      --
      The darkness... controls the music. The music... controls the soul.
    19. Re:Software Engineering by crazyphilman · · Score: 1

      Yes, yes, yes... It was a troll. Chill.

      --
      Farewell! It's been a fine buncha years!
  29. Re:"Fact", but still irrelevant by abigor · · Score: 1

    Yeah, but it's quite horrifying how many people/shops look at code reviews as unnecessary or too time-consuming. When I'm interviewing at companies, I tend to ask careful questions about process. If they don't include code reviews, I'm out of there.

  30. Re:As long as he is not management, he's fine by m by Anonymous Coward · · Score: 0
    As long as he is not management, he's fine by me...Since he has not gone the way of other money-seeking, glory-hunting management "people", he is a "true" Veteran.

    There may well be people who talk this way who aren't useless losers who think that badmouthing everyone else is an adequate substitute for competence.

    But I've sure never worked with one...

  31. If all managers are PHBs... by joaodk · · Score: 3, Insightful
    ...then all developers are dilberts.

    And you wouldnt want THAT. It would spoil the cool "old soldier" metaphor...

    1. Re:If all managers are PHBs... by Anonymous+Brave+Guy · · Score: 1
      ...then all developers are dilberts.

      It's worse than that, I'm afraid: some of them are Dilbert's co-workers.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  32. Re:As long as he is not management, he's fine by m by plover · · Score: 4, Insightful
    Except most programmers I know that are worth their weight in salt would completely and totally suck to have as managers.

    Some are poorly organized in everything but their code (*ahem*.) A few grew up believing that an employee / employer relationship should be antagonistic; that a manager must rule their team with an iron fist. That may come from looking around at a bunch of us slacker programmers thinking "hey, why aren't they working as hard as I? If I were their manager, I'd be busting their asses 24 by 7." Many are extremely introverted and have trouble speaking up among their peers; they simply would not be capable of dressing down an employee who desperately needs it.

    In most of these cases it seems that the programmers have spent their time learning machine management skills. Those skills are completely unhelpful when it comes to working with people. The lessons you learn (for example, "the machine only does exactly what I tell it") don't work with human employees, no matter how hard you try to apply them.

    Yes, management is a skill that can be learned, but I don't know any geeks that would want to spend the time, let alone actually manage. Not even for the money. Almost all the people I know who have become successful managers have never been real programmers. They were business analysts or came from completely outside the IT field.

    --
    John
  33. Re:Engineering? by Oligonicella · · Score: 3, Insightful

    And should the people who drive locomotives quit calling themselves engineers as well? Pompous of you to try to corner that title.

    Webster's:
    1 en-gi-neer n
    3 c: a person who carries through an enterprise by skillful or artful contrivance.

    So basically, according to Webster's, bite me.

  34. Re:Engineering? by Anonymous Coward · · Score: 0

    My degrees are a combination of EE and CS courses. You both shut the hell up.

  35. Reading your own code. by rumblin'rabbit · · Score: 5, Insightful
    Yes, but you can review your own code.

    After writing out a couple hundred lines of code, print it out. Then come in the next day and read it. I mean, truly read it, line by line.

    Some may argue that this is not as good other programmers reading the code. Undoubtedly true, but you will still catch many errors. The fact that you've waited a day means you are, in a sense, a different programmer than the one that wrote the code. And the fact that it's printed rather than on the screen gives you a different perspective.

    I suggest that running tests is not sufficient to ensure a reasonable level of quality. There are certain errors that are unlikely to be caught by testing, and yet are quite obvious in a read through.

    In other word, testing is not a replacement for read throughs. In finding problems, a multi-faceted approach is needed.

    1. Re:Reading your own code. by Brandybuck · · Score: 2, Insightful

      You are right. Don't just print it out and read it. Print it out and take it somewhere else to read it. Don't just print it out and read on the desk one foot away from your monitor. Take it outdoors and get some sun!

      --
      Don't blame me, I didn't vote for either of them!
    2. Re:Reading your own code. by EvilTwinSkippy · · Score: 1

      Boss, I need 2 tickets to Tahiti for a code review.

      --
      "Learning is not compulsory... neither is survival."
      --Dr.W.Edwards Deming
  36. Re:As long as he is not management, he's fine by m by stratjakt · · Score: 4, Insightful

    How do you propose a geek go about staging a coup de corp?

    Attain some social skills, go out and play some golf and buy the boss a beer.

    Noone wants to work with arrogant anti-social types, management included.

    --
    I don't need no instructions to know how to rock!!!!
  37. new definition for "fact" by Anonymous Coward · · Score: 2, Insightful

    Since when does a "fact" include a value judgment, like COBOL being a bad language? That's an opinion.

    1. Re:new definition for "fact" by calambrac · · Score: 1

      No, no, no, you misunderstand. "COBOL is a bad language" should not be interpreted as a value judgment, like "blue is ugly", but instead as a tautology crossing languages, like "azul is blue" tanslates spanish into english. "COBOL" is just programmerese for "bad language".

  38. Riddle Me This by deathcow · · Score: 3, Insightful

    When I was 20, with an electronics Associates degree, we set up a software configuration management program for a shop writing C software that became FDA approved for robotic orthopedic devices.

    We based the configuration mgmt program on IEEE standard 828-1990. As part of the program we modeled our Software Requirements Specification process off of IEEE standard 830-1984. Our design practices off of IEEE 1016-1987. Our testing practices off of IEEE 1012-1986.

    We demonstrated adherence to these standards of practice in order to gain FDA approval for our robotic device. Our software development cycle flowed as specified in our carefully engineered plans.

    We engineered software. But we didn't have engineering degrees. Did we dilute your title?

    1. Re:Riddle Me This by Anonymous Coward · · Score: 0

      I just crafted a wicked fart... does that make me a craftsman?

      I think I just diluted the air in this small room.

      Seriously, I hope that you bill the orthopedic patients directly... and don't accept revenue from taxes and insurance. If you did, you are giving those groups justification to extort more money from the population.

  39. Re:As long as he is not management, he's fine by m by EugeneK · · Score: 5, Funny

    This message paid for Swift Byte Programmers for Truth.

  40. fact and fallacies by js3 · · Score: 1

    Fact 21: For every 25% increase in problem complexity, there is a 100% increase in solution complexity.

    Fact 37: Rigorous inspections [code reviews] can remove up to 90% of errors before the first test case is run.

    Fallacy 10: You teach people how to program by showing them how to write programs. Why don't we teach them to read programs first? Good question (and he has a few possible answers).


    FACT: a piece of information presented as having objective reality - in fact : in truth

    fact 21 & 37 are not facts. He's just throwing about numbers.

    fallacy 10 is a fact. You teach people how to program by showing them how to write programs.

    --
    did you forget to take your meds?
    1. Re:fact and fallacies by ChipMonk · · Score: 2, Insightful

      What you're reading here is a review, not a full restatement of each thesis in the book. Have you RTFB? If not, then you do not know what data he provides to buttress his statements as Facts and Fallacies.

      OTOH, what data can you provide to contradict him? Your own personal perceptions? Or can you actually show verifiable numbers?

    2. Re:fact and fallacies by Anonymous Coward · · Score: 0

      I have to agree with you. I mean really a statement such as "We should teach people to read before we teach them to write." is ludicrous, and so is the idea that you can teach someone to read programs and not write them at the same time.

    3. Re:fact and fallacies by DunbarTheInept · · Score: 3, Interesting

      Technically, a fact is not "a true statement". A fact is a statement that is either objectively true OR objectively false, but cannot be both. This is as opposed to an opinion, which is subjective and can thus be simultaneously true for one person and false for another.

      You are acting as if "fact" is the opposite of "false". It's not. "Fact" is the opposite of "Opinion".

      "The earth's moon is made from green cheese" is a fact. It happens to be a false fact, but it is still a fact instead of an opinion.

      --

      Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.

    4. Re:fact and fallacies by js3 · · Score: 1

      I was quoting the book, not the review.

      Since the book is the one stating the fact, the onus is on the writer to provide the data to back up his "facts"

      --
      did you forget to take your meds?
    5. Re:fact and fallacies by Anonymous Coward · · Score: 0

      fact
      "Knowledge or information based on real occurrences"

      It *has* to be *observed* to be a fact. Just stating some random BS ("The earth's moon is made from green cheese") is not a fact. If it is false, and therefore not observable, it can not be a fact. There is no such thing as a "false fact".

    6. Re:fact and fallacies by js3 · · Score: 1

      wrong. There must be truth to state something is a fact.

      "The earth's moon is made from green cheese" is not a fact, it is a fallacy.

      "The earth is flat" is not a fact, it is a fallacy.

      --
      did you forget to take your meds?
    7. Re:fact and fallacies by reddish · · Score: 1

      Technically, a fact is not "a true statement". A fact is a statement that is either objectively true OR objectively false, but cannot be both. That is a false fact if I ever saw one.

    8. Re:fact and fallacies by Anonymous Coward · · Score: 1, Insightful
      4. The assertion or statement of a thing done or existing;
      sometimes, even when false, improperly put, by a transfer
      of meaning, for the thing done, or supposed to be done; a
      thing supposed or asserted to be done; as, history abounds
      with false facts.
      Webster's Revised Unabridged Dictionary (1913)

      5 : a piece of information presented as having objective reality
      Merriam Webster Online Dictionary

      What, you've presented, sir, is an opinion ;)
    9. Re:fact and fallacies by lesmiralha · · Score: 1

      Sources Fact 21: article from IEEE Trans. on Soft. Engineering Fact 37: articles from Barry Boehm, Victor Basili, Marylin Bush. fallacy 10: Articles from many sources, including IBM Systems Journal, ACM SIGCSE Bulletin and Computing Trends. Susan Lammers' book "Programmers At Work". Bob Glass ain't no fool. He doesn't make disparate claims...

    10. Re:fact and fallacies by kundor · · Score: 1

      Uh...no. Children learn to read before they learn to write. In my case, years before.

    11. Re:fact and fallacies by Anonymous Coward · · Score: 0

      People always list the definition that suits them, ignore the rest.

      From your link:

      2.c. Something believed to be true or real: a document laced with mistaken facts.

    12. Re:fact and fallacies by ChipMonk · · Score: 1

      Right.

      Well, in that case, I withdraw my point.

    13. Re:fact and fallacies by DenialS · · Score: 1

      You're confusing propositions with facts. And you're promoting that confusion quite assertively (but not factually).

    14. Re:fact and fallacies by DunbarTheInept · · Score: 1

      Step 1: Go here.

      Step 2: Read definition 2c.

      --

      Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.

    15. Re:fact and fallacies by DunbarTheInept · · Score: 1

      From this link, definition 2c is:

      Something believed to be true or real: a document laced with mistaken facts.

      --

      Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.

    16. Re:fact and fallacies by ChrisMaple · · Score: 1
      There are several definitions of "fact". Some, like yours, require a statement to be made but do not require the statement to agree with reality. This is not the common understanding of the word "fact" and would get you into a world of hurt in a court of law.

      Try this: 4 a: something that has actual existence... b: an actual occurance.

      Webster's New Collegiate Dictionary

      --
      Contribute to civilization: ari.aynrand.org/donate
    17. Re:fact and fallacies by DunbarTheInept · · Score: 1

      If the object is to define common use english, then using the terminology of the courts is not the way to get there. Lawyers speak a lingo all their own that has only a vague connection with actual English.

      --

      Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.

  41. Bullet points by Fulcrum+of+Evil · · Score: 4, Funny

    Really, the worst thing about this book is that it doesn't come with a poster of just a bullet-pointed list of facts and fallacies that you can nail to your office wall (or your boss's).

    Or your boss.

    --
    "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    1. Re:Bullet points by john_smith_45678 · · Score: 2, Funny

      You want to nail your boss?

    2. Re:Bullet points by Anonymous Coward · · Score: 0

      like Christ to the cross.

  42. Re:Silver Bullet Is Wrong-Headed by SirLanse · · Score: 2, Insightful

    It may work for trivial problems, or you may like Visual Basic so plug-ins help you to make code. The visual tools let you skip errors on UI. But the real code, the 'what does it do to make me money' code. That is what you need real good programmers for.

  43. the deadline issue by joaodk · · Score: 4, Insightful
    IMHO the real management issue concerning deadlines is the way they are defined.

    If the manager imposes an impossible deadline to the programmer, hes just a bad boss, PHB style. Of course, there are always real world time constraints to be met, but in this case the manager should define a possible goal along with the programmer, alternative solutions, scope agreements, etc.

    On the other hand, if the programmer is incapable of defining a deadline himself to a well defined amount of work, than you just cant blame the manager.

    1. Re:the deadline issue by eison · · Score: 1

      But how do you tell the difference between PHBs with impossible deadlines, and procrastinating programmers? End result seems to look the same.

      --
      is competition good, or is duplication of effort bad?
    2. Re:the deadline issue by Tired+and+Emotional · · Score: 1
      Bad managers also waste a lot of time. I have seen an incompetent manager "hurry" a project along by calling hour plus status meetings daily and have 50% of the team's efforts go into status reports instead of real work.

      Good managers make it clear what needs to be done, make sure the team have the knowledge and infrastructure they need to do the job, and then prevents upper management getting in the way with interruptions and changes.

      --
      Squirrel!
  44. Some other good resources on the topic... (BSP) by under_score · · Score: 3, Informative

    This is Blatant Self Promotion (you have been warned).

    Here's a good list of software resources, mostly books that I've collected over the last five years or so. Lots of stuff about agile, stuff for managers as well as developers.

  45. QUESTION by JUNIS+KANUNI · · Score: 1

    WHAT US WHO TAKE ENG. CORE?

  46. Fallacy 10 by Anonymous Coward · · Score: 0
    Fallacy 10: You teach people how to program by showing them how to write programs. Why don't we teach them to read programs first? Good question (and he has a few possible answers).

    I don't know about the rest of you, but my EECS department went so far as to develop a written policy stating that reading other students' code was cheating.

    1. Re:Fallacy 10 by QuantumG · · Score: 1

      Well hopefully you would learn by reading code that was good, not written by another student. Kinda explains why Microsoft's code is shit, they all learn by reading Bill's code.

      --
      How we know is more important than what we know.
    2. Re:Fallacy 10 by hughk · · Score: 1

      Joking aside, it is a problem for someone who has been freshly hired out of school by a company with a poor software engineering discipline, where can they learn good code? Open Source is one possibility, but how do you know what really is worth looking at and what isn't?

      --
      See my journal, I write things there
    3. Re:Fallacy 10 by QuantumG · · Score: 1

      Reading bad code is good for you also. You just have to recognise that it is bad. It's easy to tell what is good code and what is bad code. Set yourself a maintenance task. If it takes you half as long to complete the task on one code base as it does on the other then it is fair to say the first code base is better than the second (assuming equal levels of complexity).

      --
      How we know is more important than what we know.
    4. Re:Fallacy 10 by hughk · · Score: 1
      Unless you get to work with the good code, you don't have positive examples.

      OTOH, I'm pretty sure there is good code in Microsoft. I read some of Dave Cutler's source code from when he was with Digital (the source code to RSX-11M was given to customers, and listings to VMS customers. It was clean, well structured and well commented (very much needed for the assembler stuff).

      --
      See my journal, I write things there
  47. Re:Engineering? by Anonymous Coward · · Score: 0

    I saw an opening for an Engineer to work in the boiler room at a local hospital. Let me know if you're interested.

  48. Re:Engineering? by Oligonicella · · Score: 1

    As opposed to Japan, Italy, Korea, Germany, etc?

  49. I hope he mentions the Lions book by ChipMonk · · Score: 3, Interesting

    Fallacy 10: You teach people how to program by showing them how to write programs. Why don't we teach them to read programs first? Good question (and he has a few possible answers).

    This is exactly what John Lions was trying to do with his commentary. And he used nothing less than the Unix kernel source code as an example of well-crafted, and very readable, code.

    Rest in peace, John. Your little project helped more hackers than you could ever have known in this life.

  50. Re:Engineering? by Merdalors · · Score: 3, Funny
    doing so degrades my trade.

    Make that "outclasses my trade".

    I know a recent EE graduate. At the beginning of every university course, someone in the class would timoroulsy raise a hand and ask the professor "Will there be any programming in this course?".

    A huge collective sigh of relief would greet a "No". Couldn't hack it.

    --
    Slashdot entertains. Windows pays the mortgage.
  51. what is the best use of resources, then? by joaodk · · Score: 1
    If a code review, which takes several hours of my time and the time of my fellow developers, can catch 90% of the errors before the first test case is run, or I can catch 90% of the errors (not necessarily the same ones) using the test cases, it's a better use of resources to let the computer point the errors out to me. finding the best "use of resources" is tricky.

    A bug that took a programmer 8 hours to find in a code revision can be a waste of development time, but think of the time it takes to fix this bug in production software:

    the user will try a workaround before calling support:4 hours.

    first level support will try to reproduce the bug: 2 hours.

    a programmer will find the buggy code and fix it, once he has a bugged scenario:4 hours.

    a tester will generate a new software release to fix the bug and run all the tests to make sure nothing else is broken: lots of hours. (a "priceless" joke, anyone?)

    1. Re:what is the best use of resources, then? by Chris+Parrinello · · Score: 1

      But this begs the question, would the code inspection have found the bug in the first place? How did the bug escape testing and end up in production software? Any process that relies on code inspections to find 100% of the bugs is faulty. Humans can only be so good at reading through code and running through the myriad of ways a particular piece of code could be wrong.

    2. Re:what is the best use of resources, then? by joaodk · · Score: 1
      theres a fact I learned in my time in the industry that im not sure have made to the book:

      "There is no software free of bugs"

      all we can do is try to bring down the number of bugs to a level that the usual features can be used in the usual situations without a failure.

      suppose there are three bugs that will escape unit and integration testing in a piece of code, if a revision can find one of them, its one less bug for maintenance. That will still leave us with two bugs that may or may not be detected by the user. but you just potentially cut down the maintenance cost/effort in about one third.

    3. Re:what is the best use of resources, then? by twiddlingbits · · Score: 2, Insightful

      Read some of the work by Capers Jones he did in the 1980's for the DOD. The cost of finding and correcting a bug grows exponentially by project phase, thus a $10 fix bug in requirements is $1,000 in Coding, $10,000 in Systems Test and so on. Plus some bugs can cost customers money, and in the software I used to write they can cost LIVES. I can't stress enough to do a design review, code walkthrus, unit test, integration test, have an independant system level test and then it's getting pretty darn close. Bad code is produced more by getting in a hurry or by a lazy programmer, not from a lack of skill.

    4. Re:what is the best use of resources, then? by lsmeg · · Score: 1
      But this begs the question, would the code inspection have found the bug in the first place? How did the bug escape testing and end up in production software? Any process that relies on code inspections to find 100% of the bugs is faulty. Humans can only be so good at reading through code and running through the myriad of ways a particular piece of code could be wrong.

      Some types of bugs are easily found during testing, others are not; some are easily found in code reviews, others are not. It's easy for developers to make assumptions that are always valid during in-house testing but may on rare occasions fail in the field, which can sometimes be caught by experienced reviewers.

      Plus, code reviews are useful because they connect (or they should) experienced developers with less experienced ones. I can't count the number of times I've learned (and taught) something new in a review. No amount of testing can reproduce the benefit of having a more experienced developer say, "I see you did x to solve y, but z works even better."

      --
      It's OK! I'm a limo driver!
    5. Re:what is the best use of resources, then? by Brandybuck · · Score: 1

      But that does not imply the converse, asking if the unit test would have found the bug instead. The point isn't to rely on code inspection, the point is not to rely on any single method to discover bugs, but to use as many as practically possible.

      --
      Don't blame me, I didn't vote for either of them!
    6. Re:what is the best use of resources, then? by Anonymous Coward · · Score: 0

      the user will try a workaround before calling support:4 hours

      Either you have a lot of faith in your users or are niave. I wouldn't expect most users to spend 4 seconds trying a work around. Most will bitch and moan instantly.

  52. Re:"Fact", but still irrelevant by Chris+Parrinello · · Score: 3, Insightful

    The thing that every seems to forget about the code inspection school of thought is that it was developed at a time when running tests and debugging actually did cost real money back in the 1970's when Fagan came up with his inspection process. Your department was charged everytime you compiled and ran your program on the mainframe computer because the mainframe was expensive to buy/rent, power and maintain.

    Now it doesn't cost real money but has an implied cost that bugs found later in the development process cost more money to fix than if you found then in the coding phase at a code review. Never mind the fact that the recommended rates of code inspects in lines of code per hour are near glacial and costs more money now to have 4 highly paid people to sit in a room and read code out loud. One project I worked on was all brand new code and would have taken three full months of code reviews to review every single piece of code at the speed the QA people were insisting was required for a proper code inspection.

    The process also insisted that we code inspect before we began any testing. So instead of running a suite of tests that could test 90% of the code in a matter of minutes, the QA insisted that we go through a code inspection before test just because the QA people's definitive texts on software quality still use the same data that Fagan used from his research back in the 1970s. They can quote the facts but they don't understand what assumptions were in the original research.

    Code inspections do have their place. I would say those places are to enforce coding standards and knowledge transfer which both help with maintainability in the long term. In reality however, most of the code I inspect today has been pounded on for a month or so before we review it. I can't remember the last time I actually found an error through inspection that would have resulted in a bug report. Most of the stuff we find are missing documentation and typos in that documentation. *yawn*

  53. Re:Engineering? by Beardo+the+Bearded · · Score: 3, Interesting

    I am also an EE.

    Some jurisdictions do allow Software Engineering. APEG-BC (The Association of Professional Engineers and Geoscientists of British Columbia) lets Software Engineers register. UVic (University of Victoria) grants a four-year B.Eng in Software Engineering. Other universities in BC offer the same degree. I didn't go to these other places, so I don't have any details on them.

    Other places in Canada offer B.Eng degrees in Software. I'm sure that there are accredited institutions in other countries that provide Software Engineering degrees. (B.Eng, not B.Sc)

    Now, those NSE and MSCE guys are a different story. ;)

    --

    ---
    ECHELON is a government program to find words like bomb, jihad, plutonium, assassinate, and anarchy.
  54. Re:Engineering? by Anonymous Coward · · Score: 0

    In /. style, I'll comment on your broad statement and point out the exception...

    It used to be in Texas that an EE couldn't use the word 'engineer' in their title either. However, that was recently changed.

    There are actually legitimate Software Engineer's seen in the wild. The NCEES's EE exam has been updated with software/hardware/networking questions. And there are in fact Professional Engineers with specialties in Software Engineering. I would guess they just might put "Software Engineer" on their business card... and have the legitimate right to do so.

    I'm sure licensed architects get annoyed with software people as well. And I know Doctors that get really worked up over Chiropractors calling themselves doctors... and think of all the churches that are ticked off at Judas Priest.

    Surely there are better things to get worked up over. :-)

  55. Re:"Fact", but still irrelevant by jmh_az · · Score: 2, Insightful
    "In regards to Fact 37 ("Rigorous inspections [code reviews] can remove up to 90% of errors before the first test case is run, but are so mentally and emotionally exhausting that we rarely do them."): so what?"

    Two reasons (there are more, but these are the best ones that come to mind immediately):

    (1) The next time you park yourself on a commercial airliner you can be thankful that the software controlling the engines, the autopilot and the cabin pressure controls, to name just a few subsystems, was reviewed exhaustively at every step in the life cycle. They do this for a reason: It finds errors that testing alone cannot detect. [DO-178B, Section 6, available here]

    (2) If fixing an error during implemention costs, say, 1 unit of resources (the baseline), then fixing that same error during requirements generation will only cost 0.2, and fixing it after deployment will cost upwards of 20 times the baseline. [from Software Requirements, by Alan M. Davis]

    People who don't do reviews during the requirements, design and implementation phases are destined to spend their time poking their buggers and trying to explain to annoyed customers why the software doesn't work. Putting the effort up-front into good requirements design and code reviews makes the final testing and verification so much easier.

    As for myself, I detest debugging at the tail-end of the life cycle; I'd much rather be moving on to the next fun project. Wouldn't you?

  56. Then the coders would code to the test case by Anonymous Coward · · Score: 0
    Which might change over time.

    There is no substitute for code reviews as a cost-effective and timely way to detect and correct errors. Period.

    My take on it is that those programmers who don't want to do code reviews and don't want others looking at their code must have something to hide.

  57. And the books! by rumblin'rabbit · · Score: 1

    And so many SE books seem like lists and lists of lists and lists. Or "here are the 328 things you must do to write a line of code". They instil guilt rather than instilling ability.

  58. Re:As long as he is not management, he's fine by m by john_smith_45678 · · Score: 1

    LOL, there's nothing wrong with seeking money, glory, or becoming a manager.

  59. Re:As long as he is not management, he's fine by m by Anonymous Coward · · Score: 3, Interesting

    Except most programmers I know that are worth their weight in salt would completely and totally suck to have as managers.

    Yep. My experience of fellow computer programmers is the same. They would not make good managers. And, more importantly, they would not ENJOY being managers. They are perfectly content to be managees.

    However, the few programmers who are both capable and motivated to be in management really should aspire to do so, IMAO. They are exactly the sort of management that the industry needs, will likely encounter great success, and could serve as beneficial trend setters.

    $1.00/50

  60. Egoless programmers are leaches by Chemisor · · Score: 1

    > He could solve any problem by the simple expedient
    > of not trying to do it all himself and being very
    > good at accepting ideas from other people.

    I have met quite a few such people and I know that they are not great programmers. They are not even good programmers. They are simply very good at getting the rest of the team to do all the real work. Every team has them and they are a drag; they contribute nothing, but because everyone covers for them they still manage too look good if the team is able to solve the problem.

    > In most circumstances programming is done within
    > a team and ego just gets in the way.

    ego, n.: the self; the individual as aware of himself. That's Webster's definition. Are you saying that it is bad to be aware of yourself? If you do not have an ego, it is likely because you have done nothing to distinguish yourself as an individual. You could have managed that by having no original thoughs and just "accepting ideas from other people". As I already stated, nobody likes a free rider.

    I don't know what you call "ego" then; to me it means having pride in your code and refusing to accept garbage from other team members. I have pride in my code because it is good; my progamming team benefits from it and I would most certainly reject some ideas if I do not think they are good enough for the code base.

    > Who wants to work with somebody who rejects an
    > idea just because they didn't think of it!!.

    Nobody, but what does that have to do with anything? Don't lump all cranky primadonnas with the concept of ego. There is a difference between having an ego and being self-centered. In fact it is likely those who never have an idea of their own, that are more likely to reject good ideas by others just because they can. Little people feel better by bringing others down to their level.

    1. Re:Egoless programmers are leaches by Anonymous Coward · · Score: 0

      however egoless is not a direct antonym of ego

      The closest antonyms to "egolessness" are "egotism" (an inflated or disproportionate sense of self worth or one's own important)

      http://en.wikipedia.org/wiki/Egolessness

    2. Re:Egoless programmers are leaches by Anonymous Coward · · Score: 0

      > He could solve any problem by the simple expedient
      > of not trying to do it all himself and being very
      > good at accepting ideas from other people.

      I have met quite a few such people and I know that they are not great programmers. They are not even good programmers. They are simply very good at getting the rest of the team to do all the real work. Every team has them and they are a drag; they contribute nothing, but because everyone covers for them they still manage too look good if the team is able to solve the problem.


      You have grossly misrepresented the type of person that the quote was describing. "Open minded" != "slacker".

      ego, n.: the self; the individual as aware of himself. That's Webster's definition. Are you saying that it is bad to be aware of yourself? If you do not have an ego, it is likely because you have done nothing to distinguish yourself as an individual. You could have managed that by having no original thoughs and just "accepting ideas from other people". As I already stated, nobody likes a free rider.

      I don't know what you call "ego" then; to me it means having pride in your code and refusing to accept garbage from other team members. I have pride in my code because it is good; my progamming team benefits from it and I would most certainly reject some ideas if I do not think they are good enough for the code base.


      He meant ego as in egotism, which means that you have an exagerrated view of yourself. Nobody said anything about a free ride. Egotists generally reject others' views without careful consideration because they think that they know everything. For example, if you stubbornly rejected an idea without providing an objective argument against it, then it's likely that you are letting your ego get in the way. I've never heard anyone use the word "ego" as a synonym for non-excessive pride. It sounds like you are using that definition to be argumentative.

  61. A similar read by jefu · · Score: 2, Informative
    A book in the same kind of vein is "A handbook of Software and Systems Engineering -- Empirical Observations, Laws and Theories". In it, "laws" are stated and discussed with emphasis on experiments or studies that back up the law, or that tend to falsify it.

    As an example, one of the laws mentioned in this discussion is given as "Individual developer performance varies considerably." (Law 31) Then some statistics are given showing the variability. Finally there is a comment on if we should or should not trust the numbers given.

  62. Re:As long as he is not management, he's fine by m by mikael · · Score: 1

    New skilled IT people look at PHBs and think, I don't want to be like that, so I won't become a manager.

    Too right. I've been to interviews for several companies where they claimed to be "looking for senior system engineers", when in fact they were "looking for senior system engineers wanting to move into full-time management". When I found out their management structure for the project consisted of lead programmer, team leader, project manager, systems architect and technical director (but no admin), and that the project manager was expected to spend Friday afternoons playing golf, I practically fled the building. The last I heard, the company had seriously downsized their management.

    --
    Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
  63. Re:"Fact", but still irrelevant by nikster · · Score: 2, Insightful

    i will give you the shortest possible summary of the difference between code reviews and test cases: code reviews are done by humans, test cases by computers.

    who's smarter?

    test cases are a great way to ensure that your code continues to do what it's intended to do. code reviews can catch design errors [though the ego factor is problematic here], can lead to new ideas, can dramatically simplify algorithms, etc.

    ITS GOOD WHEN THE PROGRAMMERS TALK ABOUT THE CODE EVERY ONE IN A WHILE!

    a free side benefit of reviews is that you have two people who know the code. invaluable in case one of your programmers gets hit by a bus.

  64. Value judgements are not just opinions! by Chemisor · · Score: 1

    A value judgement is not just an opinion! These days it is a popular attitude to "keep your values to yourself" and to consider one man's values as good as any those of any other. It is easy to understand the motivation for this, since without objective standards it is impossible to criticise anyone or anything. You can read an interesting conversation on this subject in Neal Stephenson's "The Diamond Age", between John Hackworth and Lord Finkle McGraw. Because we have no allowable objective standards on judging languages (among other things), it is not possible to prove a language to be bad. All judgements become opinions and, as such, irrelevant. Naturally, with no way of distinguishing a good language from a bad one, except for that nebulous "gut feeling", the world gets exactly what it deserves: hundreds of bad languages with groups of fanatical adherents flaming each other on Slashdot about the (purely relative and irrelevant) merits of their languages. So it is with other things in this world. You can do nothing good unless you define what good is, but you can do nothing bad either, so I guess most people are satisfied. There is nothing I can do about it.

    1. Re:Value judgements are not just opinions! by Anonymous Coward · · Score: 0

      A value judgement is not just an opinion!

      I never said it was just an opinion. I said it was not a fact. That is not to say that opinions have no value, which you seem to argue. It can be a well-supported opinion, and thus credible, but to call it a "fact" is incorrect.

      Because we have no allowable objective standards on judging languages (among other things), it is not possible to prove a language to be bad.

      You're not going to "prove" any opinion. Opinions have no true/false status.

      What you CAN do is provide a list of points, both good and bad, about a language, and from that state a value judgment (opinion) based on those points as to whether it's good or bad. Those points can (and probably should) be facts. It also probably helps if you put it in a context, such as "COBOL is a bad language for accomplishing XYZ." It's still an opinion, but it gives a better context for evaluation.

      If you'd like to create standards for judging languages, go for it. But even if those standards exist, the statement "COBOL is a bad language" would be an opinion. The statement "Because COBOL fails to meet X number of standards in Chemisor's Language Judgement Standards, it is considered a bad language." would be a fact. It states the situation and standards and result, and all of the above can be checked and found to be true or false. You can disagree with the standards, but the statement that according to them something is bad is still a fact.

      I just get itchy when people think that because THEY think something, it must be a fact, and I have trouble taking seriously any book that can't tell the difference between a damn fact and an opinion.

  65. does anyone esle find it incredible by epine · · Score: 2, Interesting


    Does anyone esle find it incredible that this reviewer complains that the cranky old coot author doesn't bother to provide justifications where he really doesn't have anything compelling to add?

    Knowing when to shut up is one of best indicators that someone cares enough about their subject matter that they don't feel the need to "fill air" as if other people can't supply their own experience.

    I heartily condone the approach: here's what I think, take it or leave it.

    I'm an old coot myself, and I've learned that it's generally a waste of time to write toward an audience that won't think for itself. If you boss won't think, a poster of convenient sound bites won't solve any problem that matters.

  66. Change font type and size... by DarkMan · · Score: 2, Informative

    If printing it out is not an option, displaying it in a different font, in a different size, ideally with differnt line breaks (hard for code, possible for other things) is almost as good.

    The aim of printing or reformating is to change the text, and force you to actually read the letters that are on the page. This is done by destroying the patterns in the positioning of the text that the writer is used to, thereby hindering recall.

    This is one of the reasons LaTeX is useful (for me, at any rate), because it does all of the above, without actually printing it (written in 10 pt monospaced Courier, read is 12pt Times New Roman, 1.5 spaced, paginated). Most literate programming schemes also have this as a side effect, notably Web derived scheme which output LaTeX. I've always wondered how much that contributes to the sucess of those methods.

  67. Project estimates by Sebastopol · · Score: 4, Insightful

    Project estimates are done at the beginning of the project when you have insufficient understanding of the requirements and scope, which makes it a very bad time to do an estimate for the entire project.

    This is what separates the men from the boys. Estimation of project requirements are not perfect until the project is complete, so you have no choice but to work with educated guesses.

    Modern project management is an exercise in managing uncertainty.

    It is easy to say how long it would take you to write a script, anyone can do that in their head: guess base on experience, multiply by x2 and have a reasonable estimate.

    Now try estimating a thousands scripts (or circuits) done by hundreds of engineers of varying aptitudes that will result in a capital cost of several billion dollars over (hopefully) a few years! All of which is directly reflected in your retirement investments!

    That kind of planning is real nuts-and-guts stuff that most of us well never have to wrestle with, and a "fact" like this grossly understates and misrepresents.

    Programming is easy.

    Planning is orders of magnitude harder by comparison.

    I prefer programming, the latter makes my brainpan throb.

    --
    https://www.accountkiller.com/removal-requested
    1. Re:Project estimates by professorfalcon · · Score: 1

      Modern project management is an exercise in managing uncertainty.

      More precisely, it's an exercise in managing risk. Developing software involves all sorts of monetary risk, including real costs and opportunity costs (i.e. doing x instead of y yields $10,000 less money). Generally, uncertainty is the biggest contributor to the total risk.

      Joel's painless scheduling is a step in the right direction for estimating and learning from previous estimates.

      Comparing software to construction is helpful. Construction projects are not as lean as people think, and they sure seem a lot like software projects, when it comes to risk. The best things to learn include several, varied-length schedules (i.e. a daily schedule set at the beginning of the day, a 3-week schedule that is reviewed often, and a long-term schedule). Also, regularity in scheduling is an amazingly helpful habit. Regularly-scheduled builds, regular releases, regular fixing helps estimation and provides incentives for progress and scaling back the impossible. That all helps minimize risk.

    2. Re:Project estimates by 12357bd · · Score: 1

      Now try estimating a thousands scripts (or circuits) done by hundreds of engineers of varying aptitudes that will result in a capital cost of several billion dollars over (hopefully) a few years! All of which is directly reflected in your retirement investments!

      More uncertainty means more estimation error, no matter how good you are. Beyond a given point 'decision' becomes 'chance', either that or those thousands incognites are not so unknow (that's my experience).

      --
      What's in a sig?
    3. Re:Project estimates by rozz · · Score: 1
      Programming is easy.
      Planning is orders of magnitude harder by comparison.

      i disagree a bit with this part of your post ... they are only different type of problems which require different types of brains and thinking.
      programming : logic, math, abstractization, Certainty
      planning : probabilities, psichology, intuition, Uncertainty

      --
      "There is nothing more frightful than ignorance in action." Johann Wolfgang von Goethe
    4. Re:Project estimates by Sebastopol · · Score: 1

      Beyond a given point 'decision' becomes 'chance'

      Very true indeed! ;-)

      --
      https://www.accountkiller.com/removal-requested
  68. "facts" by mabu · · Score: 1

    Fact 1: The most important factor in software work is not the tools or techniques used by the programmers, but rather the quality of the programmers themselves.)

    I don't necessarily agree with this statement. It's truthfulness is ultimately circumstantial. In theory, it's a fact, but in practice it's a lot more complicated.

    Yes, the quality of the programmer is most important, but for the very reason that a seasoned programmer will select the best software and tools, which is equally as important. So the question is basically circular in nature.

    Second, the goal of software engineering is to produce a viable product. The best programmer in the world may still be subject to the whims of management which may override his choice of approach or tools.

    Fact 41: Maintenance typically consumes 40 to 80 percent (average, 60 percent) of software costs. Therefore, it is probably the most important life cycle phase of software.

    I think this is once again, circumstantial. If you're running a Microsoft shop, it's a fact. If you're running a Unix shop, the maintainenace costs can be negligible depending upon the quality of the program design.

    1. Re:"facts" by lesmiralha · · Score: 1

      Maintenance also includes evolving the software to adapt it to new requirements. Unix shops suffer with evolving requirements as much as Microsoft shops or Smalltalk shops or any other kind of shop.

    2. Re:"facts" by gorbachev · · Score: 1

      "Yes, the quality of the programmer is most important, but for the very reason that a seasoned programmer will select the best software and tools, which is equally as important. So the question is basically circular in nature."

      I don't know where you work, but where I work, I don't get to choose my tools or software freely. I use what's given to me, more or less.

      I would argue great developers are great because they make the best of what they have, whatever it is.

      --
      In Soviet Russia, I ruled you
    3. Re:"facts" by dcam · · Score: 1

      I don't necessarily agree with this statement. It's truthfulness is ultimately circumstantial. In theory, it's a fact, but in practice it's a lot more complicated

      The fact that it is circular does not make it any less true. What he is saying is that if you want to improve productivity look to hiring good people, not buying shiny new tools. This point is fleshed out more in the book.

      I think this is once again, circumstantial. If you're running a Microsoft shop, it's a fact. If you're running a Unix shop, the maintainenace costs can be negligible depending upon the quality of the program design.

      The definition of maintenance used by the book includes altering/upgrading existing functionality. That is something that will be common to both Unix and windows shops.

      --
      meh
    4. Re:"facts" by julesh · · Score: 1

      Second, the goal of software engineering is to produce a viable product. The best programmer in the world may still be subject to the whims of management which may override his choice of approach or tools.

      I think what he's producing is an argument for management not to override the developers on choice of tools -- he's saying: it won't make much difference, so you ought to be hiring talented programmers, therefore we must be talented, so listen to us when we tell you what tools we want to use. Or maybe that's just wishful thinking :)

  69. What bugs me..Misunderstandings. by Anonymous Coward · · Score: 0

    "At university I and a friend invented the IRS."

    and

    "All these came from the sound research of the IRS (Institute for Random Statistics)."

    You're so lucky you said that. Me and my buddies were going to bust your chops bad.

  70. Re:As long as he is not management, he's fine by m by AvantLegion · · Score: 1
    Right now, I should be writing my MBA assignment, worth 25% of the subject, due in at midnight tommorrow, but instead I'm procrastinating on SlashDot. If that doesn't qualify me to be a geek manager, I don't know what does.

    Actually, the idea of the Slashdot general public in management positions is a thought too frightening for words.

  71. Re:As long as he is not management, he's fine by m by Anonymous+Writer · · Score: 1

    WE NEED MORE GEEKS IN MANAGEMENT.

    With the outsourcing of IT jobs, there would be no problem with the availability of IT personnel for management positions.

    NOW GET BACK TO WRITING YOUR MBA!!!

  72. Re:As long as he is not management, he's fine by m by Anonymous+Writer · · Score: 1

    How do you propose a geek go about staging a coup de corp?

    By telling them the about how to get the best porn online during a binge drinking session. He'll be a hero.

  73. Re:As long as he is not management, he's fine by m by chris_mahan · · Score: 3, Funny

    Yeah, but then you cease being a geek, and you start living a double life, where tassels and the wool content of your suit pants become important factors.

    One day you'll be driving by fry's and realize you've not been there in over three months, and you will feel very small indeed.

    Geeks are good at what they do when they embrace their geekness. When they try to suppress it, they become miserable, depressed creatures. And i would not want that in managament.

    I say: stay behind the keyboard, and long live sandals!

    --

    "Piter, too, is dead."

  74. ./ a book??? by Anonymous Coward · · Score: 0

    This book is currently ranked 988th on Amazon.com and 670th on bn.com!

  75. check your math by Anonymous Coward · · Score: 0

    Actually this would mean a polynomial increase, not an exponential one.

  76. Re:As long as he is not management, he's fine by m by twiddlingbits · · Score: 3, Insightful

    " Almost all the people I know who have become successful managers have never been real programmers"...well,meet one more. I have been a coder for many years in embedded systems work, and also in the web area. And I have (and do) manage teams of programmers and analysts. The reason most geeks don't want to manage is simple..It is HARDER than coding. No debuggers, no error messages, no recomplies, it has to be right the first time. And Senior Management expects it!! Plus the skills are mostly people skills, something IMNSHO a lot of "geeks" have trouble with. People solutions are generally not right/wrong they are somewhere in the middle, they are kinda "fuzzy" which bothers the logical programmers mind. But those "soft" management skills CAN be learned if you try. In my 22 yrs in IT I've been up the Management chain to mid-level and back down and over to Sr. Technical Staff. I prefer the Technical work, but it is getting HARD to find, so I have my PM skills to fall back on. Versatility in roles, as well as in programming skills is valuable! Oh,and don't get me started on my soapbox about how Leadership is MUCH more valuable than management, but it is in every scarcer supply in the tech world. Set reasonable expectations but hold them to it, give people room to work, help them with problems, keep the customer informed and off the programmers backs and you'll do OK in Managment.

  77. Good Point by joaodk · · Score: 1
    ...and as far as Im concerned, its a question without a logical, objective answer.

    Personally, I think a relationship between a manager and a programmer should be one of trust. When both are committed to the the job, you cant go wrong. When thats not the case, I would say that one should rely on his own feeling and experience to tell the difference.

    then again, thats probably just the answer youd get from a consultant... a statement with no useful information at all. creepy.

  78. Re:As long as he is not management, he's fine by m by cheekyboy · · Score: 1

    I like to think that, a skilled engineer could learn to be a skilled manager in under 12 months, but a skilled manager, could only become a skilled engineer in 12 years :) So who gets paid more?

    99% of programmers I know are actually "out there" very social or good at the pub guys. Maybe its just the australian culture.

    But what is a good manager? one that ignores human skills/people totally and just gives orders like a drill sargent? Gets things done I guess.

    What I really hate though are lieing MF's managers that pretend to their programmers "oh yeah project going ahead well, all rosy for next release", when in the background he has spoken to head of R&D and knows your project baby thats 5 years old is gona get canned because of incompetent marketing which isnt yielding massive sales, and that some staff will get the ass too.

    I do have to wonder if women with children would make a better manager?

    --
    Liberty freedom are no1, not dicks in suits.
  79. Re:"Fact", but still irrelevant by lesmiralha · · Score: 2, Interesting

    Extreme Programming advocates code reviews as a good practice. In fact, code reviews are part of the point behind Pair Programming. If code reviews are good, let's review all the time.

  80. Teaching by Spazmania · · Score: 3, Interesting

    Fallacy 10: You teach people how to program by showing them how to write programs. Why don't we teach them to read programs first?

    For the same reason we don't teach people how to write books by telling them to go read: If they're serious about writing, they're *already* avid readers. Teaching them to read would be redundant.

    If a wannabe programmer isn't already reading code for ideas then he's wasting your time asking how to be a programmer.

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    1. Re:Teaching by swordgeek · · Score: 1

      "If a wannabe programmer isn't already reading code for ideas then he's wasting your time asking how to be a programmer."

      I agree, except that roughly 80% of the young programmers I know can't read code passably. Maybe more--maybe as high as 95%.

      --

      "People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban
    2. Re:Teaching by sgt_doom · · Score: 0

      Your response is so perfect to an obviously trite comment. Not having read his book I shouldn't be too critical, but with such fallacies as #10, I wonder about the remainder of his book. Real programmers don't need such trivial instruction.

    3. Re:Teaching by Spazmania · · Score: 1

      That fits with my theory that 80-90% of so-called programmers really suck and would be better suited to flipping burgers.

      The real question is: of those young programmers who can't read code, how many go on to become more than mediocre programmers? I'm betting that number hovers around zero.

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
  81. Re:Engineering? by Malc · · Score: 1

    When I was looking around for universities (beginning of the 90s), York University (UK, not Toronto suburbs) offered a choice of a BEng or BSc in Comp Sci. I don't think you had to make a choice about which you wanted until the very end.

  82. Software Engineering Degree is WORTHLESS ! by B_SharpC · · Score: 0, Insightful
    FALLACY: The biggest fallacy about Computer software is that it is still a legitimate occupation.

    I have a Software Engineering degree, 4.0 GPA, and it is a worthless rag.

    FACT: The fact of Software Engineering is that it is a horrible, worthless career due to:
    • INsourcing mass foreigners, H1B visas, just HORRIBLE!
    • OUTsourcing tech jobs, TERRIBLE!
    1) GOTO Massive Foreigners
    2) CLICK ON Advanced Search button
    3) SELECT your State and Company
    4) CRY when you see the massive number of foreigners who have replaced your job!

    Remember, you can NOT compete with mass foreigners & H1B visas. Why? Because you both follow a different set of laws. Foreigners have enormous legal advantage over you. Sucks huh! There is NO legitimate career future in Software Engineering or Computer Science.
    The corporate outlaws have won the battle. *sigh*
    --
    Score & Karma: SASA: Slashdot Approval Seekers Anonymous
  83. Re:"Fact", but still irrelevant by twiddlingbits · · Score: 1

    Ditto!!! See my post in this same thread. Capers Jones at Southern Cal did the exponential cost model you are quoting.

  84. Maintenance by rewt66 · · Score: 2, Insightful

    No, what he's saying has nothing to do with MS vs. Unix. He's saying that the effort/time/money required to create the code in the first place is less than the effort required to keep it running:
    - for the next decade or three
    - on hardware that wasn't even on the drawing boards when the program was written
    - for uses that, while within the program's theoretical capability, were never comprehended by the original creators.

    Ever maintain a code base for a decade? It's painful - more painful than writing new code. That's his point.

    1. Re:Maintenance by mabu · · Score: 1

      No, what he's saying has nothing to do with MS vs. Unix. He's saying that the effort/time/money required to create the code in the first place is less than the effort required to keep it running:
      - for the next decade or three
      - on hardware that wasn't even on the drawing boards when the program was written
      - for uses that, while within the program's theoretical capability, were never comprehended by the original creators.

      Ever maintain a code base for a decade? It's painful - more painful than writing new code. That's his point.


      I have code that I've maintained for 15-20 years. I understand what he means. It doesn't have to be painful if the code is well designed and running on a solid platform. Having also run Unix and MS-based systems, in some cases side-by-side using almost identical applications, I can authoritatively state that based on my experience, Microsoft-platforms require exponentially more maintenance.

      The modular nature of Unix makes it a lot easier to expand functionality. Microsoft's departure from these ideals makes attaining the same expansion flexibility more tedious and difficult.

      I can't remember a time where a patch to my Unix box made me wonder whether all my apps would cease to function. This is a constant source of concern for every Microsoft admin. There's no way that maintenance costs are comparable.

      I'm not meaning to bash Microsoft. If you get paid by the hour, that's the field to be in. You definitely have job security. If you get paid to get the job done, and want to not have to slave over servers and applications constantly, there are better alternatives that have dramatically less maintainence requirements.

      If you don't believe me, try to find a 10+ year old application for Unix and Microsoft. Chances are the Unix application will run without a hitch on the latest OS versions. Roll the dice with Microsoft. Odds are it won't run.

  85. Re:Engineering? by shostiru · · Score: 2, Interesting
    A few years back, the local university here moved the CS dept from the Arts + Sciences college to the Engineering college. Several other universities have done this as well.

    Technically, computer science and computer engineering are (or should be) distinct, in the same way that chemistry and chemical engineering are distinct. Most people I know with CS degrees fall somewhere in between the two. Some universities seem to focus more on the science end (in many cases the CS dept grew out of the math dept, CS -- as opposed to computer engineering -- is basically mathematics); some focus more on engineering.

    I don't see why you would consider your trade degraded because some people calling themselves computer engineers are more computer scientists. I didn't find EE inherently more (or less!) challenging than CS, it just used different abilities.

    It's been my experience that it helps to have both computer scientists and computer engineers on any project that's sufficiently complex to be interesting, because they tend to have complementary knowledge and abilities.

  86. And use a grinder by devphil · · Score: 2, Informative


    Which is what we used to call pretty-printers when they did more than just wrap everything in font tags.

    My favorite was lgrind, which produced TeX/LaTeX versions of your source. It could be taught about variable naming patterns, so if your code does something like "delta_vn = blah", it would emit "\delta_{vn} = blah". When printed, this becomes an actual Greek delta character, with the "vn" as a subscript. (Just one example.)

    Checking the formula in the code against the formula in the math reference is a lot easier when the formula in the code looks like the math. :-)

    --
    You cannot apply a technological solution to a sociological problem. (Edwards' Law)
  87. Re:Engineering? by shostiru · · Score: 1

    Bah. The parent may be a troll, but please don't add insult to injury. The engineering classes I took weren't easier than the CS classes; they're entirely different disciplines. I know several programmers who sucked at EE, too.

  88. Re:As long as he is not management, he's fine by m by EvilTwinSkippy · · Score: 2, Insightful
    You can have my berkies when you pull them off my cold lifeless feet!

    In a hundred years we will have software that does what a manager does today. But man will always need geeks. Yes, what is complex today is simple tomarrow. But tomarrow there will new complex problems to solve!

    --
    "Learning is not compulsory... neither is survival."
    --Dr.W.Edwards Deming
  89. So are you saying by JurgenThor · · Score: 0

    No one else would touch it 'cause it was tainted by Rational Rose and UML? ;-)

    --
    GENERAL PUBLIC SIGNATURE (GPS) Any replies (derivatives) of this post must also use the GPS
  90. Copyright problems by tepples · · Score: 1

    This is exactly what John Lions was trying to do with his commentary. And he used nothing less than the Unix kernel source code

    Many instructors with a knowledge of copyright law at least used to advise students to avoid these books. Problem is that these sorts of books tend to pollute readers with "access" (in the copyright sense) to copyrighted source code, such that if a programmer ever writes substantially similar source code, he could get sued.

    1. Re:Copyright problems by Anonymous Coward · · Score: 1, Informative

      The Lions' book (until fairly recently) wasn't even a real book. The reason was the copyright. A couple of years back, OldSCO actually allowed it to be published as a book.

  91. Re:As long as he is not management, he's fine by m by rollingcalf · · Score: 4, Insightful

    "The reason most geeks don't want to manage is simple..It is HARDER than coding."

    Management is not harder than coding per se. It is just harder for geeks whose talents and interests are more suited for coding. Most managers don't want to code, because for them it is HARDER than managing.

    --
    ---------
    There is inferior bacteria on the interior of your posterior.
  92. Re:"Fact", but still irrelevant by fishwallop · · Score: 1
    My approach to enforcing "coding standards" on my teams has been to hook a pretty-printer into the checkin routine. For most pairs this is a fairly straightforward operation. A second-level mechanical computation of metrics (e.g. lines-of-code per logical unit, number of paths through each subroutine) can also be used to enforce more semantic coding standards than a pretty-printer can manage.

    Code inspections may be useful for knowledge transfer, but they're a relatively expensive way of achieving that goal. Code should be written primarily to "speak" to someone who has to maintain the code later, not just for the control of the machine. A full-blown code inspection just so Coder B can take ownership from Coder A is overkill.

  93. Could be true... by presidentbeef · · Score: 0, Offtopic

    I mean, after all, 80% of all statistics are made up on the spot...

    --
    Everything I need to know about copyrights I learned from Slashdot.
    1. Re:Could be true... by Lifthrasir · · Score: 1

      34% of all people know that

      --
      No beer, no TV make Lifthrasir something something
  94. Re:As long as he is not management, he's fine by m by Anonymous Coward · · Score: 0

    However, the few programmers who are both capable and motivated to be in management really should aspire to do so, IMAO

    In my ass off?

  95. Re:As long as he is not management, he's fine by m by aastanna · · Score: 1

    If you were a coder in the "web area", how about some markup to make your message readable? Maybe a /> or a <p>?

    Sigh...managers :)

  96. Re:As long as he is not management, he's fine by m by georgewilliamherbert · · Score: 1
    Management is not harder than coding per se. It is just harder for geeks whose talents and interests are more suited for coding. Most managers don't want to code, because for them it is HARDER than managing.
    It appears to me that a larger segment of the base population can learn to code in an acceptable manner than can learn how to manage in an acceptable manner.

    Management concepts are very easy to understand... a semester equivalent's worth of reading will more than do. But they're really hard for most people to impliment.

    Particularly so for the sorts of people that generally end up in CS programs and/or selftought hackers, it seems. But that's completely ancedotal based on people I know.

    Getting results from a "Apply people to problem" problem is very different than getting results from "Apply myself to this problem". And knowing what problems to attack, from the "this business has to succeed" sense, is even harder.

  97. Re:As long as he is not management, he's fine by m by Anonymous Coward · · Score: 0

    > If he was in management, wouldn't he have more
    > influence which he could use to change things for
    > the better?

    Not necessarily. I was a team lead. My boss asked for an estimate. I got the estimate from the developer, seemed accurate. Got the "no way, do the same in half the time."

    So we went ahead and started the project. I think it finished up almost to the day originally specified by the developer.

    Being in management doesn't mean you can make a difference unless you have the power to change things, which at some companies means you have to be a VP or CTO.

  98. COBOL's great at what it does by RonBarr · · Score: 1

    - Manages records as a base data type well - Makes it simple to write readable code - Has nice control structures for large data sets It sucks at a lot of things (don't write a UI in it, for example!) but there isn't much better at traversing a database.

    1. Re:COBOL's great at what it does by 19thNervousBreakdown · · Score: 1

      RPG, bitch!

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
  99. Re:As long as he is not management, he's fine by m by BossTree · · Score: 1

    I think a distinction between management and leadership is worthwhile considering. I agree the programmer-manager duality is tough and there are few who can handle it. The programmer-leader can be tenable- the question then becomes whether the "ex"-programmer can recognize this and (as needed) bring in the 'management' as appropriate/needed. Caveat: I am now, after many bounces between "mgmt" and "technical" position, in a high-level management position, and therefore by I expect these comments to be modded-down. Sigh. However, there are many who would swear to my continuing geek-status. yes, I still code. As often as possible. Just don't tell my boss.

  100. Re:As long as he is not management, he's fine by m by twiddlingbits · · Score: 1

    Programmers..worried about format not content! :) Or maybe that's UI Designers who Programmers and Managers BOTH hate!

  101. Re:As long as he is not management, he's fine by m by Anonymous Coward · · Score: 0

    The dilbert principal in action... people who are too incompetent to do actual work become managers. =)

  102. Re:As long as he is not management, he's fine by m by Curunir_wolf · · Score: 1
    However, the few programmers who are both capable and motivated to be in management really should aspire to do so, IMAO In my ass off?

    Not funny. I beleive that would be "In My Arrogant Opinion".

    woot.

    --
    "Somebody has to do something. It's just incredibly pathetic it has to be us."
    --- Jerry Garcia
  103. Re:As long as he is not management, he's fine by m by Bush+Pig · · Score: 1

    I suspect that the mere act of doing a MBA will turn you into a PHB, despite your best efforts.

    --
    What a long, strange trip it's been.
  104. Re:Engineering? by MonMotha · · Score: 1

    There are a few schools which offer degrees in "Software Engineering". I happen to be a student at one of them (Rose-Hulman Institute of Technology), though I'm an EE and Computer Engineering (both out of the EE department), not CS or SE.

    The SE tracks tend to focus more on project development. Things like adhering to specifications and such. Basically, some of the same stuff that gets taught in EE engineering classes. Of course, they take some of the CS classes.

    "Fundamental" computer science is more math than engineering, though most schools (appropriately) teach a bit of both. Rose does this, though recently they have begun to separate more since the introduction of the software engineering degree.

    And yes, you can be a licensed professional engineer in software engineering. Donald Bagert, a professor of mine last year, was the first to bear that title in the US.

  105. Re:As long as he is not management, he's fine by m by Theatetus · · Score: 1
    I have been a coder for many years in embedded systems work, and also in the web area.

    *cough* sure *cough*

    "Hey, twiddlingbits, when you're through blowing that new forth system onto that prom, could you come look at this Cold Fusion template? It doesn't seem to connect to the database right..."

    --
    All's true that is mistrusted
  106. No by Theatetus · · Score: 1

    Prof made a rough statement, student called him out on it, prof. pointed out that there's no universal and objective way to measure "complexity" and that if you're worrying about the actual numbers he used you're missing the entire point of his statement.

    --
    All's true that is mistrusted
    1. Re:No by Oddly_Drac · · Score: 1

      "you're missing the entire point of his statement."

      That anyone can motorise the goalposts and he was always going to be right? Well done, that man. Learn anything useful?

      --
      Oddly Draconis
      Too cynical to live, too stubborn to die.
  107. How do you validate specs against the code? by Anonymous Coward · · Score: 0

    How does one validate the different specifications: requirements, functional, design, etc... against the code? If you write test cases using the specs as input to validate the code, then you still need to validate the test case code against the specs...

  108. Re:As long as he is not management, he's fine by m by plover · · Score: 1
    Oh, absolutely there's a distinction. But keep in mind that leading isn't nearly as hard as managing. If you're an expert in your field, you'll already have the respect of the people on your team. Then it's a simple matter of speaking up at the right time, and you're a leader. A leader can inspire the workers by example -- just by doing what they've always done, only more visibly.

    As you undoubtedly know, managing is all the drudge work. For those who don't think about it much, a manager has to schedule vacations, write reviews, hand out status reports to jittery managers of other projects, demand status reports of recalcitrant coders, praise the good guys and spank the bad ones who spend their mornings on Slashdot. They make up the on-call lists and have to listen to 50% of the people whine that they were on call last Christmas, so why did they get this Labor Day? Then, they have to memorize the handbooks that list the official columns of carrots and sticks. Somewhere in there they have to learn the technical lingo their employees toss around trying to explain their latest problems, they have to send flowers to the guy whose dad just died, and meet with half a dozen salesmen who promise to double staff productivity and end global warming if they'd just place their order. They have to keep their sense of humor, put up with crap from the arrogant technical staff, calm the neurotic director, and attend daily project meetings.

    Oh, and they have to buy their senior technical staff new PCs. I mean really. 1500MHz is a crap box these days for compiles of that many lines of code. Dual Xeons at the desktops would improve productivity by a lot, position your staff for the 64-bit OS to come, and don't skimp on the RAM, SATA RAID, or the graphics cards. Besides, those junky old PCs are depreciated already, just give them to the guys in accounting, they don't need anything more than that.

    Managing means keeping two dozen balls in the air simultaneously. It's not a glamour job. It's a sucky job. If you think your manager is overpaid, just think about that list above, realize that's only the visible portion of what your manager has to do, and then be really really glad it's not you.

    [ I can hear Aldous Huxley's Brave New Words echoing in my ears: "I'm glad I'm a Beta. Alphas have too many responsibilities..." ]

    --
    John
  109. CS/SE shortage, outsourcing is a overhyped myth by Anonymous Coward · · Score: 0

    RICHARDSON , Texas (Aug. 26, 2004) - The National Science Foundation (NSF) has awarded the Erik Jonsson School of Engineering and Computer Science at The University of Texas at Dallas (UTD) $385,000 to provide scholarships for talented, financially needy students studying software engineering (SE) and computer science (CS) to help alleviate a national shortage of high-tech workers.

    The grant, which is effective Sept. 1 and expires four years later, will fund 28 scholarships, with matching funding by the Jonsson School providing another seven - for a total of 35 scholarships.

    "The demand for highly trained software engineers and computer scientists far exceeds the supply," said Dr. Kang Zhang, associate professor in the Jonsson School's Department of Computer Science and primary investigator of the NSF-funded project. "The goal of the program is to recruit talented and financially needy students into our SE programs and produce highly skilled professionals who can join the industrial workforce or proceed to higher degrees in the field."

    Software engineers are responsible for designing and programming large-scale computer systems and applications.

    According to Dr. Bob Helms, dean of the Jonsson School, UTD is "highly qualified to help fill the nation's critical need for high-technology workers vital to the national economy." The school has long offered an M.S. degree in SE. Three years ago, it instituted one of the nation's first B.S. degrees in the field, and it recently started an SE doctoral degree program.

    In addition, Helms said, more than a quarter of the university's computer science faculty specializes in SE and related areas.

    Zhang said that he and his UTD colleagues will engage in joint recruitment efforts with community college districts in both Dallas County and Collin County to identify potential scholarship applicants, including those from under-represented groups - an effort he termed "a cornerstone" of the project.

    UTD will begin awarding the scholarships, primarily to undergraduate students, in the spring of 2005. Students who qualify will receive up to $3,125 a year and may renew the scholarship each year for up to four years, based on academic performance.

    UTD's Computer Science Department will implement a rigorous process to select and retain SE scholarship students, according to Dr. Gopal Gupta, a co-principle investigator on the project. It will include a full range of supporting services, assessment and evaluation procedures and opportunities for industrial internships.

    "We believe that these new scholarships will help promote and strengthen UTD's SE and CS programs, making them a model to be emulated nationally," Gupta said.

    Assisting Zhang and Gupta on the NSF project are a number of their colleagues from the Jonsson School - Dr. D. T. Huynh, Dr. Simeon Ntafos and Dr. Sook Kim, among others.

    About UTD

    The University of Texas at Dallas, located at the convergence of Richardson, Plano and Dallas in the heart of the complex of major multinational technology corporations known as the Telecom Corridor®, enrolls about 14,000 students. The school's freshman class traditionally stands at the forefront of Texas state universities in terms of average SAT scores. The university offers a broad assortment of bachelor's, master's and doctoral degree programs. For additional information about UTD, please visit the university's web site at www.utdallas.edu.

  110. Fact: by GrahamCox · · Score: 1

    87% of statistics simply made up on the spot.

    [Vic Reeves].

  111. Error removal most time consuming? by Vo0k · · Score: 0

    Mozilla developers can confirm! They spend 100% their time removing bugs!
    Example bugs (some resolved fixed):
    - Bounce command not implemented in MailNews
    - Progress bar should be displayed only when loading stuff
    - Download Manager unimplemented
    - Mozilla should include IRC client
    - "Sort bookmarks" missing
    - Add interface to unblock secure ports
    - Coffee machine on 2nd floor broken (old one, from Netscape times yet...)
    - Developer conference should be organised...

    --
    Anagram("United States of America") == "Dine out, taste a Mac, fries"
    1. Re:Error removal most time consuming? by julesh · · Score: 1

      Test based programming is an interesting approach. You write a specification of the program you want, create an empty file, compile it, and define the fact that it doesn't do what your spec said as a bug. Implement a test for some aspect of having fixed that bug ('cause that's what you do when you find a bug...) and then fix it. Now, determine other bugs (i.e. things your program should do but doesn't) and fix those in the same way.

  112. COBOL has fixed-point math - no other language... by Anonymous Coward · · Score: 0
    has that AFAIK. That's enough to make it irreplaceable for accounting applications.

    COBOL ought to be perfect for web apps and ought to have a bright future because it has fixed-point math and fixed-length strings, the first is a necessity (as described above) and the second is extremely efficient. But I don't believe the COBOL vendors have been aggressive about this market.

  113. Re:As long as he is not management, he's fine by m by Anonymous Coward · · Score: 0

    Ewww, what a revolting image. "Berkies" should be buried with their late owners.

  114. Re:As long as he is not management, he's fine by m by God!+Awful+2 · · Score: 2, Interesting

    Managing means keeping two dozen balls in the air simultaneously. It's not a glamour job. It's a sucky job. If you think your manager is overpaid, just think about that list above, realize that's only the visible portion of what your manager has to do, and then be really really glad it's not you.

    I'm a manager of a large department. I didn't ask to be promoted -- it was thrust upon me. Managing is 30% more work for 10% more pay. I stick with it mostly because it looks good on a resume. The most frustrating thing is being judged based on the performance of others.

    -a

  115. Re:As long as he is not management, he's fine by m by Anonymous Coward · · Score: 0
    Right now, I should be writing my MBA assignment, worth 25% of the subject, due in at midnight tommorrow, but instead I'm procrastinating on SlashDot. If that doesn't qualify me to be a geek manager, I don't know what does.

    It demonstrates that you lack the qualities to become any kind of manager. If you can't manage your own time well, you certainly shouldn't be allowed to manage other people's.

  116. Re:As long as he is not management, he's fine by m by Anonymous Coward · · Score: 0

    You forgot managing budgets, budget requests and making capital expenditure requests, making business justifications for buying Oracle instead of MySQL for the corporate F&A database, etc.

  117. No shit Batman. by jotaeleemeese · · Score: 1

    And how do you document complex interactions in complex projects needing tens or even hundreds of programmers?

    Post-it notes and badly written pseudo-code?

    Software is complex (testament to it is how we accept with buggy sofware that is normally just good enough to fullfil its purpose) and any pretense on the contrary is wholly clueless and uninformed.

    --
    IANAL but write like a drunk one.
  118. Utter rubish. by jotaeleemeese · · Score: 2, Interesting

    If you had the bad luck to have been thought by lazy sociopaths you have our deepest simpathy but not necessarliy our support in your derogatory blanket generalizations.

    Many of the advances in computer sciences that have made life easier for many people in the IT industries come from people in the academic field.

    Obviously you don't understand the demands of a teaching position. You have to prepare tha class, grade the students, keep up to date in the cutting edge and then deal with complete idiots that believe they know it all because have a bit of working experience when in reality lack the most fundamental foundations in computing.

    But of course since you seem to be such a brilliant star in the IT firmament, surely have a better solution to the time tested teaching system followed in most places around the world which will free the brightest minds in our classrooms from the tyranny of the teachers.

    Why should the young listen respectfully, why age, experience and insight should be held on any respect whatsoever if the youngs minds will lead ud to an era of prosperity, abundancy and progress. Like they did during the dot com era for example.

    --
    IANAL but write like a drunk one.
    1. Re:Utter rubish. by crazyphilman · · Score: 1

      Well! Looks like I touched a nerve.

      Touche for me!

      Booga booga booga!

      --
      Farewell! It's been a fine buncha years!
  119. Re:As long as he is not management, he's fine by m by ultranova · · Score: 1

    making business justifications for buying Oracle instead of MySQL for the corporate F&A database

    If you have trouble coming up with justifications for spending company money, then you might want to review your decision - it just might be wrong.

    Or, in this specific case, you could just sidestep the whole problem and get PostgreSQL instead.

    --

    Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

  120. Fact 1 by Lonewolf666 · · Score: 1

    Fact 1: The most important factor in software work is not the tools or techniques used by the programmers, but rather the quality of the programmers themselves.

    A really good programmer knows which of his tools and techniques are appropriate for the problem at hand. A few simple examples:

    -Spaghetti code has its place in small experiments. The sort you hack up in a few hours and might throw away afterwards.
    -Object-oriented programming will help you to keep large projects organized.
    -Scripts are fine for small tasks, but don't expect them to have great performance.

    Of course, there may be the problem that your pointy-haired boss insists on $LatestHypeTechnique. But otherwise, competent people will choose the right tools on their own.

    --
    C - the footgun of programming languages
  121. Social Engineering by militiaMan · · Score: 1

    "under-represented groups - an effort he termed "a cornerstone" of the project." I was denied equal access to higher education while the Fascist police state continues to help the so-called under-represented. Your racism, sexism, and other discrimination will only come back on your heads. The economy is getting worse and worse, and you want to continue playing fascism, socialism, communism, racism, sexism, class warfare, and other social engineering cards to get what you want. Screw you. You social engineering scum bag. I worked for my education, and now it has no value in the U.S. just like the original poster said. Bush has sown the seeds of revolution.

  122. Re:As long as he is not management, he's fine by m by gadget+junkie · · Score: 1

    I am not strictly a geek, but in my field of knowledge (money management) the same problem exists; and I have my reservations about the ability of geeks to occupy PHB's places.

    1. first off, motivations define the people; the very act of becoming a geek, or more appropriately a person that defines himself by the quality of his professional work, is the willingness and the ability to be rigorous AGAINST YOURSELF in a trial and error process. you do not become one if you play the blame game. a PHB doesn't start anything if he doesn't know where eventually the blame will lie ( in management speak "an exit route").

    2.for any pro, the equation Effort---> Results must remain valid at all times. A geek could stay up all night programming, but if it is one of those days when nothing good comes out of the grey matter, the urge to do anything else is a dominating factor. for a PHB effort is the end, not a mean to an end; he must be SEEN SWEATING at all times. incidentally, this lack of "creative Laziness" makes the higher up actively opposed to any productivity enhancing idea (...if we use gadget XYZ, we'll do the same job better in less time".... "oh, but then people wuold work less, that's unethical!!")

    3. a geek in management would probably pay to go back where he belongs, if only because there's what I call a "farmers' factor" in line work. If you plow a furrow and then look back, you're able to see the job done; if you're in management, and you are accustomed to see what you're doing, you'll be deranged shortly.

    4. if, by some quirk of fate, a geek or pro could make it to the valhalla of management, he would wield a mean axe all too soon. the instinct to question the validity of solutions, to trial and error would probably send him to an unexpected finding: all organizations have way too many managers for the amount of work managed. In addition, whenever the managers have seminal choices to do, their accuracy approssimates a random function. In all fairness that's probably because there's not enough info to make a sound decision, but if that's the case, back to the axe.

    oh, another thing. it 's funny that "golf buddying" is part of the selection process: in golf, you do not have anyone to blame but yourself.

    --
    "If a boss demands loyalty, give him integrity. But if he demands integrity, give him loyalty." (John Boyd, 1927-1997)
  123. Re:As long as he is not management, he's fine by m by Anonymous Coward · · Score: 0
    Many are extremely introverted and have trouble speaking up among their peers

    Funny how my company has almost none of those. Most of our programmers are very vocal, in front of their peers as well as managers...

  124. Re:As long as he is not management, he's fine by m by NovaX · · Score: 1

    The only way to make management fun for those types of people is to show how a good engineer is like a good manager. Both are jobs where creativity, design, and a deep understanding of the field are necessary. Of course there are horrible ones in both fields, most are in each for the money not by interest.

    For example, you can view an organization's strategy the same way you view a product's design. Developers create UML to think through the design of their program and then to communicate it to others. Its not heavy on implementation details. Managers map their strategy using the Balanced Scorecard approach. Both have some details set. Where classes might have data elements defined, scorecards have measures. Above all, they were designed to somehow fulfill a vision.

    If you leverage the creative side of an engineer, then business is fun. Its all about presentation.

    --

    "Open Source?" - Press any key to continue
  125. Obligatory quotation... by Burb · · Score: 1
    95.3% of statistics are made up on the spot.

    Vic Reeves, I believe

    --

    1. Re:Obligatory quotation... by johnnyb · · Score: 1

      85% of those are more accurate than the ones done scientifically (this is probably true, because of the lack of due diligence on the people who come up with statistics).

  126. Re:As long as he is not management, he's fine by m by Dabido · · Score: 1

    WE NEED MORE GEEKS IN MANAGEMENT

    The only manager I worked under who was any good, the provebial "enlightened manager", had risen from the geek ranks. However, he was pretty much trained to be a good manager. He had previously worked for EDS who invested a heap of cash in his management training, and it really paid off.

    Other managers I know who rose up from the geek ranks, usually lack the people skills to actually be effective managers. Quite often they think they know technology so well, that they also can't see past their own ego.

    The worst IT managers though, were the ones who had no idea about technology, and constantly made major faux pas almost every day due to their lack of understanding of what was realy needed. Their interpersonal skills also deteriorated. When they first start in IT management, they have the people skills, but as their stupid ideas get more and more resistance, they begin to feel that there is some sort of mutiny on and become rigid dictators who threaten people with sackings if they do not perform their stupid requests.

    I've seen these sorts of managers ruin entire IT departments. Especially if they have come from accounting backgrounds, where they only care about the bottom line, and ignore people and good work practices in order to get things done.

    The last place I worked, they removed the IT manager who had come from a geek background, because he opposed them for attempting illegal shortcuts (like removing security). He was replaced by an accountant who used to demand the other managers be 'yes men' to whatever ideas were past down from above.

    The last straw for me was when they asked me to set it up so that they could send scanned checks with peoples bank details across the internet UNENCRYPTED. Quite illegal, and quite stoooopid. It resulted in a nasty battle with lawyers and HR involved, and the company was forced to give in.

    This was in spite of the fact, that we had a private WAN which sent those scanned checks for free ... and some accountant thought it would save money to send them via the internet which actualyl costs us fees to up-load and down-load what they wanted to send. No matter how many times we tried to tell management it was MORE EXPENSIVE to send stuff over the internet, they refused to believe it cost money, because they thought the internet was some big Free thing that everyone on the planet could connect to without cost.

    So, it would be nice to see more geeks get into management, but only after they have had extensive traininh in managing people OR if they grab the manager from outside of IT, they need to ensure they get a good understanding of what IT is, and how it works.

    Another good example of where non-IT managers fell down, was when I was a System Admin. Manaement insisted I give the root password to two guys who didn't need it, just because they convinced management that they couldn't do their jobs without it. Management couldn't explain to me why these guys couldn't do their jobs without it, but I still had to inform them whenever I changed the root password, or else I was going to get sacked. I was so glad whenI moved positions, because the security for those machines was impossible. One of those idiots blew away the i-node to the password file when he was trying to hack peoples passwords. The idiot. That was a tough day for me .. but do you think management would take the root password off tem after that? Nope!

    Just my two cents worth. :-)

    Mainichi onaji kotono kurikaeshi.

    --
    Sure enough, the cow costume was hanging up next to the superhero outfit and sailors uniform. (S,Spud)
  127. Managing is easier. by nibelung · · Score: 1
    Managing is easier really. It takes many many years to become an excellent programmer. I have been programming for 19 years and i am still worried about not knowing enough.

    I have also been managing a group of 10 programmers for a few years, and in fact i appear to be doing a good job (on target for cost, quality and time; what more do you want?). To achieve this i needed 3 weeks of management training.

    Recently i went back to programming. Why? Because it is more challenging (hey, isn't that ironic?) and it pays better to be a good programmer (and isn't that unexpected?). Being a manager is not hard, but it's a misserable job, mostly because other managers appear to like making life difficult for eachother. The only advantage it has is that it pays well compared to other misserable jobs. Maybe management is interesting if you are really free to make your own choices, but you will only that get if you can start your own company without needing 'intrusive' financing.

    1. Re:Managing is easier. by twiddlingbits · · Score: 1

      Congrats on your success! I would say you are the exception rather than the rule. Plus you were given training which many times is not available or not given for "cost" reasons. Former programmers are asked to manage without being given the skills, which leads to problems. From what I have seen Management probably pays a bit LESS than some Senior Tech Roles like Architect but more than just developers. It all depends on where the company wishes to place the emphasis and spend the money. If you work at a company where all the other managers are "empire building" and there are silos meaning no cross functional teamwork, that truly does suck. But there are other places that do better, I would be looking for another job, no one needs that kind of crap.

    2. Re:Managing is easier. by chris_mahan · · Score: 1

      /me ducks.

      I personally think that women are better at managing than men, in general.

      Before you get all puffed up, I said: "I personally think", and "in general".

      I also think that they are better at managing geeks, because of the innate fear of women that most geek have. Geeks are gentlemen at heart, and will traditionally be less jerks to women than jocks.

      Plus, I personally like women managers better, because they are generally more organized and better at diplomacy (telling you no in a nice way).

      --

      "Piter, too, is dead."

  128. Show me the code by joss · · Score: 1

    I am straining my suspension of disbelief circuits here.

    Do you have an example of any working software that acutally does anything ? How about a description of how to achieve a specific task eg, how would you sort some numbers into ascending order using this methodology ?

    Or, is this just some kind of elaborate joke ?

    --
    http://rareformnewmedia.com/
  129. Re:As long as he is not management, he's fine by m by nibelung · · Score: 2, Insightful
    I am an experienced programmer and i've been doing management for a few years. I don't quite agree...

    They are exactly the sort of management that the industry needs, will likely encounter great success, and could serve as beneficial trend setters.

    I agree with the first and last part of that sentence, but not the middle part. If you do your job well, no higher manager will ever notice. Only if you allow a big fuck-up to occur and then rescue the project, but that's not being very professional is it? Can you explain how you think these kind of managers will likely encounter great success?

  130. Re:Engineering? by hughk · · Score: 1

    In much of central europe, the term engineer is "protected" much like that of "Dr". If I had studied for a diploma in engineering in Germany, I would be entitled to prefix my name with "Dipl. Ing. ". Such a qualification requires about 12 semesters studying at University (6 years) or an equivalent level insitution. It doesn't matter whether the subject is trains, or software - the title is protected.

    --
    See my journal, I write things there
  131. SCO by RAMMS+EIN · · Score: 1
    From the linked page:


    [NOTE--- As of May 13, 2000, SCO is giving away free source licenses of UNIX 6th Edition (binaries were previously available)!! Thanks are due to both SCO and the PDP Unix Preservation Society.


    It's grieving to see how SCO has changed since then...
    --
    Please correct me if I got my facts wrong.
  132. Re:Engineering? by Anonymous Coward · · Score: 0

    In some languages, there is no confusion in that matter, as the word for engine has no resemblance to the wor for engineer.

    In Portuguese (spanish and french may be similar):
    engenho: wit
    engenheiro: engineer
    no confusion, duh
    Like in so many cases, the same word has different meanings, and different origins.

  133. Re:Engineering? by Oligonicella · · Score: 1

    This forum ain't in Europe, son. It's international. Too bad.

  134. Re:As long as he is not management, he's fine by m by ph1ll · · Score: 1
    Can we please get away from the stereotype of programmers being more unorganised/uncommunicative/introverted than other people?

    Sure, some are. But I've known some managers who were too. (The reason such people climbed the corporate greasy pole was they had a reasonable degree of sociopathy).

    Saying that programmers are schizoids is like saying executives are dumb, greedy crooks. Sure, some are, but the majority are not.

    Most programmers I know are urbane, intellectual and have bags of common sense.

    I'm amazed that we still tolerate programmer stereotypes when it is illegal in the work place to make derogatory comments on other peoples' racial/sexual/religious persuasions.

    --
    --- "We've always been at war with Eastasia."
  135. Re:Engineering? by ZigMonty · · Score: 1

    An EE course that doesn't involve programming? Strange. I'm an EE student and we have to do quite a few CS subjects. And you know what? The CS subjects are the easiest i do. The hardware stuff (circuits, gates, microprocessor design, etc) is way harder. I'll never complain about assembler again.

  136. Obviously the book doesn't address Lisp by brlewis · · Score: 1

    If the author had used Lisp, he wouldn't have written that a 25% increase in the complexity of the problem results in a 100% increase in the complexity of the solution.

    He also wouldn't have written that quality tools/techniques aren't important. Quality programmers will spend a large chunk of the lifecycle choosing and/or developing appropriate tools/techniques to attack the problem.

  137. COBOL: Still Relevant After All These Years by JCOTTON · · Score: 0

    Others have said it better than me. See Still Relevant and There's Gold in Them Thar COBOL Skills . For some "true facts" on COBOL, see What Professionals think of the Future of COBOL? .

  138. This is why C sucks by JCOTTON · · Score: 0

    Just as an example off the top of my head, it's common to write if (condition = immediate) ...

    Need I say more? C and C++ is full of these. Was there any "code review" when C was designed? I think not. C++? Negatory. Both were designed by some geek or group of geeks, with very little contact with the real world. IMHO.

  139. Huge development teams don't work by Rick+Genter · · Score: 1
    And how do you document complex interactions in complex projects needing tens or even hundreds of programmers?


    You can't. Any software project that requires tens or hundreds of programmers is doomed to failure.

    All successful software projects have been developed by small teams, regardless of the size or complexity of the project. Large teams tend to run into the "Mythical Man Month" effect.

    One example I can think of: Cisco's IOS. Three years ago, when I attended an executive briefing at Cisco in San Jose, I was told that Cisco had 3,500 engineers working on IOS. Yes, some of those are QA engineers, not writing code but instead developing test cases. Yes, IOS consists of many programs running on a real-time kernel, just as "Linux" consists of hundreds of user-space programs running on the kernel. However, most of those Linux programs are orthogonal in nature: if vi blows up, it's not going to take gcc, cupsd and Quake with it ;-). In IOS, on the other hand, the programs tend to interact with each other, resulting in a MUCH higher level of complexity.

    The briefing I attended was to address the issue of trying to get a "stable" IOS release out of Cisco. I was working for an ITSP at the time, and we had hundreds of Cisco 5300 H.323 gateways deployed around the world. We were desparately trying to deploy new functionality, but were unable to get a stable IOS release out of Cisco; every time they'd release a patch, it would break something else. After 18 months we still hadn't received a stable release, thus the briefing.

    At the briefing, Cisco recognized that they had a problem. They showed us graphs of defect rates over time by release, talked about internal initiatives to address their perceived quality issues, and introduced us to their new head of software development, who promised to clean up the whole mess.

    A year later, the situation had not improved, and shortly thereafter they had yet another new head of software development.

    From my perspective (software engineer with 20+ years experience), the problem is simple: they have too many engineers working on too old a code base. The only solution for them is to start a "skunkworks" project with a small team to re-architect, re-design and re-implement the entire thing from scratch. Until Cisco takes this approach, IOS will continue to suffer from stability issues and ridiculously long lead times for new features.

    I don't mean to pick on Cisco specifically; I'm sure that every large software development organization has the same issues, and for all I know, in the two years that have passed since the last time I dealt with Cisco's development organization, things may have improved (but I doubt it). Cisco just happens to be one that I'm familiar with.
    --
    Don't underestimate the power of The Source
  140. Re:As long as he is not management, he's fine by m by AyeAyeAye · · Score: 1

    > I like to think that, a skilled engineer could learn to be a skilled manager in under 12 months, but a skilled manager, could only become a skilled engineer in 12 years :)

    And then you wonder why so many managers suck!
    90% of the managers most people on this thread blast started as managers thinking just what you think.

    See, just too many tech people think they can easily switch to mgmt and be good at it in a year or so. I've done mgmt for 10 years now. Along the years I've prepared a hell of a lot for it and I'm still learning it. What makes you an ok manager can be read in books. But unlike technical work, what makes you a really good manager can't be found in books. It takes a lot of time, requires that you live through a lot of varied situations, and takes an awful lot of introspection which starts with willingness to do so.

    Do all your peers a favor, keep coding.

  141. Hmm, how about THIS fallacy? by gosand · · Score: 2, Insightful
    I am curious if he addresses the fallacy of "Software development only consists of programmers".

    I have been doing QA/Testing for 10 years, and it is pretty sad how all-important people think programmers are. The best ones may be, but they aren't all the best ones. When you foster an atmosphere where "develpment is always right" you run into major roadblocks in software development. Requirements analysts can't do their job properly or requirements are ignored. Documentation people are glared at for trying to make the system understandable. (yet we all love to bitch about bad online documentation) Test people are seen as people who are just blocking the inevitablility of shipping the code. If anyone tries to even analyze why things are F'd up, they are seen as "not being team players" and "finger pointers", even if you are trying to fix the process and not the people.

    I will say that what he says about inspections is right on. Although, I think just focusing only on code reviews is wrong - rigorous reviews of requirements/code/test plans/process docs/user doc/etc will remove 90% of the defects. And defects in requirements are much more costly to fix later. The trick is balancing which of these are most important for your company to review, depending on the project. You can't just do it willy-nilly, you have to do a risk assessment on it and make a decision based on something.

    I actually had a director of engineering say in a meeting "Since we implemented my new requirements management process, I *guarantee* that the code will work, first time, out of the box." I laughed out loud, and received a very dirty look from him, but agreement from everyone else. Needless to say, that release is the worst one we have had in 5 years, and it is at least 6 months over schedule. People have had to work a lot of OT to try and shine this turd, and they are getting burnt out. Most places do software development and not software engineering. Which is fine, as long as you are clear about it.

    I just thought of a very good analogy that /.ers can understand. There is probably little doubt that Microsoft has a lot of good programmers. However, their culture and business model has lead the direction of their product. That alone should show you that software development is not all about the programmer. On the other hand, OSS is great but it can only get so far on "good code". Once it is managed, it can be pretty powerful.

    --

    My beliefs do not require that you agree with them.

    1. Re:Hmm, how about THIS fallacy? by MikeBabcock · · Score: 1

      This is especially true in OSS where quite often the programmer *can* (and does) completely ignore volunteer Q/A people if those people aren't themselves programmers.

      I respect Linus a lot, but if I hear him say "show me the code" one more time I might stroke.

      I understand what he means -- ideas are useless to him for review without code. And sometimes, he's actually saying that the idea looks great but would suck if implemented in C, so try it and find out for yourself.

      However, a lot of times it just means that people are too busy and can't be bothered to think about changing how they do things because a non-programmer said so.

      I happen to write software for a living; I write many many lines of code in several languages every day, and yet I've received dozens of "show me the code" responses to intelligent suggestions from OSS developpers in spite of my experience.

      And no, I don't have time to flesh out all my observations in actual working code. There are lots of code monkeys out there who have the time and don't spend 10+ hours a day writing code for a living already who could use the intelligent suggestions of their peers constructively instead of always depending on the experienced people to do it themselves (and yes, this too is an angle of why Linus says what he says).

      --
      - Michael T. Babcock (Yes, I blog)
    2. Re:Hmm, how about THIS fallacy? by gosand · · Score: 1
      This is especially true in OSS where quite often the programmer *can* (and does) completely ignore volunteer Q/A people if those people aren't themselves programmers.

      Just to clear it up for the masses who might read this: QA stands for Quality Assurance. In a strict sense, it is not testing. I know, I know - a lot of people call testing QA. But in an engineering sense, QA is not testing at all! QA is doing statistical analysis, it is ensuring adherence to and improvement of processes. It is getting involved and looking at the product from a quality perspective.

      And Q/A means question and answer, which a lot of QA people do, but they aren't the same thing. :-)

      --

      My beliefs do not require that you agree with them.

  142. Re:As long as he is not management, he's fine by m by qwijibo · · Score: 1

    Those are some very good observations.

    I can relate to the randomness of mangement you make in point 4. When our manager was out, we would flip a coin to make management decisions. Heads is inefficient solution, tails is approach that cannot possibly work, edge was the solution we were supporting, and dangling in the air indefinitely was no decision. Aside from aversion to decision, which was 80% of what our manager would do, the heads/tails/edge options approximated the 20% of decisions actually made.

    Maybe there is something to golf in management. They choose a sport where they are solely responsible for their own outcome for their free time and choose to take no responsibility for their own actions professionally. Perhaps geeks are not as "complex" as PHB's - we have a hard time doing the constant context switching between the double standards.

  143. Re:"Fact", but still irrelevant by justin_beetle · · Score: 1

    How does debugging not cost money now? I've seen the problem broken down as this before: Any non-trivial piece of software will at least 100 different inputs (in bits) which will result in at least 2^100 test cases.

    Checking all possibilities to fully debug the program would then be a matter of checking 2^100 test cases. That would not only be extremely costly, it's not possible in a reasonable amount of time. Debugging is important too, but since you can't fully debug a program you want to take other measures as well.

  144. Re:As long as he is not management, he's fine by m by edremy · · Score: 1
    Actually, you've got it exactly backwards.

    There's no way in hell that software is going to replace a good manager, not now, not in 100 years. Good management is all about people skills, understanding the interactions and politics in a workplace, keeping your workers happy and motivated, etc. Computers can't even understand simple written text, despite 40 years of AI work into doing just that- there's no way they could handle a good manager's job. (I insert good there a lot- computers could duplicate a PHB pretty well)

    Typical "geek" stuff, on the other hand, gets easier every day. People used to joke about trying to record something on a VCR- now we have Tivos. Programming used to involve hex dumps- now you can buy totally visual, drag+drop programming environments. Yes, there will always be complex problems, but the ability of easy-to-use tools to do those complex problems is increasing rapidly. (Although I don't see a computer understanding human speech coming any time soon- see above :^)

    --
    "Seven Deadly Sins? I thought it was a to-do list!"
  145. Absolutely justified "opinions" become facts. by Chemisor · · Score: 1

    > You're not going to "prove" any opinion. Opinions have no true/false status.

    Only if you have no absolute standards. A statement "COBOL is a bad language" can be a fact if all its terms are explicitly defined. For example, if one were to define a bad language as "a language lacking support for modular design and interfaces", then "COBOL is a bad language" becomes a fact because it is logically derived from provably real premises. Logic is a method of ensuring your statements correspond to reality, and a logically proven statement is a fact because no matter how many people have different opinions, it is still true. Of course, the hard part is creating the real premise chain. You have to define what makes a language bad or good, explicitly explain why the traits that make it good are the only ways of making it good, and then finally prove that COBOL lacks those traits.

    > I just get itchy when people think that because THEY think something, it must be a fact

    And you are correct. An opinion does not become a fact just because you feel it is right. It becomes a fact only if you can logically prove it to be right, because then its veracity is independent of how you feel about it and of how other people may feel about it.

  146. Re:As long as he is not management, he's fine by m by twiddlingbits · · Score: 1

    Shows how much you know. Forth is NOT used in embedded systems,C/C++, Ada, Assembler, some Java. And I've never worked in Cold Fusion..not everyone has used every tool. Ad hominen attacks are not going to get you any mod points. Crawl back under your rock.

  147. Re:As long as he is not management, he's fine by m by johnnyb · · Score: 1

    One of the problems w/ today's programmers is that they don't have the theoretical knowledge to understand why MySQL might not be the best thing to use instead of Oracle, and why PostgreSQL is a much better fit.

    Likewise, many of them are opting not to learn assembly language, and are winding up not knowing how computers actually work. It's very frustrating.

    On top of that, few programmers know of even the leaps that computer science made in the 60's, and are still using the state-of-the-art from the 50's. That's great if you know the difference, but if it's because you just aren't aware of it then there's a problem. Things like closures, continuations, hygienic macros, languages w/ better type systems, multimethods, ambiguous values, and lazy evaluation just to name a few. The fact that a language w/ a garbage collector was seen as a huge improvement in the 90s showed just how far behind we were.

    A lot of programmers start off in a tiny little area and never even peer to see what might be beyond the horizon. How many Windows programmers even know what a regular expression is? How many C/C++ programmers know that they can have garbage collection _in_ C/C++? How many people have had to implement logic processing in a language that just wasn't well-suited to it, just because they didn't know the languages that were better?

    I see this happen all the time, and it's very frustrating. Some software houses, in an entire staff, do not have anyone who looks above the day-to-day grind to see what else might be out there.

  148. Not at all. by Digital_Quartz · · Score: 2, Insightful
    A code review on "90% debugged" software that finds an error strikes me as more useful than a code review that finds several errors in 0% debugged software.

    That may be what your intuition tells you, but you're wrong. That is the most expensive way to debug software.

    When you find a defect in code inspect, you have your finger on it. You know exactly which line of code is faulty, and you know how it is faulty. Fixing it is trivial.

    When you find a defect in unit test, you know which subsystem is at fault, but you may have to spend some time digging around to find the acutal problem and fix it.

    When you find a defect in system test, you may not know anything about it. Your problem could exist anywhere inside your system, and it may take considerable time to track it down.

    This is born out by statistics. In my particular large-nameless-software-company, we spend, on average, about an hour to fix a defect found in code inspect, about 1-2 days to fix a defect found in unit test, and about 3-4 days to fix a defect found in system test.

    If I have 100 defects to remove, I'd rather spend 100 hours fixing them, than 400 days.

    It's also much faster and easier to find defects in code inspect than in unit test or system test. You spend less effort to find a defect in code inpsect than you do in unit test.

    Ideally, though, you want to remove your defects long before code inspect, in design inpections and requirements inspections. They are an order of magnitude cheaper yet to find in these stages.

    System test, by the way, should never be used as a tool to remove defects. It is a method for verifying the quality of a system. Verify is an important word there. If you test your system, and your rate of defect discovery (vs. effort) is high, it is because your system is of very poor quality. If it is low, it is because your system is of very high quality. Either way, any "reasonable" ammount of system test effort will find a small fraction of the defects in your system. You should still fix any defects you find, of course, but if you find a lot, you're in trouble, and extra testing won't get you out of it.

  149. Re:As long as he is not management, he's fine by m by chris_mahan · · Score: 1

    >Good management is all about people skills

    Exactly, which is why I contend that geeks are probably the least fitted for the task.

    > Typical "geek" stuff, on the other hand, gets easier every day

    I wouldn't be so sure. Ask the guys who are porting python to the .NET platform. There ain't nuthin easy there.

    --

    "Piter, too, is dead."

  150. Re:As long as he is not management, he's fine by m by Theatetus · · Score: 1
    Forth is NOT used in embedded systems

    I think that statement speaks for itself.

    --
    All's true that is mistrusted
  151. Re:As long as he is not management, he's fine by m by plover · · Score: 1
    [ warning: pop psychology 101 ahead ]

    Perhaps because when our large company had everyone taking the Meyers Briggs Personality Inventory back in the late '90s, we saw a hugely disproportionate share of introverts among the programming staff? Or perhaps it's simply because introverts tend to avoid management positions, since interacting with people is not high on their list of "things they enjoy doing"?

    You fall back on anectodal "evidence" that suggests your experience of hanging around with extroverted people is somehow related to their profession, when it's much more likely you hang around extroverts because you're an extrovert yourself, and you hang around programmers because you're a programmer. Those are two separate affinities -- don't get them confused just because you share both of them.

    Finally, I never called programmers "schizoid" -- you made that up from whole cloth. I also never said introverts don't have "bags of common sense", nor did I say they weren't intellectual. Common sense and introversion are unrelated. You apparently are having very a hard time distinguishing introversion from a mental disorder, and seem to either be afraid of introverts, have a distate for them, or simply make no effort to understand them.

    My suggestion to you is to quit whining "stereotype, stereotype" just because someone recognized a cause and effect relationship that happens to involve people. In the field of biology, recognizing cause and effect among life forms is often called "research." That, and get out there and encourage a few shy people in some way. You seem outgoing enough, you'll probably do both of yourselves some good.

    --
    John
  152. Re:As long as he is not management, he's fine by m by Anonymous Coward · · Score: 0

    Yes, management is a skill that can be learned

    You're right about that. It's nothing but a skill surely can be learned easily, and it involves doing nothing.
    It certainly is not a science, as many would like to believe. Just as economy, psychology and a lot of other vague... hm... activities.

    Remember who we have to thank for the internet bubble. Do assumptions like "With internet we'll get all rich" and "Profits can be doubled each year".

  153. Re:As long as he is not management, he's fine by m by twiddlingbits · · Score: 1

    Here is what I know about Forth...it's OLD, it was a custom language developed for use in Astronomy in the 1960's(telescope controls I think). It did become a standard, but it has really fallen out of favor. Based on my experiences I'd say it might have 1-2% of the market. It's a lot like Perl in that is has a funky syntax. It was used in some UNIX boxes as part of the Boot ROM. Perhaps there are some niche areas it is used today (industrial controllers?) but its not common at all. So Mr Expert...can you tell me which OSes are most commonly used in embedded systems, and the difference between Windows CE and Windows? Can you code the same thing in Ada/Ada95/C/C++ and tell me which one will use less memory and run faster? What is the difference between the Motorola Memory Architecture and Intel? Describe the VWE Systems Architecture? What is FibreChannel? What is BigEndian? What's the Carry Bit? What gets pushed on the stack in a context switch? Why? What's a protected section? Why are they used? What is a NMI? What is rate monotonic tasking? What is priority inversion? What's a semaphore? How many types can you name? What's DOD-STD-2167A? Ever written PL/M? Can you hand optimize compiler generated assembler? Do you have software flying in front line fighter systems? In space? Ever seen a mega-million dollar defense project cancelled based on your word the software was screwed up and wouldnt work? Answer these questions and you'll have my respect, attack my credibility and you are only going to incur my disdain. I'm done with this thread..I got a lot better things to do with my time.

  154. Re:As long as he is not management, he's fine by m by plover · · Score: 1
    This is very insightful, and I see that all over here. I imagine it takes place everywhere.

    The problem in a business shop is that everyone has a day job -- crank out this code. Like most people, we'll continue to do things the same old way until someone shows us different. For example, in the early '90s when we began the migration of our business product to a Windows based platform, most of us had only briefly encountered object orientation in books and magazine articles (those of us who bothered to keep up with the trade publications, that is.) At that early time (for us), it was difficult to distinguish object oriented programming from any of the other programming "fads" of the day. For example, at that time management still thought code generators would be the magic bullet, and placed little emphasis on learning the new object oriented languages. They did not provide any encouragement to any of us to move forward professionally (although some of us did on our own, anyway.)

    Recently, we brought in a consultant to help us with a large refactoring effort. I learned so much about agile programming (and not so much about refactoring) that I'm trying to figure out how to take a six-month sabbatical to go code on an agile team somewhere else just for the experience. It was really an eye-opener for me, and I think if I knew more about it, or experienced it first hand, I'd love to get it in house. More than anything, the consultant reopened my eyes to seeing what else is going on out there, over and above the daily grind.

    But that's not the common viewpoint of many of the developers -- they just want to come in, write their code, and then go home to play softball or drink beer. It's not that they're opposed to learning a new methodology or technology, they simply aren't interested in personally learning that subject and then bringing those ideas in house. They see no payoff in learning assembler, or what an IP stack is, or why it's written that way, and so they don't put the effort into it. Even though they can look to the people who have that knowledge and see how successful they are, they don't often take that initiative upon themselves.

    But what's ultimately most frustrating to me is our primary software vendor partner is just as old school as anyone else I can think of. We're talking "let's write our own string library because we're ignorant of the std::string library" kind of old school. (I mean, the old saw that writing your own string class is one of the stages every newbie passes through is now 10 years old.) The reason I'm so frustrated is that they're "outside" of our daily grind, so theoretically they should be exposed to methodologies from dozens of other clients. I originally expected us to get "modern" thinking out of them, but we've ended up driving more change in their organization than they've given us.

    --
    John
  155. Oh... by Theatetus · · Score: 1

    You consider Windows CE real "embedded systems" work. I understand now.

    --
    All's true that is mistrusted
  156. You're probably thinking of Churchill's quote by Merk · · Score: 1
    Many forms of Government have been tried, and will be tried in this world of sin and woe. No one pretends that democracy is perfect or all-wise. Indeed, it has been said that democracy is the worst form of government except all those other forms that have been tried from time to time.

    It's not capitalism, and it's not that it's the worst there could be, it's just that it's the worst that has been tried so far. So don't give up, better alternatives to democracy do exist. Someday people will look back on democracy the same way they now look back on trepanning and COBOL.

  157. Re:As long as he is not management, he's fine by m by Anonymous Coward · · Score: 0
    Programmers..worried about format not content! :)

    heressomefuckingcontentforyadumbass.

  158. Re: Fixed point math by ChrisMaple · · Score: 1

    PL/I has a fixed-point format, according to the ANSI standard. I've read that there are fixed-point extensions to C. And although I don't know it for a fact, I assume someone has written a fixed-point class for C++. 18 years ago, my employer wrote fixed-point routines for Turbo Pascal, by carefully handling the real datatype (or whatever Pascal calls it. Not the best approach, but adequate.)

    --
    Contribute to civilization: ari.aynrand.org/donate
  159. Re:As long as he is not management, he's fine by m by Anonymous Coward · · Score: 0


    " Almost all the people I know who have become successful managers have never been real programmers"


    Because of people like you it's that most projects fail. Don't talk about succes here!

    People in management don't have a clue whatsoever of what is going on in their company, what product their selling, are managing and always have overbloated expectations.

    Just like the economists rule "revenues must double each year"!!!!!!!!!!!!!!!!!

  160. simple programming trick by Bluedove · · Score: 1

    Just as an example off the top of my head, it's common to write
    if (condition = immediate) ...

    On a similiar note, things like
    if (pointer = NULL) ...
    always used to find its way into my code by lazy fingers not typing "==". A friend showed me a trick to have the compiler complain and catch this bug. Simply put the constant first, i.e.:
    if (NULL = pointer) ...
    which will cause the compiler to barf, so you can correct it with minimal frustration. I cannot believe how much time this simple trick has saved me!

  161. Understand the argument before flaming by BerntB · · Score: 1
    If COBOL sucks so hard, then why is it used exactly where it's used?
    It was discussed in the article text as a point. Go read and understand what we discuss here...
    Nobody is claiming that it's a C++ replacement [...] Oohh, wait, that's a classic Straw Man Argument!
    I received the argument that COBOL just had a bad rep. So I answered that COBOL is only used for what it's made for, as a specialised language.

    If it was just a bad rep, the COBOL people at least would use for something else.

    So that C++/script languages was just to make that point a bit less boring.

    This must be an English class assignment to use fallacious argument techniques!
    If you are going to be a flaming asshole then at least do it when you have read the article and the discussion so you've understood the argument...

    So your description of my article makes me think about the classic "when Peter speaks about Paul, we learn more about Peter than about Paul"...

    --
    Karma: Excellent (My Karma? I wish...:-( )
    1. Re:Understand the argument before flaming by ACPosterChild · · Score: 1
      I've decided that there is a language barrier seriously getting in the way here. (Note: Yes, I read the entire chain the first time through, I didn't just jump in the conversation).

      A perfect example is the first line in the reply to my post. I was asking a rhetorical question.

      The issue here is the following behavior: You claim just now that you received the argument that COBOL just had a bad rep . However, that's not what happened. What happened was that you attacked COBOL with: The reason here would be to get something as usable as COBOL but that wasn't more disgusting than x86 assembly language -- that still reads like a bad novel. And then, when asked to provide proof [You know, I've heard that "drawback" thing a number of times. Problem is, nobody backs it up with any real drawbacks. (...) can you give me some of those "drawbacks"?], you don't.

      Also, in response to "expressing the problem domain is exactly what COBOL does", you reply Yes. Which was my point. You could get the same but without the uglyness. Again, you are attacking the language without providing proof, evidence, or example.

      If you can't even show a single deficiency in COBOL (specifically, its syntax, and how it is ugly), then how can you possibly claim that another language could do the job better?


      Further, comments like If it was just a bad rep, the COBOL people at least would use for something else are silly. Unless you're showing off or playing around, you use the best language for the job. If Perl lets you develop admin scripts 10X faster with less complexity, then you use it to develop admin scripts. If COBOL handles currency better than any/most other languages, then use it for financial programs. That's the entire point of "Fact 30" quoted in the article. The way in which you can point out to me that my rhetorical question was discussed in the article, and then totally miss the concept they were trying to convey, points to 1) mis-understanding English, 2) Trolling, or 3) ill-logic. I suppose a 4th possibility exists: laziness combined with arrogant haste.

      FYI, in a logical argument, you're not allowed to ask for proof as you do with your "Turing Machine" comment. See, his comment was a request that you supply proof for your posits. Had you done so, then you would have the right to ask him to prove his.

      Yes, I am being inflammitory, but only because I'm pretty sure I'm being confronted by trolling or obstinate daftness. My feeling that there is a language problem has all but left. Continually asking others for proof, while providing none yourself, is not a problem related to the understanding of a particular human language, but a problem of coherence of thought. Whether intentional or not is a mystery to me.

  162. My last post by BerntB · · Score: 1
    FYI, in a logical argument, you're not allowed to ask for proof as you do with your "Turing Machine" comment. See, his comment was a request that you supply proof for your posits. Had you done so, then you would have the right to ask him to prove his.
    WTF??

    My Turing argument here was an answer to Oligonicella's "[I have] accomplished anything that needed doing [in COBOL]". Of course you can do anything in any language. (If it's a good tool for the problem is another argument.) The second time I posted, was because Oligonicella seemed to not be aware of the theory regarding Turing machines and argued that there were things some languages couldn't do.

    Well done, though, to accuse someone else for bad logic while misrepresenting their points! Did you do it on purpose or where you lucky?

    Here is the quote from the book I started from:

    Fact 30: COBOL is a very bad language, but all the others (for business data processing) are so much worse.
    That is the common opinion, like that water (under certain temperature and pressure ranges) is wet. COBOL is a specialised language -- that work well for it's problem domain and is hardly used at all outside it.

    You argue -- "If COBOL handles currency better than any/most other languages, then use it for financial programs."

    WTF 2??

    I have never written anything else! Your point isn't contradicted by "Fact 30" above, either, which I've not argued against -- just tried to work around.

    That was the second point you are claiming I've written things I've not done. I stopped reading.

    I think you're a troll and I'm not stupid enough to waste time arguing with you.

    --
    Karma: Excellent (My Karma? I wish...:-( )
    1. Re:My last post by ACPosterChild · · Score: 1
      You're correct, I've completely ignored the validity of any points you've made or tried to make. I've done so because you completely ignored the request for a simple explanation or example of why COBOL (and its syntax, in particular) sucks. SUPPORT YOUR CLAIMS. That's all anyone is asking. But, rather than give such an example or explanation, you went on to bring up Turing Machines and other things. Now, you attack me for what I say. And, still, you don't support your claims.

      FWIW, I don't disagree with what I can understand of what you've said (understanding being hampered by a lack of well-phrased discussion, not knowledge on my part). I'm simply annoyed that you're unwilling to justify your inflammitory remarks about COBOL.


      As far as your recent claim of "I have never written anything else!": On numerous occasions you attacked COBOL; claiming that it has bad syntax, and that if it was worth anything as a language, then it would have supplanted C++. You also said, in so many words, that Lisp could do the job better. Maybe your "being in a hurry" simply made the ideas you were trying to get across come out wrong, but your unwillingness to comprehend the thread, and slow down and actually make your points rather than spew unbacked opinion, makes me not care.

  163. OK, troll, I'll answer your complaint by BerntB · · Score: 1
    You're correct, I've completely ignored the validity of any points you've made or tried to make.
    Wow, a self-confessed troll that admit to lie about people's position and attack that instead (so-called "straw man"). Usually you guys don't confess, so I'll be nice and answer your excuse for being a troll.

    I don't really believe it's an honest complaint. You're just grasping for an excuse for being an asshole troll.

    you completely ignored the request for a simple explanation or example of why COBOL (and its syntax, in particular) sucks.
    I gave two points:
    • I've never heard about anyone using COBOL outside it's specific problem area. This is a serious hint about usability -- lots of people even use PHP for general programming!! If COBOL was usable -- it would be used.
    • The specific point in the book made the claim about COBOL. It has discussion and references to it's claims. It didn't feel necessary to add to that. (I know a guy with a copy and it has the exact quote "COBOL is the laughingstock of the computing field".)

    Given the above points, a full argument seemed superfluous. Especially since you clinically have avoided commenting on the reference to the well documented book (and everyone else in the computing world) -- and instead demanding references from me.

    And with you flamers that wrote in support, I expected lots of counterclaims about how good some total idiocy is. In short, it was a can of worms I didn't feel a need to open with non-serious debaters when I had the two strong points above.

    --
    Karma: Excellent (My Karma? I wish...:-( )
  164. Re:As long as he is not management, he's fine by m by ph1ll · · Score: 1
    'I never called programmers "schizoid"'

    No, you said:

    "Many are extremely introverted and have trouble speaking up among their peers; they simply would not be capable of dressing down an employee who desperately needs it."

    Compare and contrast with:

    Schizoid personality disorder (SPD) is a personality disorder characterised by a detachment from social interactions and a tendency towards a solitary lifestyle. SPD is characterised by ... indifference to either praise or criticism.

    "You apparently are having very a hard time distinguishing introversion from a mental disorder, and seem to either be afraid of introverts, have a distate for them, or simply make no effort to understand them."

    Gee, you must be awfully clever to conclude all of that from just a few paragraphs. I wish I possessed your perspicacity.

    "My suggestion to you is to quit whining "stereotype, stereotype" just because someone recognized a cause and effect relationship that happens to involve people."

    And my suggestion to you is that you study why "correlation" does not necessarily infer "cause and effect".

    --
    --- "We've always been at war with Eastasia."
  165. Re:Engineering? by NeoSkandranon · · Score: 1

    Damn Skippy. I'm computer engineering (Yes, different from Software) and after my first year (transferred in, so consider it soph and jr. level classes).....the Mentor suite (logic design) labs were much more in depth and harder than the craptastic java assignments ("Intro to computing")

    Course part of that was the fact that Mentor apparently sucks...but it was still harder.

    --
    If you can't see the value in jet powered ants you should turn in your nerd card. - Dunbal (464142)