Stories
Slash Boxes
Comments

News for nerds, stuff that matters

What Makes Software Development So Hard?

Posted by ScuttleMonkey on Mon Jan 08, 2007 03:51 PM
from the release-date-of-the-book-pushed-back-to-2010 dept.
lizzyben writes to mention that CIO Insight is running a short piece that takes a look at why the rocky culture of software development continues to exist despite all of the missed deadlines, blown budgets, and broken promises. From the article: "I was not really looking or thinking about big software projects. I was just coming out of my experiences at Salon, where we built a content management system in 2000, which was painful. I was one of the people in charge of it, and when the dust cleared, I thought, I don't really know that much about software development. Other people must have figured it out better than I have; I must go and learn. So I started reading, and talking to people, and realized it's a big subject and an unsolved problem. And the bigger the project, the harder the problem."
This discussion has been archived. No new comments can be posted.
Display Options Threshold:
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(1) | 2
  • good question by macadamia_harold (Score:2) Monday January 08 2007, @03:56PM
    • Re:good question (Score:5, Insightful)

      by jonnyelectronic (938904) on Monday January 08 2007, @04:04PM (#17513874)
      It isn't. Haven't you seen them, all they do it wave their hands around and look silly. That's the point. Everyone thinks it's a breeze when it isn't, so everyone underestimates everything.
      [ Parent ]
      • The real point is... (Score:5, Insightful)

        by Anonymous Coward on Monday January 08 2007, @05:46PM (#17515778)
        ...that software development needs to have a team of programmers who are talented and competent, and a project leader who knows his people and can effectively lead and manage both the team and the project... and a corporate culture which doesn't treat its people distrustfully like a bunch of indentured servants, then they can write good software and get it done in reasonable amount of time. Getting and retaining a team of very good talented and experienced programmers is very difficult and expensive however since most development firms are cheapskates and not only do not pay enough, but treat their people like dirt, binding them under all kinds of bullshit NDA and non-compete contracts, poor work environment with noisy cubicles or "bullpen" office areas, not empowering them with latest technology workstations and tools, etc. The software development company that teats its programmers golden is the rare exception... the exact opposite "sweatshop" like I described above is generally the norm, as I've seen it in my 20+ years in the biz, hence you usually get kids right out of school as entry-level positions doing the bulk of the development. The best cream of the crop programmers have mostly all quit programming years ago and now are all sitting in management positions and programming no longer.

        A good orchestra conductor who is in front of a bunch of rank beginner inexperienced musicians will not be able to make very good sounding music. You get what you pay for.
        [ Parent ]
        • Re:The real point is... (Score:5, Insightful)

          The week before a concert is absolutely brutal, especially if you're rehearsing with a band/orchestra (but even if you're playing solo piano and rehearsing on your own). You're treated fairly well at other times (most importantly, after the performance), but you can sure feel like dirt during all of the rehearsals.

          I guess it's like being treated with respect as a programmer, except that you still have deathmarches.

          Your analogy is good, though - hire amateur musicians, and you're not going to get a good outcome. If the conductor knows next to nothing about music, you're not going to get a good outcome. If the instruments the orchestra is using are not tuned well, you're not going to get a good outcome. If you rehearse a piano part for weeks and the conductor suddenly asks you to play the oboe instead five minutes before the concert, you're not going to get a good outcome...

          [ Parent ]
        • Re:The real point is... by RedDevilCG (Score:1) Tuesday January 09 2007, @01:08AM
          • 1 reply beneath your current threshold.
        • Re:The real point is... by Maltheus (Score:1) Tuesday January 09 2007, @12:46PM
      • Re:good question (Score:5, Insightful)

        by Ambush Commander (871525) on Monday January 08 2007, @04:53PM (#17514772)
        Well, if you wanted to get really technical about it, the conductor's work is mostly done before the performance, so that any reasonably proficient orchestra would be able to do a reasonably good run sans the conductor.

        Conducting, however, is a lot harder than it looks, especially during rehearsal. It requires the simultaneous processing of the score (possibly twenty plus lines going on simultaneously), time (not so easy once you get into funky metric changes), expression (precisely what the conductor is all about) while keeping track of mistakes that happened during the piece even though not stopping immediately. It's extremely easy to see when a conductor is inexperienced, boring, or hasn't looked over their music properly.

        For conductors of student groups, they also have to keep the members of the ensemble engaged through tasteful storytelling while not completely going off tangent, they must be extremely creative in figuring out how to get their point across, they must be careful not to over-rehearse a section, etc etc etc.

        Ask any marching band student turned drum major. Being a good musician does not mean you'll be a good conductor, and a more generalized notion is the core meaning of most of the other analogies offered by Slashdotters around here.
        [ Parent ]
        • Re:good question (Score:4, Insightful)

          by JoGlo (1000705) on Monday January 08 2007, @06:20PM (#17516270)
          Wow,sounds a lot like running a project!

          Simultaneous management of multiple requirements (possibly 5,000 competing business requirements competing simultaneously); time (not so easy when the scope of the project is creaping, but the deadline isn't, or the estimating process was off, or the requirements have changed.....) while keeping track of 1,000 action items, issues, defects and delivery dates at the same time. It's extremely easy to see when a Project Manager is inexperienced, or undertrained, or bored, or being overworked into an early grave!

          For project Managers there is the ongoing need to maintain team cohesion, and team spirit, and still get the code out the door - tested and working perfectly, on time and under budget.

          Like musicians, being a good programmer doesn't mean that you'll make a good Project Manager. Some of the best programmers out there would be dead in the water if put in charge of a real project, for no fault of their own, other than being totally unequipped to run a project.

          As for delivering on time and on budget, it is a well known truism that the first 90% of the job takes 90% of the budget, and unless you are REALLY lucky, it's likely that the other 10% of the job will also take 90% of the budget....but I digress.

          [ Parent ]
        • Re:good question by marcosdumay (Score:2) Monday January 08 2007, @07:55PM
        • Re:good question by fireboy1919 (Score:2) Monday January 08 2007, @09:45PM
        • 1 reply beneath your current threshold.
      • 2 replies beneath your current threshold.
    • Re:good question (Score:4, Funny)

      by xs650 (741277) on Monday January 08 2007, @04:19PM (#17514130)


      Why is herding cats so hard?
      [ Parent ]
      • Re:good question by creimer (Score:3) Monday January 08 2007, @04:53PM
      • Cats and penguins... by Savage-Rabbit (Score:2) Monday January 08 2007, @05:08PM
      • Captain obvious (Score:5, Insightful)

        by plopez (54068) on Monday January 08 2007, @06:24PM (#17516318)
        Herding cats is hard because you are using the wrong management technique. You herd cattle (and sheep and goats and pigs etc.), you do *not* herd cats. Cats, you put them in the general area of the mice and let them do what they are good at. Micromanagement of cats is a losing proposition.
        [ Parent ]
    • by Anonymous Coward on Monday January 08 2007, @04:26PM (#17514268)
      ... of all the hot babes running around the offices in miniskirts giving massages that make it tricky to type. That, and the martinis that keep spilling in the keyboard. Combine that with the constant parties, sailing trips, ski trips, etc and it's a wonder anything gets done.

      What's that you say? It's not the .com bubble anymore? Glad I left software.
      [ Parent ]
    • Re:good question by Kumiorava (Score:3) Monday January 08 2007, @04:47PM
      • Re:good question (Score:5, Informative)

        by larkost (79011) on Monday January 08 2007, @05:12PM (#17515090)
        You are close, but the real piece you are missing is that most of a conductors work goes on long before you see them up on stage conducting. The real work is in music selection (you have to know your orchestra and what its strengths and weaknesses are), properly managing rehearsal schedules (what groups should meet, and what they should work on), choosing the right players and the right section leaders (the latter is both a delegation and a political art), and the actual concert conducting is much more show than anything else (unless things start to go wrong).

        I know a player in the Philadelphia Orchestra and he tells me that they largely ignore the conducting that happens during a performance (granted that conductor's stick work is impossible to precisely read). They know how he wants the piece played because of what they did in rehearsal.

        Oh... and I do have the experience to comment on this, I was in orchestras for 12 years.
        [ Parent ]
      • Re:good question (Score:5, Insightful)

        by jdray (645332) on Monday January 08 2007, @06:14PM (#17516192)
        (http://somethingstirring.blogspot.com/ | Last Journal: Monday October 01, @05:09PM)
        The thing that orchestras have that most programmers don't is a program design (the score) that they're working with their peers to develop (play) from. The composer knew what he wanted. Most users don't.
        [ Parent ]
      • Re:good question by EtherMonkey (Score:2) Tuesday January 09 2007, @12:32AM
    • Re:good question by LucidBeast (Score:2) Monday January 08 2007, @08:07PM
    • Re:good question by Ngarrang (Score:1) Monday January 08 2007, @10:36PM
    • Re:good question by vtcodger (Score:2) Tuesday January 09 2007, @02:38AM
    • Re:good question by Bush Pig (Score:2) Monday January 08 2007, @07:05PM
    • 3 replies beneath your current threshold.
  • It's not hard by Oz0ne (Score:1) Monday January 08 2007, @03:57PM
    • Re:It's not hard (Score:5, Insightful)

      by daVinci1980 (73174) on Monday January 08 2007, @04:08PM (#17513954)
      (http://www.lexical-ambiguity.com/)
      Spoken like someone who hasn't ever been involved in the development of a large software project.

      Large projects bring problems with them that aren't noticeable on small projects. The working set of my project is around 10 gigs, most of which is code and text files. The tree changes quite frequently, and syncing to that tree is painful.

      What makes it more painful is when the tree is broken. So we had to develop tools to help ensure that the tree isn't broken, and that we have a way to tell what the last known good submission was.

      There's performance issues related to the source repository, because no matter what repository you're using, they all have issues when you have 200 people working in the same place at the same time. (This is true of virtually any database application).

      [ Parent ]
      • Re:It's not hard (Score:5, Insightful)

        by CastrTroy (595695) on Monday January 08 2007, @04:29PM (#17514318)
        (http://www.kibbee.ca/)
        Exactly. Anybody who thinks it's easy to complete a large software project without problems has obviously never worked on real software. Secondly, anybody who asks why it's so hard to develop good software has never worked on a large software project. You can say a lot of stuff about following processes, and doing testing, but until you're working on a large project, with lots of different developers, with time and money constraints, you don't know what you're talking about.
        [ Parent ]
        • Re:It's not hard by Oz0ne (Score:2) Monday January 08 2007, @04:34PM
          • Re:It's not hard (Score:5, Insightful)

            by joto (134244) on Monday January 08 2007, @04:56PM (#17514824)

            In my experience the only time it becomes difficult is when people are NOT doing their jobs.

            In that case, you have essentially proven that you have no experience with large software projects. Even if everybody is qualified for the job they are hired to do, and are enthusiastic about the project, and doing the things they are supposed to do, things just don't work out right at first try. Or second try. Or third try. Or... you get the picture. And then, when that problem's finally done with, you have 7 new ones, where at least 3 of them are total show stoppers.

            It's of course easy to start pointing fingers at people. That guy is an idiot. The management has no idea what we are doing. Writing documentation is killing my productivity. I had to rewrite this assholes code since he didn't follow my favourite bracing style. And so on... The point is, the guy you call an idiot probably knows three hundred times more than you about fluid dynamics, which is what all the project is about. Management isn't supposed to know what you are doing, they are supposed to handle budgets, equipment, hiring, firing, etc. And the last two are kind of obvious...

            Software development is hard, because it's not a solved problem. You don't build software the same way you build buildings. There are no rigid rules to follow, no best practices that can be universally agreed upon. The purpose of each new software project is to solve (a) problem(s) that has never been solved before. And because of that, there are great uncertainties involved. You can guesstimate a lot of parameters, but eventually, some of the unknowns are going to bite you in the ass. (As Rumsfeld said: There are known knowns...)

            The only other problem I've encountered with software development are when people have unrealistic expectations, despite me telling them exactly what to expect and delivering on exactly that.

            Not exactly an easy person to work with, are you?

            [ Parent ]
        • Re:It's not hard by vtcodger (Score:2) Tuesday January 09 2007, @08:25AM
        • Re:Lesson: by Marxist Hacker 42 (Score:2) Monday January 08 2007, @05:09PM
          • Re:Lesson: by BSAtHome (Score:2) Monday January 08 2007, @05:27PM
            • Re:Lesson: by Marxist Hacker 42 (Score:2) Monday January 08 2007, @06:33PM
              • Re:Lesson: by pclminion (Score:2) Tuesday January 09 2007, @02:15PM
              • Re:Lesson: by Fulcrum of Evil (Score:2) Tuesday January 09 2007, @03:18PM
          • ls by camperdave (Score:2) Monday January 08 2007, @05:34PM
            • Re:ls by Marxist Hacker 42 (Score:2) Monday January 08 2007, @06:35PM
              • Re:ls by camperdave (Score:2) Monday January 08 2007, @07:41PM
            • Re:ls by camperdave (Score:2) Tuesday January 09 2007, @02:37AM
            • 1 reply beneath your current threshold.
        • Re:Lesson: by tepples (Score:1) Tuesday January 09 2007, @12:24AM
        • 2 replies beneath your current threshold.
      • Re:It's not hard by Oz0ne (Score:2) Monday January 08 2007, @04:32PM
      • Re:It's not hard by jZnat (Score:2) Monday January 08 2007, @04:44PM
      • Re:It's not hard by mrchaotica (Score:2) Monday January 08 2007, @05:55PM
      • Re:It's not hard by Fulcrum of Evil (Score:2) Tuesday January 09 2007, @03:04PM
    • No you don't, you silly manager troll. by Anonymous Coward (Score:1) Monday January 08 2007, @04:30PM
  • It's complicated by fittekuk (Score:2) Monday January 08 2007, @03:57PM
    • Re:It's complicated by RingDev (Score:2) Monday January 08 2007, @04:38PM
    • There are a number of problems:

      1. Clients rarely know what they want. Most software projects are designed and written for someone else's requirements. These requirements often come in the form of "I don't like that, but I have no idea what I actually want."

      2. Coders are systematizers, who tend towards the asocial end of the spectrum, which is why silicon valley produces so many autistic and Auspergers's kids. Large projects require communication, and there are a lot of coders out there who may be good with machines but are lousy with people.

      3. As a result, lead programmers are often tantrum throwing prima-donnas, intellectual bullies who use their position to undercut those under them and make themselves look superior. You may have to promote and fire half a dozen programmers before you fill the lead programmer position with someone who is actually good at the job. In the meanwhile, you've just lost 5 good programmers. And if you actually manage to find a good one, you'll have to pay him in blood, because he's probably worth more than your house.

      3. Salesmen, who deal with the client, are professional bullshitters, who are generally wafer thin on the technical details. That's actually not a slam--this is literally their job--to sing whatever lullaby the client wants to hear. Programmers will generally learn their lesson after being burned a couple of times and will not promise the impossible. The sales people never get burned--it was the programmers who screwed up, right? Calls for heroics on the part of programmers invariably begin with someone in marketing.

      So, a few tips:

      1. Get someone to hammer out the details of the specifications before signing the contract.

      2. Get someone with some technical knowledge to study those specs, and the deadlines, before signing the product.

      3. Get a lead programmer who fights for his team, not for the himself, and who is more interested in getting things done the right way than in getting them done his way.

      4. Get a project manager (preferrably female--tends to calm the more socially inept coders, less testosterone poisoning) who handles communication between the coding team and the client. Do not, repeat DO NOT allow the coder to meet the client. They will eat the client! You will have a hard time getting paid, and hiding the bones is a bitch.
      [ Parent ]
  • It's design not development (Score:5, Insightful)

    by gilesjuk (604902) <giles DOT jones AT zen DOT co DOT uk> on Monday January 08 2007, @03:59PM (#17513760)
    Writing the code from a good design is easy. It is creating a good accurate design, capturing all the requirements accurately and ensuring the end user's expectations are correct.
  • by Chineseyes (691744) on Monday January 08 2007, @03:59PM (#17513774)
    Viagara, Cialis, red bull, two brazilian hookers and a swiss midget.
  • Thank Goodness by pyite (Score:2) Monday January 08 2007, @03:59PM
  • by rudy_wayne (414635) on Monday January 08 2007, @04:00PM (#17513784)
    Anyone can write a book. But, writing a book that's *GOOD* and that people will want to read is an entirely different matter.
    Computer software is no different.
  • Don't treat it like a science. by Anonymous Coward (Score:1) Monday January 08 2007, @04:00PM
  • People expect too much too soon. (Score:5, Insightful)

    by Dex5791 (973984) on Monday January 08 2007, @04:02PM (#17513846)
    Good software takes time to develop. There is sometimes a tendancy to set unrealistic goals and when they aren't met the people in charge feel let down.
  • by panaceaa (205396) on Monday January 08 2007, @04:03PM (#17513858)
    (http://slashdot.org/~panaceaa | Last Journal: Friday July 14 2006, @09:19PM)
    In related news, humans still can't seem to bridges [sfgate.com] with any reliable schedule or budget. Despite the fact that bridges have been built probably since the dawn of man, and we've been building suspension bridges for at least 500 years [wikipedia.org].
  • Two things make software "hard" (Score:5, Insightful)

    by mandelbr0t (1015855) on Monday January 08 2007, @04:04PM (#17513866)
    (Last Journal: Thursday March 01 2007, @01:53PM)
    First, the people who make the technology decisions often don't have the required technical know-how, and have a terrible tendency not to listen to people who do. OTOH, the people who have the technical know-how have absolutely no idea how to write a business case. Thus, there's usually a disconnect between the people who understand the business requirements, and the people who understand the technical requirements. Vendor loyalty has been known to be a sticky issue as a result.

    Second, there's always a problem getting a bunch of talented, egotistical (ok, so not all software developers have ego problems...) quirky, eccentric and generally difficult people to work toward a common goal. The common analogy to being a successful director/manager of a software project is to that of "herding cats". My experience has been that business types don't react well to the often-emotional developer types, hearing the emotional outburst, but ignoring the content of it. Developers would do well to learn some more social skills, and director/manager types would do well to listen better.

    mandelbr0t
    • Well said.

      But while stereotypes persist that programmers have no people skills, you forget that many business people don't either.

      Just ask yourself: how many effective, people-oriented bosses have I ever had? If your answer is "not many", you're not alone.

      I've been software engineering for over a decade. These are a few observations I'd like to share with managers:

      1. Hire good people. If you don't, you're hosed before you start. If you can't tell the good people from the bad, you're in the wrong business.
      2. Software engineering often fails because software engineers are ignored. In a badly run company, nobody even asks developers which is the best approach. Imagine if civil engineering were like this...
      3. "Software is too expensive to do cheaply". Sure, you can get 20 engineers with 2 years experience apiece. But it's more effective to get 4 engineers with 10 years experience.
      4. Let the team (largely) manage themselves. Open source projects work just fine without management - or, at least they do no worse than managed software...
      5. Don't do things to keep morale high; instead, cease doing things that keep morale low. We engineers just want to do good work in a nice environment. It goes back to hiring good people and then leaving them well alone.
      6. Give the team a hand in decision making. The team will be more incentivised to hit targets they set than the ones you set. Afterall, the only incentive they have for hitting your impossible deadlines is furthering your career.
      7. Automated regression tests! There are still managers who don't know what these are/how important they are. Along with all other good processes, automated regression tests reduce stress.

      [ Parent ]
    • Re:Two things make software "hard" by professorfalcon (Score:1) Monday January 08 2007, @05:33PM
    • Re:Two things make software "hard" by k12linux (Score:3) Monday January 08 2007, @06:47PM
    • Re:Two things make software "hard" by Richard Asbridge (Score:1) Monday January 08 2007, @07:32PM
    • 2 replies beneath your current threshold.
  • Theory is great (Score:5, Insightful)

    by hsmith (818216) on Monday January 08 2007, @04:04PM (#17513878)
    practical application isn't so. Requirements change, clients see something and want something different. You work a month on something and find out it isn't working anywhere close to the way it should. Tasks are more complex then people thought at first, the list goes on. It is a complex thing with infinite ways to do things. It isn't any easy process.
  • Technology Review tackles the same subject... by mcho (Score:1) Monday January 08 2007, @04:05PM
  • PHB? by Jumper99 (Score:2) Monday January 08 2007, @04:06PM
  • Hard is better than impossible (Score:5, Insightful)

    by composer777 (175489) * on Monday January 08 2007, @04:07PM (#17513916)
    The reason it's hard is because we are doing the impossible, at least if you had asked someone 50, 20, or in some cases even 10 years ago. Solving previously impossible problems requires quite a bit of innovation and novel thinking. But, it's better than it was decades ago, even if it is difficult. What we need to remind people is that even with fast computers, the problems are still difficult to solve.

    Also, automating tasks that we used to perform ourselves is also difficult. It's one thing to walk and chew gum, but another thing entirely to precisely describe the mechanics of doing so. (One is very easy, the other requires creating precise models of how things work, a very hard problem).
  • Ideas come faster than code (Score:5, Insightful)

    by nharmon (97591) on Monday January 08 2007, @04:07PM (#17513932)
    (http://nharmon.multics.org/)
    What Makes Software Development So Hard?

    Simple. The current state of technology in regards to human imagination makes it many times easier to think up of good ideas or improvements for computer software than it takes to create or implement them. Thus the requirements for developers are often made by the ones with the ideas with no idea of the costs (in terms of time or money) involved in making those ideas a reality.

    Joe Sacks says "Gee, it would be a great idea of our flight tracking program also tracked fuel usage and recommended fuel loads to minimize weight on subsequent flights". See? It only took Joe all of about three minutes to think that up. He figures that a reasonable amount of time to implement this idea is one or two days. After all, those "computer guys" are pretty smart and can "do anything".

    Two days later Joe receives a report that the "project" is over budget (needed to check with the FAA on this one, that cost money) and overdue.

    Sure, you could just say that these problems need good project management. But seriously the problem is that these "problems" are not considered worthy of project management. It only took Joe three minutes to think the idea up...why should he hire a project manager for *THAT*. It's not like he's building a new hangar.
  • by iPaul (559200) on Monday January 08 2007, @04:07PM (#17513934)
    (http://ipaul.blogspot.com/)

    First the wag: The idea that the interveiwee states early on, that software development is not introspective, is horse-hockey. We think about it all the time. We invent new, clever ways to diagram software, capture requirements, interview users, validate functionality and come with all sorts of certifications. More than, say accounting, we are process focused people. Maybe our processes suck, but we spend a lot of time, energy, certification exams, etc, on those processes.

    Tip of my hat: He does mention starting small and iterating. I think that's the best way to build software.

  • the devil is in the details by prgrmr (Score:2) Monday January 08 2007, @04:08PM
  • For Me (Score:5, Informative)

    by KermodeBear (738243) on Monday January 08 2007, @04:09PM (#17513972)
    (http://www.kermodebear.org/)
    What makes software development so difficult for me in my particular case:

    1. Requirements are not clearly defined
    2. Requirements that are defined change constantly
    3. No existing documentation on the system I work with
    4. Outdated technology (Not a big issue, but many things are just easier to do with newer software)
    5. The sales department sells features that do not exist, promise a date, and do not consult IT at all about the feasibility or time estimates

    4 out of the 5 things I have listed above have to do with bad information / lack of communication.
    • Re:For Me by cryfreedomlove (Score:2) Monday January 08 2007, @04:25PM
      • Re:For Me by KermodeBear (Score:2) Monday January 08 2007, @04:32PM
        • Re:For Me by Jeppe Salvesen (Score:2) Monday January 08 2007, @05:10PM
        • Re:For Me by computational super (Score:2) Monday January 08 2007, @05:40PM
        • Re:For Me by plopez (Score:2) Monday January 08 2007, @06:36PM
        • Re:For Me by 0xdeadbeef (Score:1) Monday January 08 2007, @07:28PM
      • Re:For Me by CoolCat23 (Score:1) Monday January 08 2007, @05:18PM
    • Re:For Me by anomalous cohort (Score:2) Tuesday January 09 2007, @09:03AM
  • Why is it so hard? by CasperIV (Score:1) Monday January 08 2007, @04:11PM
  • Complexity & Culture (Score:5, Interesting)

    by denoir (960304) on Monday January 08 2007, @04:12PM (#17514022)
    There are two major reasons why software engineering is today not comparable to more traditional types of engineering.

    The first reason is the complexity of the systems. There are essentially extremely many interacting parts that cause all sorts of emergent phenomena. This is a field that we don't really know how to handle very well - good quantitative models of complex systems simply don't exist. We need more study of systems theory and chaos theory to build some form of predictive models on which in turn can base planning.

    The second problem is a sort of 'freedom of thought' culture that sees coding as the vaguely mathematical expression of ideas. As there are a huge number of degrees of freedom most attempts to regulate it in practice have been abandoned. So instead of just the problem of describing a mathematical problem, you throw individual human preferences, thinking and biases into the equation.

    Of course it can't continue that way forever and we need to move to a meta level of coding. We do have well-constructed systems, such as the software on-board an airplane - but they are laughably primitive (because you have to account for all possible states the software can get in to). And we have advanced software, but it is laughably unreliable.

    Still, there is reason to be hopeful. We're not inventing the wheel every time any more (just the horse carriage and so on). Modern programming systems have extensive class libraries that are on average a more stable foundation than making a custom implementation from scratch every time.

    Ultimately however we need to know how to handle complex systems and how to enforce convergence/stability to systems where the huge number of possible combination of states can be analyzed. And sad as it is, if we want it to be reliable, the liberal individual approach to coding has to be abandoned in favour of a much more strict industrial way of thinking. Right now we have handcraft and we need industrial precision, standardization and quality.

  • If it was easy by dantal (Score:2) Monday January 08 2007, @04:12PM
  • Engineering and Education by TrappedByMyself (Score:2) Monday January 08 2007, @04:13PM
  • Part of the problem by grasshoppa (Score:2) Monday January 08 2007, @04:13PM
  • It's simple (Score:5, Insightful)

    by ozzee (612196) on Monday January 08 2007, @04:14PM (#17514050)

    When you ask a carpenter "are you done ?", almost anyone can verify the answer just by looking at it.

    When you ask a programmer "are you done ?", it is difficult to verify the answer.

    There are so many ways to accomplish a goal in software that you need a number of very expensive controls in place to validate the result. Very few managers know how to do it and very few C*O's are willing to spend the money to put in place even the minimal control measures even though I can say in every case where ther were good controls put in place the benefits far outweighed the costs.

    This leads to a plethora of problems that I won't repeat here but I know too well.

    Eventually everything breaks down when the C*O's start making technical decisions that they are not qualified to make and it's all downhill from there.

    • Re:It's simple by Tankko (Score:1) Monday January 08 2007, @04:35PM
    • Re:It's simple by sesshomaru (Score:1) Monday January 08 2007, @04:38PM
      • Re:It's simple by arthurpaliden (Score:1) Monday January 08 2007, @04:54PM
    • Re:It's simple by pipingguy (Score:2) Tuesday January 09 2007, @12:34AM
    • Re:It's simple by clickclickdrone (Score:2) Tuesday January 09 2007, @04:34AM
    • Re:It's simple by cmat (Score:1) Tuesday January 09 2007, @02:08PM
  • It's not that complicated... (Score:4, Insightful)

    by Gunark (227527) on Monday January 08 2007, @04:22PM (#17514180)
    The answer to this question isn't complicated. Software development is hard because it requires that the developers impose an artificial abstraction on the real world -- a real world that could be conceptualized in an infinite number of ways.

    Once you decide on some particular conceptualization, you make certain assumptions about what is and isn't possible. This is the root cause of most if not all of developers' headaches. Despite our best intentions, we find that our carefully engineered abstraction does not capture everything about the real world relevant to the given task (either because we got it wrong the first time, or because the task itself has changed).

    This, in fact, is a deep problem in computation in general -- a huge obstacle in artificial intelligence, for example. We need an algorithm that can pick out the salient aspects of a problem and ignore the irrelevant ones. Until the day that we have this (and that day may never come) the hard part of software development will remain an art form based on intuition and creativity.
  • ...because planning isn't doing and we want to do! by jofny (Score:2) Monday January 08 2007, @04:22PM
  • Who says it's hard? by Animats (Score:2) Monday January 08 2007, @04:23PM
  • A few reasons by scdeimos (Score:2) Monday January 08 2007, @04:23PM
  • No such process by camperdave (Score:2) Monday January 08 2007, @04:23PM
  • by troll (4326) on Monday January 08 2007, @04:24PM (#17514220)
    We promise according to our hopes; we perform according to our fears.

    Managers -- down to mid-level -- need to have dates, so the programmer gives the earliest possible date. The software goes out buggy, untested. More pressure on the programmer and management doesn't trust programmer estimates anymore.

    Solution? None, with the current business model.
  • Short Answer (Score:5, Interesting)

    by 955301 (209856) on Monday January 08 2007, @04:24PM (#17514228)
    (Last Journal: Thursday December 08 2005, @11:00PM)

    Software is still a Science and not an Engineering practice.

    As long as the design can also be the implementor and estimates based on actual analysis are optional, Software will NEVER be an engineering study.

    These aren't changing quickly for what I believe are a few reasons:

    IEEE has not created a Professional Engineer - Software and noone really wants them to.
    Companies don't like to be told they have to hire something that sounds expensive to build something they cannot see.
    Companies will NEVER open their software to outside inspection the way construction companies must open their buildings because of the concept (flawed, I think) of Intellectual Property.

    If a company had to have their software inspected by a Software P.E. before using it in production or selling it to end users - If Software P.E.'s had to adhere to standards which included concrete estimates and testing - If companies were not allowed to use anyone they could find that has seen a computer to write their software... commercial software development would be much further ahead.

    Do I believe any of this should happen? No. Why? Because I want it to continue to fail. I do not believe software development should be put on a pedestal or only performed by "experts". I believe shoot from the hip software projects allow open source software projects to exist and to succeed in the market.

    Open source works without accurate estimates because the contributors can flock to good projects and don't have to adhere to a labour budget. Company employees can't get wind of the cool software project and leave the crappy one's - corporate structure and budget's won't let them.

    I don't believe companies with more than 120-150 people are stable - once they breach this range empire building occurs and massive uncontrollable monsters result. If a company truly needs more than 150 people it should split into two and partner on the project at hand. I believe this is a human condition - humans work best in tribes where they can personally know all of the members.

    All of this might be completely and utterly wrong. But it's my hypothesis.

  • No one knows ahead of time what to write by scottsk (Score:2) Monday January 08 2007, @04:24PM
  • The Truth by carrier lost (Score:2) Monday January 08 2007, @04:24PM
  • by Todd Knarr (15451) * on Monday January 08 2007, @04:25PM (#17514246)
    (http://www.silverglass.org/)

    Software design and development is more akin to an architect designing a building rather than the more common analogy of building the building once it's designed. Except that software developers are often burdened with requirements that any architect who valued his license would reject. For example, management often dictates which parts are to be used (ie. "We're going to use MS SQL Server as the database engine."). What architect would design a skyscraper after having been ordered by the client to use pine 2x4s instead of steel beams, or design a 1-story residential house under the requirement that he use titanium box beams instead of 2x4s? And then there's what the article notes at the top of page 3: software requirements change right up to the day of release. When an architect goes to design a building, the requirements are fixed before he starts. Square footage, height, number of floors, number of people each floor has to accomodate, number of elevators, number of toilets needed on each floor, how high the ceiling of the lobby floor will be, all that's fixed in stone before any design work begins. Sometimes that requires back-and-forth between the client and the architect to get everything clear, but it all happens before major design work begins. No architect's going to design the foundations of a building until he knows exactly (or at least very very closely) how much mass is going to have to sit on those foundations and how much horizontal shear they're going to have to handle. If the client can't decide what he wants, the architect just goes "Fine, call me when you decide what you want.". And even when this kind of analysis is done, software requirements change constantly after design's started. See above, no architect's going to accept the client changing the number of floors or the square footage of floors without also agreeing to a complete redesign to accomodate the changes with all the delays and additional costs that requires. If the client didn't like it, the architect would just hand the client the work to date and tell him to have a nice day. And no there wouldn't be any refund of money, the architect's held up his part of the deal as best the client will let him.

    And then there's another parallel: architecture is only half engineering, the other half is art. Every building is different, and it's accepted that the architect's going to have to have time to come up with the parts that aren't off-the-shelf standard. There isn't a single standard floor-plan for a single-family 3-bedroom house, there aren't any rules that can be mechanically applied to create a floor-plan, and it's accepted that the process of creating a floor-plan is more creative than anything else and people without the knack for it just aren't going to be very good at it. And that on the next single-family 3-bedroom house much of that work's going to have to be done over again because the new client doesn't want the same thing the previous client wanted.

  • changing requirements by mrcubehead (Score:1) Monday January 08 2007, @04:26PM
  • Evaluate at every stage by digerati00 (Score:1) Monday January 08 2007, @04:26PM
  • by lawpoop (604919) on Monday January 08 2007, @04:27PM (#17514282)
    (http://lawpoop.blogspot.com/ | Last Journal: Friday May 28 2004, @06:51PM)
    I believe that these days there is a gap between the kinds of concepts that you learn in computer science, which are mathematical things, and the everyday social problems that people are trying to solve with computers. It was summed up nicely a few years ago in a criticism of open-source software someone on the internet -- someone was complaining that the developers of GNUcash were dealing with memory leaks. I think they were using c or c++, and the complainer was saying they should migrate to java or python or something. If you're trying to make a computer program to solve problems, it's a waste of time to be solving computer problems. You should be solving the pre-existing human problem.

    Every tool has its own problems. One problem is accounting, or keeping track of money. With pen and paper, you can run out of ink or paper. Humans aren't good at adding numbers in their heads. With computers, you can completely erase all of your work with a few clicks of the mouse or keyboard. So there are ways that problems inherent in the tool can emerge, which take energy and attention away from solving the pre-existing problem.

    Currently with computers we are trying to abstract problems such as banking and business into simple logic puzzles. I think that's too much of a simplification. I think we need to create a virtual world full of basic human-percieved concepts, such as time, weather, humans, animals, etc. and create programs by manipulating those basic ideas and objects.

    An example is an ontological system like OpenCyc. An ontological system holds hundreds of thousands of logical assertions like "Animals eat Food" and "Paris is the Capital of France". Basically, an ontology system has some basic common sense. From all of these assertions, it can make logical conclusions. So, if well tell Cyc that Duke is a Dog, it can conclude that Duke has a tail and eats food. If we tell it that Duke lives in Paris, it knows that Duke lives in France.

    Now imagine, instead of dealing with animals and where they live, it has a bunch of assertions about generally accepting accounting principles. One day, you might be able to just sit down and talk with an ontological system via email or IM, and say, "We got a check from client A for $575, another check for $440." and then the computer balances the books with all the other accounting principles it 'knows'.

    Current programs seems to be exclusively a digital re-creation of paper-based forms and filing cabinets. It's a sheet of paper with a bunch of field:value pairs, and reports are the resulting logical operations you can do with all of that data. This is *basically* the relational database. I think we are hitting the limit of the field:value model of reality. I think there are other models, such as virtual realities like online worlds, knowledge systems like opencyc, etc.

    Programmers are working exclusively at too low of a level. Yes, of course, we will always need to teach and understand basic boolean logic and computer science terms, but we need to start working at higher-level, human friendly concepts.
  • Why it's so difficult by BluedemonX (Score:2) Monday January 08 2007, @04:27PM
  • Lack of a specification language! (Score:4, Interesting)

    by vinn01 (178295) on Monday January 08 2007, @04:29PM (#17514312)

    Home builders have architectural plans. Machinist have blueprints. Electronic equipment builders have schematics.

    Software engineers are stuck trying to figure out the incoherent ramblings of marketing/sales/business analysts/corporate executives/users and a host of others who have no means to specify what they are asking for.

    Software specifications are uniformly deplorable.

  • You wanna know by MrCopilot (Score:2) Monday January 08 2007, @04:32PM
  • Software has HYSTERICAL complexity. (Score:5, Insightful)

    by Ungrounded Lightning (62228) on Monday January 08 2007, @04:32PM (#17514366)
    (Last Journal: Friday November 02, @02:49PM)
    What makes software so hard? The enormous complexity of the software constructions.

    Why is it so complex? Because it's so EASY to build it.

    Example: Pre-computers, the moment-to-moment computations necessary to run an automobile engine were performed by mechanical devices, mainly the distributor and carburator. Every term in every computation was manufactured as a number of physical components, several of which are moving parts.

    For instance: The RPM input to the spark advance was computed by two weights on pivots, with springs and stops, rotating a sleeve on a shaft. The shaft was driven by the camshft through a gear and the sleeve carried the cam driving the contact points or (in an electronic ignition) the starwheel that passed the sensor coil. Adding this computation (compared to no RMP spark advance) added five moving and four stationary parts, to be assembeled, and a test stand the volume of an office cube to test the result, and allow a worker to adjust the constants by bending the spring supports with a screwdiver.

    In software this computation can be done by PART of ONE line of code. (In real engine controls it's actually done by more - mainly so the computation can be more complex and thus better approximate ideal running conditions.)

    Software changed the game completely: When adding a piece of a compuation requires a moment of thought, a minute with a text editor, and issuing a compile command (plus whatever testing is necessary to convince yourself you got it right), rather than months of an engineer's and draftsman's time, manufacuture of dies, lab work to check the result, repeat through three layers of departments (to prove it can be done, to prove it can be done reliably, and to prove it can be manufactured affordablly), the amount of work and time to implement one bit of complexity reduced drastically.

    The result was that the amount of complexity that can be afforded rose in proportion. Given that the proportion was hysterically large, the amount of complexity handled by each person became enormous.

    Unfortunately, programming is NOT formulaic. Portions are - and as they are identified they are rendered into algorithms and software is written to perform them. The result is that the part people work on is ALWAYS the part that is "fuzzy" and difficult to formalize.

    Programming consists of rendering a set of requirements into a correct specification for meeting the requirements. (The reset is automated.) This is not an easy task - and it gets more difficult with increasing complexity of function. Unfortunately, methodologies for performing it have remained in a catch-up game: The better the tools, the more complexity a worker can handle. The more he can handle, the more he is assigned.

    To quote McClary's Third Law of Computer Technology: Software complexity expands to exceed the capability of any software development methodology.
  • A manager was asked how many programmers s/he had: by troll (Score:1) Monday January 08 2007, @04:34PM
  • To turn it around.... by GeorgeMcBay (Score:2) Monday January 08 2007, @04:34PM
  • Fucking C by SensitiveMale (Score:1) Monday January 08 2007, @04:34PM
  • First and formost : Management by Shivetya (Score:2) Monday January 08 2007, @04:38PM
  • Software development is hard by goldcd (Score:2) Monday January 08 2007, @04:40PM
  • Development Tools are always Under Construction by cyclocommuter (Score:2) Monday January 08 2007, @04:41PM
  • It's just what I asked for.... by arthurpaliden (Score:1) Monday January 08 2007, @04:41PM
  • Software development is hard because..... by mlwmohawk (Score:1) Monday January 08 2007, @04:42PM
    • 1 reply beneath your current threshold.
  • Programmers dont listen to users... by PermanentMarker (Score:1) Monday January 08 2007, @04:42PM
  • It does not have to by trydk (Score:2) Monday January 08 2007, @04:46PM
  • SW dev is hard because big CO's gain power/control by SimBuddha (Score:1) Monday January 08 2007, @04:46PM
  • What Makes Software Development So Hard? by Ari Rahikkala (Score:2) Monday January 08 2007, @04:52PM
  • Making software is not hard... building teams is. by Dystopian Rebel (Score:2) Monday January 08 2007, @04:53PM
  • Two factors by SoulRider (Score:1) Monday January 08 2007, @04:57PM
  • vendors & gnome are to blame. by LordMyren (Score:1) Monday January 08 2007, @04:58PM
  • reality by anwyn (Score:1) Monday January 08 2007, @05:01PM
  • Users by filesiteguy (Score:2) Monday January 08 2007, @05:11PM
  • Two big elephants in the room by Jerf (Score:2) Monday January 08 2007, @05:16PM
  • Software Engineering != Engineering by Pedrito (Score:2) Monday January 08 2007, @05:18PM
  • if it wasn't hard, everyone would do it... by hguorbray (Score:2) Monday January 08 2007, @05:20PM
  • What makes Software development so hard? by wonkavader (Score:2) Monday January 08 2007, @05:21PM
  • You just admitted you don't know what you're doing by syousef (Score:2) Monday January 08 2007, @05:23PM
  • Looks like he doesn't know Knuth (Score:3, Insightful)

    by plopez (54068) on Monday January 08 2007, @05:35PM (#17515542)
    FTA:
    The idea is that if we're going to turn the creation of software into a true science, we need to first have principles. We need to know the fundamentals and formulas by which software behaves. What are the laws and principles we can count on in creating it?

    I think Knuth has been working on that.

    But in general, the reason software is hard is that the problem domain is hard. You can't solve anything without understanding the problem. This is why hiring code monkeys causes so many problems. THey may make nice GUIs and know how to build a web based wizard 'out of the box', but end up knowing nothing about the problem at hand.

    Other observations:
    1) He gets it write when he talks about things always changing. Part of the reason projects like Vista get delayed is that they take so long is that the requirements change. If you can't do it in 6-9 months, don't do it.

    2) Nice to see him reference Brooks.

    3) Another nice qoute:
    The only real reason that a team gets together and writes a new piece of software is that they want to do something new, something another product doesn't do, whether it's to add a feature, or to be compatible in a different way with another system.

    For years now I have said: "Software development is R&D". If the software has been built then use it. If you must do scratch development, then understand that it will be open ended; and all attempts to schedule, budget and predict will fail. It is *not* an industrial process, though we tend to treat it as such.

    4) My observation is that much of 'Software Development' is actually social. You are working with users, managers, investors and programmers and trying to get everyone to agree on something. It gets political *fast*. So a good SD team must not only bee good at learning new problems domains and coding up solutions, but also must be good at human relationsships. And the closer the development team is to the end user, the easier this is.
  • The Kolmogorov Complexity of requirements changes by presidenteloco (Score:1) Monday January 08 2007, @05:35PM
  • What a Surprise by arjay-tea (Score:1) Monday January 08 2007, @05:36PM
  • Fred Brooks answered this 20 years ago by jam42 (Score:1) Monday January 08 2007, @05:47PM
  • I blame the requirements by Xernon (Score:1) Monday January 08 2007, @05:51PM
  • Too many fad diets... by Kazoo the Clown (Score:2) Monday January 08 2007, @06:20PM
  • Some thoughts by cdrguru (Score:2) Monday January 08 2007, @06:23PM
  • not everyone is a rocket scientist by TobiasS (Score:1) Monday January 08 2007, @06:37PM
  • How to learn software design by nih (Score:1) Monday January 08 2007, @06:43PM
  • Crisis? What Software Crisis? by DavidHumus (Score:1) Monday January 08 2007, @06:47PM
  • by MrBandersnatch (544818) on Monday January 08 2007, @06:50PM (#17516646)
    Software development is now incredibly *EASY*. I mean we have tools such as C#, VB, .Net, Java, Perl, PHP, Python, COM, CORBA, SQL, J2EE, IIS, APACHE, XML, XSLT, HTML, XHTML, SOAP, XML-RPC, JBOSS, ZOPE, CSS, AJAX, Javascript, XQuery, XPath, UML, Patterns, SCRUMM, WMF, CardSpace, Passport, Windows, Linux, OS-X, WME, Direct-X, OpenGL, SDL, Eclipse, SVG....I mean, all this stuff software development still cant be "hard" now can it?
  • Just ask any female programmer by 0xdeadbeef (Score:2) Monday January 08 2007, @07:06PM
  • No Silver Bullet by KillerCow (Score:2) Monday January 08 2007, @07:12PM
  • Too much creativity left to the peons by CPE1704TKS (Score:2) Monday January 08 2007, @07:38PM
  • Read by alanmeyer (Score:1) Monday January 08 2007, @07:38PM
  • Root Causes (Score:3)

    by kaoshin (110328) on Monday January 08 2007, @08:12PM (#17517414)
    The Worse is Better [wikipedia.org] design philosophy, idiocy, selfishness and greed are factors leading to the difficulty of software design.
  • Everything large scale is hard by mldqj (Score:1) Monday January 08 2007, @08:28PM
  • here's a thought by briancnorton (Score:2) Monday January 08 2007, @08:51PM
  • "Mathematical Limits to Software Estimation " by betelgeuse68 (Score:2) Monday January 08 2007, @08:55PM
  • Because silly... by ed1park (Score:2) Monday January 08 2007, @09:04PM
  • Training & under estimating the difficulty by aGuyNamedJoe (Score:2) Monday January 08 2007, @09:13PM
  • Moo by Chacham (Score:1) Monday January 08 2007, @09:22PM
  • Management makes it so hard by Orion Blastar (Score:2) Monday January 08 2007, @09:23PM
  • so many inadequate similies ... by constantnormal (Score:2) Monday January 08 2007, @09:30PM
  • its hard because its being done wrong. by 3seas (Score:2) Monday January 08 2007, @09:32PM
  • Feature Drift and Meta-tizing by Tablizer (Score:2) Monday January 08 2007, @10:10PM
  • Increasing LOC -- increasing failure points by Money for Nothin' (Score:2) Monday January 08 2007, @10:17PM
  • Insightful vs. Funny by smccto (Score:1) Monday January 08 2007, @10:36PM
  • Because it is. by etnu (Score:1) Monday January 08 2007, @10:39PM
  • a foolish consistency ... by strangedays (Score:2) Monday January 08 2007, @11:03PM
  • I blame the languages... by grumbel (Score:2) Monday January 08 2007, @11:25PM
  • Lack of Efficient Methods of Planning by yosofun (Score:1) Monday January 08 2007, @11:40PM
  • Politics not Engineering and Experience by mccoma (Score:2) Tuesday January 09 2007, @01:15AM
  • Wrong approach... by slashmais (Score:1) Tuesday January 09 2007, @01:28AM
  • This guy must be some kind of dumbass by edunbar93 (Score:2) Tuesday January 09 2007, @01:29AM
  • Hey, didn't we already figure this one out? by cowboycarl (Score:1) Tuesday January 09 2007, @01:52AM
  • Software design is just like... by ignavus (Score:2) Tuesday January 09 2007, @02:10AM
  • This is already the reason by tcmak (Score:1) Tuesday January 09 2007, @02:18AM
  • Should be solved in 20 yrs by shashark (Score:2) Tuesday January 09 2007, @03:57AM
    • 1 reply beneath your current threshold.
  • Oh come on! by Viceroy Potatohead (Score:1) Tuesday January 09 2007, @03:58AM
  • IT development by threesixty (Score:1) Tuesday January 09 2007, @05:57AM
  • The best realistic explanation by 12357bd (Score:2) Tuesday January 09 2007, @07:03AM
  • It's easy by Heembo (Score:2) Tuesday January 09 2007, @08:13AM
  • freedom versus the wicked witch ? by planetfinder (Score:1) Tuesday January 09 2007, @08:34AM
  • The main culprit is by BlindRobin (Score:1) Tuesday January 09 2007, @11:27AM
  • Cost. by neimon (Score:1) Tuesday January 09 2007, @01:54PM
  • Compilers considered harmful. by wikinerd (Score:2) Tuesday January 09 2007, @04:23PM
  • There are many parts to the problem by rfc1394 (Score:2) Tuesday January 09 2007, @10:06PM
  • Divide and conquer by Per Abrahamsen (Score:2) Wednesday January 10 2007, @06:02AM
  • Re:The answer is easy by DavidR1991 (Score:1) Monday January 08 2007, @04:12PM
  • Mod parent up! (Score:5, Insightful)

    by EmbeddedJanitor (597831) on Monday January 08 2007, @04:14PM (#17514054)
    While the comment might just sound like a silly grab for a funny, I think this is a very valid point. We really have far too many developers who were not intended by the Intelligent Designer to be so. Software quality and robustness etc (which impacts on delivery schedules etc) are dictated mainly by the lowest performer in the group rather than the highest performer.

    There's a whole industry of dev tools out there trying to convince management that SilverBullet will make your software come out on time, or make your crappy programmers more productive. I don't think so.

    What we really need is to promote the concept of the CodeSmith like a balcksmish, silversmith or whatever, coding is a skilled artisan occupation. Instead of trying to keep good coders coding, most organisations try promoting them and making them managers. Eventually you're left with just the dregs coding.

    [ Parent ]
    • >Instead of trying to keep good coders coding, most organisations try promoting them and making them managers.

      Whereupon it turns out that they have exactly the wrong skill set to be managers and things get even worse.

      I once saw a deep-thinking and productive coder promoted to management. The result was a catastrophe of Biblical proportions. In terms of morale alone, when employees got together to compare notes they found that they'd independently been thinking of where to take cover if the guy went postal.
      [ Parent ]
      • 1 reply beneath your current threshold.
    • Re:Mod parent up! by FecesFlingingRhesus (Score:3) Monday January 08 2007, @05:32PM
    • Re:Mod parent up! by mrchaotica (Score:3) Monday January 08 2007, @05:51PM
      • Re:Mod parent up! by Aladrin (Score:2) Monday January 08 2007, @06:46PM
      • Re:Mod parent up! (Score:5, Insightful)

        by jc42 (318812) on Monday January 08 2007, @08:30PM (#17517554)
        (http://trillian.mit.edu/~jc/ | Last Journal: Saturday August 14 2004, @05:03PM)
        Or promote the concept of the title "Software Engineer" requiring a professional certification, the way real engineering does.

        Actually, this has been attempted repeatedly in the software business. It has always failed, for pretty much the same two reasons.

        First, the only thing that the organizers (invariably software managers) can agree on is testing for knowledge of the mundane introductory-level details of IBM/Microsoft software. This means that in the more technical areas, where other (higher-quality) systems are used, there is no certification.

        Second, even if the customer wants software that runs on IBM/Microsoft systems, they quickly realize that that "mundane introductory-level details" part can be rephrased as "It's a totally Mickey-Mouse certification", and the people who get certified tend to be the novices who think that a certification will get them the big bucks that their knowledge doesn't qualify them for.

        So in software, "professional certification" always turns out to be a big joke. Everyone knows this, but pretends that a good certification program would help.

        And no, I don't know how to make a non-joke certification program, either, despite several decades of building software. If I did, I certainly wouldn't be hired to take part in the committee that manages the certification program. (But I'm disqualified anyway, because I've worked too much on non-IBM, non-Microsoft systems to be considered for a position in a certification committee. ;-)

        [ Parent ]
      • Re:Mod parent up! by Jerry Coffin (Score:3) Monday January 08 2007, @09:14PM
        • 1 reply beneath your current threshold.
    • Re:Mod parent up! by Javagator (Score:2) Monday January 08 2007, @06:40PM
    • The Peter Principle by Randym (Score:2) Monday January 08 2007, @07:02PM
    • Re:Mod parent up! by SuluSulu (Score:1) Monday January 08 2007, @08:11PM
    • Re:Mod parent up! by tepples (Score:1) Monday January 08 2007, @04:58PM
    • Re:Mod parent up! by alienmole (Score:2) Monday January 08 2007, @10:08PM
    • 1 reply beneath your current threshold.
  • Re:Oddly... by HomelessInLaJolla (Score:1) Monday January 08 2007, @04:19PM
  • Re:Simple, really. Three words by Archangel Michael (Score:2) Monday January 08 2007, @04:24PM
  • Re:Lemme Guess... by necro2607 (Score:2) Monday January 08 2007, @04:31PM
  • Re:Lemme Guess... by TheWoozle (Score:2) Monday January 08 2007, @04:34PM
  • Re:Software developers? by lucabrasi999 (Score:2) Monday January 08 2007, @05:35PM
  • WTF? by slashflood (Score:2) Monday January 08 2007, @05:55PM
    • Re:WTF? by HomelessInLaJolla (Score:1) Monday January 08 2007, @06:14PM
  • 20 replies beneath your current threshold.
(1) | 2