What Makes Software Development So Hard?
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."
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.
Love sees no species.
The last project I was on which had requirements that didn't change at all during development was 7 years ago. And it was built right on schedule. For me it's been the ever-changing requirements which delay projects the most. The other half of the problem is usually bad estimates, but that's almost irrelevant after the requirements change.
Developers: We can use your help.
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.
The reason you attack the hard problems first is that you have less money invested if the hard problems turn out to be unsolvable (within your time/money/skill scope).
The big difference between a school test and a software project is that you only need to answer as many questions correctly as necessary to get a passing grade (you can thus skip the hardest questions), whereas in a software project you must solve the hard problems if you want to complete the project.