Slashdot Mirror


Software Craftsmanship

kaisyain writes "When I was a kid we moved into an old Victorian house. From the street the house looked impressive and fascinating. When you got up close, however, you noticed the paint was peeling, the widow sashes were rotted away, doors couldn't open or close because they didn't hang true, and at some point someone had cheaply redone the kitchen in a style that was very much not Victorian. Pete McBreen's Software Craftsmanship reminds me of that house." Read on to see if you agree with kaisyain's withering review. Software Craftsmanship: The New Imperative author Pete McBreen pages 192 publisher Addison-Wesley rating 2/10 reviewer Justus Pendleton ISBN 0201733862 summary A good start with a terrible finish that answers few of the questions it raises.

The back of the book claims that it will present an alternative method of software development, "a craft model that focuses on the people involved in commercial software development." McBreen offers his "software craftsmanship" model up as an alternative to the mainstream "software engineering" model that dominates much of the literature. It is a position that I am personally sympathetic too, so you'd think I'd be favorably disposed toward the book. Instead I found myself angry at the author for his strawman arguments, illogical conclusions, unfounded assertions, and irrelevant asides.

The book starts off well enough. McBreen points out that, historically, software engineering literature and theory have been dominated by huge projects from the military and government and small, complex, esoteric projects from academia. Neither of those extremes reflect the reality of developing applications for most developers today. McBreen offers up a method of working patterned on craftsmen of old, with a basic breakdown of master craftsman, journeyman, and apprentice.

All of this sounds well and good, but how about some details for what this means in practice?

First we have to wade through some arguments against licensing the profession. (Although craftsmen of old did that all the time, maybe he doesn't want us to extend the metaphor too far.) And then we have to read about how to be a good user. (The back of the book says it is written for programmers, so why do I need a section titled "Stop Choosing Developers Based on the Lowest Bidder"?)

As you're reading chapters like "Becoming a Software Craftsman", "Learning from Software Engineering", and "Design for Testing and Maintenance" you slowly begin to notice that none of this has anything to do with software engineering per se. After all, what is software engineering? McBreen gives a definition on page 7 taken from the IEEE:

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.

He promptly forgets about this definition in his zeal to set up strawmen for his software craftsmanship model to knock over. "The software engineering view states that COBOL is a dead language with no future." "Unlike software engineering, software craftsmanship takes a long-term view of things." "A key difference between software craftsmanship and software engineering is the emphasis that craftsmanship puts on learning and coaching." "Software engineering, therefore, has to deal with the problem of developing software where incremental development and evolutionary delivery are not feasible strategies." He suggests that journeymen review the work of apprentices and that master craftsmen then review the reviewed work: "Although the software engineering paradigm might consider this type of secondary review to be a waste of time, it is an essential part of practicing any craft." "You cannot do software engineering on a low budget...software engineering projects take a lot of time...software engineering denigrates anecdotal evidence."

Where does he get this stuff from? Did I read that right, he thinks formal software engineering would complain about too many code reviews? I must have missed that issue of IEEE Software.

He seems to think software craftsmanship is somehow vastly different from this thing he keeps calling "software engineering" but anyone even vaguely familiar with software engineering literature will have a hard time spotting any actual differences. On page 113 he seems to be against "code walkthroughs" although I fail to see how they are any different from "A master craftsman...[inspects] everything that the journeymen and apprentices create." On page 124 he rails against software engineering's use of "best practices." He doesn't seem to understand that "best practices" are nothing more than anecdotal evidence and an attempt to gather and disseminate information of "master craftsmen."

This symptom is worst in the concluding section, "What to do on Monday", which is intended to be a set of things you can do to end your slavish attachment to software engineering and start out on the path of software craftsmanship. What revolutionary things does he advocate that software engineering must clearly be diametrically opposed to? He suggests we carefully evaluate the portfolio of interview candidates; pay talented staff extremely well, perhaps even more than managers; we should design for testing and maintenance; pay more attention to usability over glitter on user interfaces; create a learning environment to encourage perpetual learning.

What does any of that have to do with software engineering vis a vis software craftsmanship? Is there some reason I can't pay my developers extremely well and still have a systematic, disciplined process?

McBreen's entire premise is flawed because he doesn't seem to understand what software engineering is. His argument seems to be with a specific process, not with software engineering itself. He offers some useful advice but none of it is earthshaking and none of it is really an alternative to "software engineering." Indeed, none of what he talks about is especially new, either. It is basically the same "surgical team" model that Fred Brooks described decades ago, something he alludes to but never outright acknowledges and explores.

McBreen makes a lot of smaller missteps along the way that damage his credibility but they are really too many to enumerate. At the end of the book, you not only don't have any clear idea of what makes software craftsmanship different from a well-run software engineering shop, you also have no clear idea why you spent $29.99 on a 180 page book softcover book.

Interested readers can purchase Software Craftsmanship from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

33 of 306 comments (clear)

  1. What he says by The+Terrorists · · Score: 5, Insightful
    can be said about any craft or art pursued by human beings. The real question is, why will this book sell? Because coders, like other craftspeople, will take a schematic quick way to solve the problem over the tediousness and attention to detail and painstaking slow work that any quality craft requires.

    This is also why stuff like Extreme Programming and other strategies become popular. There are many ways to quality - all of them are task specific and slow. There is no magic pill.

    1. Re:What he says by WankersRevenge · · Score: 4, Insightful

      First off, I'm not a software guy - I'm a camera guy. Programming is just a hobby of mine. But just perusing your comments stirred some thoughts - - -

      Did you ever see the Seven Samura (stay with me here) - in it, as they were recruiting warriors, one of the interviewees asked "What's in it for me?" to which the leader responded, "No glory. No pay. And three meals a day". The interviewee laughed and said he would take it.

      Another Samuri joined the group only for the love of the craft.

      If coding is tedious and you don't like building your application in painstakingly slow fashion, then maybe you should find a craft which better addresses your passion, or at least try and be patient with yourself as you grow. Each project, in my humble belief, should allow you to grow as a craftsmen until you reach that nebulous peak of perfection.

      We're all going to die and the apps you pump out - in the grand scheme of things - will be ultimately forgotten. So don't you think it would be better to leave something beautiful behind in the world, if only to fulfill you? (and by doing so, fulfilling the people you love)

      You're right that there is no magic pill because truthfully, you don't need it.

      Just my thoughts. I'll step off the soap box now.

    2. Re:What he says by ReconRich · · Score: 5, Insightful

      Because coders, like other craftspeople, will take a schematic quick way to solve the problem over the tediousness and attention to detail and painstaking slow work that any quality craft requires.

      Coders almost ALWAYS take the quickest way (on commercial projects) Why ? Because coders are evaluated on the basis of what they get done, and how quickly. Bug counts are hardly ever relevant; in a world where delivery schedules are the ALL IMPORTANT factor, a craftsman is a LIABILITY. Assuming he doesn't get fired for not meeting the same schedule as guys who throw something together as quickly as possible and then forget about it, His wonderfully crafted, nearly bug-free, easy to use application will fail miserably, because a dozen or so crappy applications beat him to market. Face it folks, the software buying world rewards those who
      1. Are first to market
      2. Control the market.

      Craft helps neither first, or control. Hence, the people who fund software development DON'T CARE about it.

      On the other hand, Open Source and Free Software do not have this kind of profit-maximizing strategy, hence these observations do not apply.

      -- Rich

      --
      Free your mind and your Ass will follow -- George Clinton
    3. Re:What he says by UncleFluffy · · Score: 2, Insightful

      Another Samuri joined the group only for the love of the craft.

      Too right. I'd rather hire one person who loves what they do than five monkeys who regard it as "just a job".

      --

      What would Lemmy do?

    4. Re:What he says by jvkjvk · · Score: 2, Insightful

      I find that the problem is that you generally will have a hard time finding someone (read: a company) to pay you to build "your application in painstakingly slow fashion".

      You might write bullet-proof code, but if you finish after the product ship date announced by Marketing, you will be out of a job.

      The same goes for work-for-hire. If you come in with an proposal for 6 months, and quite a few other people come in with proposals for 2-3 months, do you really think that they are going to pick you because you craft beautiful software?

    5. Re:What he says by TimeZone · · Score: 2, Insightful
      We're all going to die and the apps you pump out - in the grand scheme of things - will be ultimately forgotten. So don't you think it would be better to leave something beautiful behind in the world, if only to fulfill you? (and by doing so, fulfilling the people you love)
      There's something to be said for finding a job you like and are good at and can contribute to society through, but I don't think that jobs necessarily are how you should make your mark on the world. Perhaps, I'm old-fashioned, but I think that's what families (and propagation of genetic material) are for.
    6. Re:What he says by pVoid · · Score: 4, Insightful
      While I respect your attempt at entering this playing field, I think it is a bit out of your league.

      IMHO, the major problem about software in the past decade has been people's association of "oh, I can compile a C file" with "I'm a software developer". To me, anyone who hasn't gone through the final 5% of a massive project, the crunch before the deadlines that usually ends up being a death march for many, has no clue as to what is *really* involved in software engineering.

      Think of it this way, any family man or woman can cook a decent meal. My parents always cooked very well actually... That doesn't make them chefs.

      Anyone can cut down a tree in their back yard. That doesn't make you a lumberjack. In fact, after having seen what lumberjacks do and go through, I'm just amazed at how they still do those things.

      In the grand scheme of things, nothing counts. Not the bus driver, not the stock broker on wall street, not the lawyer, not even the judge who overrules a court order... and no, not the apps [we] pump out either. It doesn't change the fact that there is definitely an art and technique involved in it.

      I agree with some things you say, and I really am not answering to you in particular. Yes, there is no magic pill, and yes this guy sucks for trying to reinvent the wheel, *yet again*.

    7. Re:What he says by Anonymous Coward · · Score: 2, Insightful

      Apparently, I'm a freak among freaks. When I write a program, I go out of my way to make it modular and readable. Sure, I sometimes take twice as long to write a single program as others, but most of the time my "time to production" is less than 1/2 of others.

      Why? Because I can easily test each component. If the component doesn't work, I can rip it out and plug a new one in that does.

      In other words, "Keep it simple, stupid."

      Ah, who am I kidding. The toughest thing in programming is simplifing the task. If you can figure out how to reliably break the task into simple, managable, testable, easy-to-understand chunks, you've got the problem solved. If not, you will end up with spaghetti-code before production.

    8. Re:What he says by Dixie_Flatline · · Score: 2, Insightful

      Yeesh, that's pretty harsh.

      Neverwinter Nights, I felt, was actually pretty good. It's a big effin' engine. It just won an award at GDC for excellence in programming. A group of our PEERS decided that the job that we did was quite good, and I agree. As for these 'significant crash problems' I don't know what you're talking about. I played BGII all the way through 5 or 6 times, and don't remember having an exceptional number of crashes. I don't really remember it crashing at all, actually.

      Unreal 2 is a fine game, if you ask me. I played that all the way through a couple times, and it never crashed. The game worked as I expected it to. I'm really not at all sure what you're talking about.

      As for project management and software architecture, I can assure you that we've got a metric assload of it. There may be better managed projects in the world, but I've found the management on my project quite exemplary.

      Note to all: I'm not sure where this guy works or has worked, but I'm not entirely certain I believe ANY of his story.

    9. Re:What he says by throbbingbrain.com · · Score: 4, Insightful
      To me, anyone who hasn't gone through the final 5% of a massive project, the crunch before the deadlines that usually ends up being a death march for many, has no clue as to what is *really* involved in software engineering.

      A well engineered project won't have a deathmarch or crunch at the final 5%.
    10. Re:What he says by pVoid · · Score: 2, Insightful
      Not true.

      It is a 'well known fact' (whatever that means) that the last 10% of a project takes 90% of the effort.

      We all know it's not a fact, it's just humour to a certain extent, but the point is that tying up a project and delivering something complete is something very far from someone doodling a raytracer together over the weekend.

      What makes software good isn't the ability to make the core of the functionality work somewhat. It's the ability to make the whole work seemlesly. You know it just as well as I, if you are a software engineer, that in those last 5% the 'boys' get distinguished from the 'men'.

      PS. this is not a troll or flame. I'm seriously saying what I think.

    11. Re:What he says by Anonymous Coward · · Score: 1, Insightful

      Too right. I'd rather hire one person who loves what they do than five monkeys who regard it as "just a job".

      Perhaps the question should be, would you rather hire one monkey (a zoo animal) who seems to love programming than five people (non-zoo animals) who just do the daily grind?

    12. Re:What he says by RetsamYthgimla · · Score: 3, Insightful

      This will change eventually, or at least it should. When people hire contractors to come in and fix their house, they don't always go for the lowest bidder who will finish faster.

      If you want your walls painted, do you hire the guy who costs $500 and takes two days, or the guy who costs $300 and takes one day.

      The first guy guarantees that he will use a coat of primer, two coats of paint, and that he will fix any defects, though there probably will be very few if any.

      The second guy guarantees that there will be paint on the wall.

      Yeah, there's cheap bastards out there that will go with the second guy, but most people would go for the first one.

      But in this society, people don't care about the quality of technology. They don't want two coats of paint; they don't want the right color and right finish; they don't even care if there's a coat of primer. They just want paint on the wall. That's one of the many, many reasons that the dot-coms failed. And at some point, people are going to have to start caring. I hope, anyway.

  2. Re:personal attacks by TopShelf · · Score: 3, Insightful

    Quite the contrary - there isn't a single personal attack in the review. The content of the book and its assertions are pretty much torn apart, but there isn't any slam directly on the author...

    --
    Stop by my site where I write about ERP systems & more
  3. From recent experience by phorm · · Score: 5, Insightful

    I've seen a lot of apps - especially web-based ones - that look great and are coded like crap. The problem with somewhat simpler languages, especially scripting languages, is that the ease of learning the basics often leads to some very undereducated programmers.
    I don't consider myself a "professional" Perl programmer, though I've had several years experience, but even I can see when a large system is made up of a lot of little shyte.
    Another thing one might notice in particular, is on group-programmer projects. The interface coding might be very nice, and then when one goes the the back-end modules that query mySQL DB's, etc... it's obvious that it was a different and less experienced programmer.

    When I start seeing things like:
    $stuff[1], $stuff[2]
    $blah
    etc
    it scares me. If code isn't going to be commented, at the very least the variables can be intuitively named so as to make sense, and using arrays of hard-to-determine crap for no reason is just bad (at the least, use named hashes, or just normal vars).

  4. Re:lameness detected by mugnyte · · Score: 2, Insightful

    you must be trolling. you only want good reviews? get over the "any press is good press" phobia.

  5. That's why they call it "Review" by NickFusion · · Score: 2, Insightful

    and not "Advertisment."

    --
    What were you expecting?
  6. What I tell my group by jackjumper · · Score: 5, Insightful

    I run a small software group writing control code for semiconductor processing equipment. I read a lot of literature and what works for my group is:

    - code reviews on every check-in
    - lots of refactoring
    - incremental releases
    - constant testing
    - individual 'craftsmanship'

    So what do I tell my group? I tell them "any piece of code you write you should be proud to show at a job interview."

    And I lead by example.

  7. Don't like the term "Craft" by tfriedlich · · Score: 2, Insightful

    Come on, it's more of an art. What's better than constructing an elegantly written piece of code. Granted, most programs are closer to a "Cathy" comic strip than a Piccasso, yet there is something so nice about the occasionally beautifally crafted script.

  8. Re: Singletons suck by Anonymous Coward · · Score: 1, Insightful

    Singleton has got to be the most over-used pattern ever. There are hardly any legitimate cases for a singleton, yet it's the first pattern anyone learns. They then go off and litter their code with the bloody things.

  9. The house that love built by scotay · · Score: 3, Insightful

    We took to calling our ERP software that we we're responsible for supporting and customizing "The house that love built." It had a long history of many owners and installed base in critical production environments. Despite the desire to burn it to the foundation to fix it, we were limited by time and money. We had plenty of ugly interfaces that put the toilet next to the refrigerator, load-bearing posters, and if we ran out of floorboard, we weren't above painting the dirt.

    I sometimes wish we were working on an old house, as our house was flying down the street at the speed limit, and no one was willing to stop to make the required repairs.

    How much can craftsman programmers learn when their walkthroughs are confined to the sample home (development environment)? They rarely go near a lived-in home (production environment) and may have never talked to an actual homeowner (customer) in their entire career.

  10. Re:Meta-Programming books suck by thanuk · · Score: 2, Insightful

    For example, if you tell me that your logging system is a Singleton object, I immediately understand its' place in your system and how to use it. All from the knowledge that there's exactly one instance? That's impressive

  11. Re:personal attacks by sbeitzel · · Score: 2, Insightful

    I dunno, that didn't look like a personal attack to me. Sure, one could interpret it that way, but think about it: all the reviewer has to go on is the material. If the material asserts that software engineering is X and then later on the material presents software engineering as z, theta, and epsilon, each of which is !X, then the only conclusion one can come to is that the material does not present a consistent description of software engineering and the author of the material either doesn't know, or changed his mind several times and didn't edit well.

    --
    Oh, go on, check out my job.
  12. Re:Software Engineering is different in Purpose by pmz · · Score: 2, Insightful

    The basic notion of software engineering is to create a *process* which is so perfect that no personal weaknesses in your programmers can hurt the company.

    This is a very dangerous notion, and I disagree with it.

    Engineering is about creating technology. It's unfortunate that most "Software Engineers" are clueless doe-eyed grads or uneducated bureaucrats, but that is a symptom of the overall immaturity of the industry. It's unfortunate that the overall credibility and quality in the software industry is so poor that people impose soul-less processes to eliminate risk.

    Look at engineering firms like the Skunk Works or early NASA, who produced tremendous technology in an almost absurd amount of time. With the cogs-in-a-wheel method, these organizations would still be making paper airplanes and the sound barrier would be a finger in the ear!

    Even with RUP, Extreme this-and-that, CMM, whatever, nothing can replace individual talent in an engineering project, and absolutely nothing can completely remove the risk associated with these talented individuals.

  13. Craftsman/Journeyman/Apprentice not always great by Karl+Cocknozzle · · Score: 2, Insightful

    This may seem slightly off-topic, but bear with me, and the relevance will become clear...

    My family owns a home-improvement business (I don't work there now, but did summers during college) and often deal with builders who work on the principle described by the author.

    On more than a few occasions when I worked there, I would go to hang rain gutters (on new homes) and find all sorts of messes: Corners not square, roofing materials cut way too short or way too long, roof vent holes that have had shingles nailed over them, and even more idiotic and egregious mistakes than this--All of them perpetrated by either apprentices under supervision, journeymen or mastercrafstmen. Usually, it was the result of a project that was behind schedule and needing to cut corners to catch up.

    My point? It doesn't matter what "Quality Assurance" system you have in place if you set unrealistic goals and/or hire the cheapest labor you can get your hands on.

    --
    Who did what now?
  14. Re:Comparing programming to "real world" endeavour by (H)elix1 · · Score: 4, Insightful

    Nothing like this happens in the real world, software is a completely different beast and to contrain it by using realworld analogies might push a few books, but it's not making software engineering or the software being produced any better.

    This type of thing happens in the real world ALL THE TIME. Talk to anyone who has had a home built for them. Critical people or equipment doesn't show up on time, structure is far more fluid than people ever suspect, and what was presented to the customer via blueprints and models still may not be what they were expecting.

    Engineering is knowing when to say good enough. A component performs as specified in the requirements. That is, if they say they need a hinge that will hold an aluminum door they don't build it out of titanium. For cranking out code, this is really an art. XP touches on this (and goes to far IMHO) about focusing on the task at hand rather than building large frameworks, object models, etc. There is a balance there, but for most construction these days the spec is 'good enough'.

    Craftsmanship is taking the time to make sure every stud in the house is square. This is not an engineering requirement - the requirement is to support the wall. This is about polish and taking extra time to 'do things correctly'. It takes time, usually is not budgeted, and is a godsend to the folks having to maintain it down the road. These things also tend to live far beyond everyone's expectations. Think of some of the deep space probes landing on asteroids - craftsmanship. The mars lander comes to mind when you mentioned bolts.

    Craftsmanship is also about using the right tool for the job. As I learned some basic carpentry skills, my grandfather would comment 'Any power tool used improperly can be a sander'. This applies to the real world as well as software. Let him that has not done an ugly hack throw the first stone - but duct tape and bailing wire are staples of engineering jokes because they are about getting the job done, but not in an elegant manner.

    When I build stuff for others, solid engineering is enough. For my personal projects, I expect craftsmanship.

    Course, I have not seen the book, so I may be way off track here...

  15. New programming paradigms... by crazyphilman · · Score: 4, Insightful

    ...are like $#@holes. Everyone has one, and they all stink. So I agree with this critique.

    I'd like to add my two cents, so here it is:

    Every year or so, some wingnut comes out with a "brand new paradigm" of software development, which is supposed to totally shake up all established practices and change the world overnight. And, it's all hogwash, but inexperienced programmers and the wannabes who take the six-month-special course in a back alley in NYC hoping to make it big in "Computers" all jump on the bandwagon and make life miserable for the rest of us. I've been programming in one language or another since 1991 (although I've been using computers since 1983 or 4); I started studying it formally in 1995, and I've been working full time as a programmer since 1998. And, in all that time I have never seen anything come out that does a better job than plain, old software engineering.

    You know what I think?

    I think that in this age of "bigger, better, faster, more" people who can't make a name for themselves by building/doing something USEFUL try instead to become "visionaries". So they pull some weird new way of programming out of their asses, serve it up to us like it's filet mignon, and sell books about how to change everything you're doing yet again. This constant change prevents companies from building stable software. How can you work all the bugs out of anything, when every five minutes you're changing all your processes? As if the huge amount of turnover, outsourcing, and downsizing doesn't make long-term software development hard enough.

    The worst thing is, managers assigned to IT teams frequently don't know enough about software engineering to understand the difference between one paradigm and the next. So they end up running willy-nilly from one to another, changing boats midstream in a doomed, Frogger-like attempt to not get sunk in the next layoff. Any new book that catches the manager's eye mesmerizes him.

    Heaven help the gullible manager who ends up with an aggressive little ivy-league grad that wants to make a name for himself. Then the manager's gonna be led by the nose. After all, what does a manager respect more than pedigree? It doesn't matter that the kid's balls haven't even dropped yet, that he has no experience on any real project, that the closest he's come to load balancing is two PCs in his dorm room, serving static web pages to one user who keeps hitting "refresh"...

    GOD.

    When, oh when, will people learn?

    We've already figured out how to manage software projects. We've understood what works and what doesn't for at least a couple of decades. The field is fairly well researched, so there is plenty of material available about software engineering, and all you have to do is go look it up. There's NO NEED to keep trying to change the process.

    Feh. Snort.

    --
    Farewell! It's been a fine buncha years!
  16. not realistic by GunFodder · · Score: 4, Insightful

    If all programming tasks were as exciting as defending a small village from rapacious bandits then I'm sure you would have no trouble finding brilliant programmers. Unfortunately a lot of software is not very exciting. I find it unlikely that there is a single programmer out there that writes commission accounting systems for fun.

    As a hobbyist you have the opportunity to pick and choose your projects. A working programmer often has to solve business problems that aren't unique or exciting.

    1. Re:not realistic by Khomar · · Score: 4, Insightful

      A working programmer often has to solve business problems that aren't unique or exciting.

      Quite true. However, speaking as a programmer, I have found that even in mundane tasks I get enjoyment out of perfecting my craft. I look to make my processes just a little faster or more robust, even when doing something that I have done before (if I cannot use or do not have access to a library). I also find that the creation of new libraries is frequently needed which also allows me to perfect my ability to design and develop useful libraries.

      I have worked on many projects both interesting and not, but that does not mean that enjoyment cannot be found in even the mundane things. If nothing else, I find enjoyment in the ability to pump out a simple program very swiftly without errors. There is always room for improvement.

      The key, of course, to any job is to learn to enjoy what you do, even when this task is difficult. About the only time I have had morale problems with work related to people I had to work with (or insane MFC libraries... but I digress). The work of developing itself remains a joy to me.

      --

      I believe in de-evolution. God made the world perfect, man fell, and its been going downhill ever since!

  17. Re:Meta-Programming books suck by David+Kennedy · · Score: 4, Insightful

    _Design Patterns_ is not a methodology book. Say it with me, "Design Patterns is NOT a methodology book."

  18. Re:Comparing programming to "real world" endeavour by (H)elix1 · · Score: 3, Insightful

    The point I was trying to make (and apparently unsuccessfully) was that the basic foundations of software engineering are quite different than those in the real world.

    I know... I'm just going through the process right now and the real world seems as horked up as some of the ugly software projects I've worked on. Call me cynical, but I've got friends in differing areas of engineering - aerospace, mechanical, electrical, genetic - and all of them have nightmare stories of projects that were loosely defined, under funded, impossible deadlines, etc. I'm not saying software engineering sucks less or more - just that these same problems woefully apply to others fields as well.

    God help me, I was right there saying amen until you said this does not happen in the real world. I could be exceptionally unlucky, however.... (grin)

  19. Re:not realistic...Excellent points all... by Anonymous Coward · · Score: 1, Insightful

    If I didn't love it, I could've sold my house (oddly enough given the slump, Silicon Valley house prices haven't dropped much), gone somewhere else, and lived off the equity for a couple of years til I found something else to do.

    Even programs that look tedious on the outside may have challenging algorithms on the inside.

  20. what are you considering "well researched?" by Anonymous Coward · · Score: 1, Insightful

    Ok, so you say we all know how to software engineer, but I've been studying the classica paradigms and none of them are truly "perfect" like you so claim.

    Even ideas as old as the spiral model have proven to be ineffective at one level or another.

    The only "software engineering" that seems to have been perfected with the is the fact that if you do the same damn program for 20 years you're bound to get better at it. NASA is the classical (and really only) example of CMU's Capability Maturity Model at work. But how much does less than a MB of flight control software change in 40 years? Yeah, they're good at what they do and can predict errors with frightening accuracy because they've been doing the same program over and over again longer than anyone else.

    What we need is a paradigm that works for a unique problem the FIRST time around. Not the 30th. Maybe your "old school" software engineering works in some "old school" industry you work in, but I think nearly every software engineering expert would agree that you're pulling this information out of your ass.