The Crisis
I hear the term software crisis from time to time, and it has always confused me. The software industry continues to produce and improve software at an astronomical rate. Users continue to consume it at the same rate. In addition, for all intents and purposes, this appears to be a totally sustainable trend. So where is the crisis?
As I understand it, those that use the term refer to the common occurrence of software projects not meeting time, cost or quality estimates. Certainly excessive time, cost or a lack of quality is a concern, but estimates and reality are not equivalent. However, other types of projects do not have the same difficulty in making accurate predications, so something must be wrong. Right?
I don’t think so. There is an alternative explanation to why software project estimates are so often wrong. It is not that the software industry is worse, but that it is better. No, this is not a tie-in to the worse-is-better philosophy. This relates to a fourth element in time, cost and quality matrix. It is called efficiency. In these terms, it is the rate at which cost and time are converted into quality.
This quality, efficiency, is the root cause for all of the unpredictability in software project estimates. The reason, is that efficiency among software development, varies greatly. This may initially seem a cause for concern, based upon the assumption that if some projects have high efficiency, and others do not, there must be something wrong with those that do not. The problem is that the differences in efficiency are not due to flaws in software project management, but due to an inherent difference in the value of quality.
For example, the difference between having the worst or best programmers has far more effect on efficiency than the difference between the worst and best in almost any other profession. Is there a much greater gap between the intelligence of the best and worst among programmers and other professions? I don’t think so. There may be a greater gap today than 10 or 20 years ago, but the effects of the “software crisis” was alive back then as well. In addition, 10 or 20 years ago, it would be easy to say that the gap between intelligence of the best and worst was less than most professions, since only very smart people were involved.
The Multiplier
No, the difference is not in the size of the gap, but in the importance of it. For example, if you took two people from another profession, where one person was 25% more efficient than the other, and retrained both as programmers, all other things being equal, I think you would find that the gap in efficiency would be far greater in the when acting as programmers. It might be something more alike to a 200% or 500% difference.
The actual multiplier also varies far more from task to task, then other industries. Coding a data entry form might have a relatively low multiplier when compared to debugging a resource leak in a distributed application.
Knowing this, we could try to decrease the variance by only using the “best”. But this is obviously impractical, since that is a limited resource, and the demand for software is far greater than is producible from that resource.
So how do we cope? My advice would be “just live with it”. Focus on raising the average efficiency, rather than attempting to standardize it. The only way to standardize efficiency is to bring the best down, and the effect of this would have a dramatic negative effect on average efficiency, and overall work output. This is not a suggestion to abandon all attempts to measure efficiency and predict results. These practices are still as valid as in any profession, perhaps even more so. The point is that we must accept that as long as the value multiplier remains high (and we want it to be) we will never be as successful at it as other industries.
Final Thoughts
One insight that we can gain from this realization is that for the time being, our focus should be upon measurement and prediction, rather than control. Control only becomes effective when you have sufficient quality information. If you exercise too much control without quality information, you are likely to do more harm than good. The process generally works as is, so until you know how to fix it.. don’t.
Another insight is that we should focus more upon developing efficiency through common sense methods. We should invest more in tools, benefits, and assisting developers, rather than cutting costs and restricting freedom.
Sunday, May 28, 2006
What Software Crisis?
Labels:
general programming
Subscribe to:
Post Comments (Atom)
5 comments:
I recently got back into a traditional software development area after having been away for years. I was astounded to find how little things have changed, how suspect methods like "the waterfall method" are followed unquestioningly.
Interestingly enough, when I researched this a little, I find that according to Answers.com (http://www.answers.com/topic/software-crisis),
the software crisis "was addressed by the implementation of various processes and methodologies most notably Royce's waterfall model."
If you follow the link for this model, you find that the Royce (1970) paper commonly cited as the source of this model was in fact written _against_ using the model because of its (widely known) problems.
So, the crisis was fixed by a defective model? Does this make sense to anyone?
How about this as an alternate explanation: people are so used to projects that are late and over-budget that it's no longer a crisis. Another alternative: most groups don't use a strict method and don't give firm estimates so they are never late or over-budget.
When I think of the term "crisis" in relation to software it is not just slipped timetables or slow completion that comes to mind. I tend to think of projects that never get completed, like the air-traffic control update, or the IRS software.
These are enormous projects, and tend to involve a mixture of hardware and software innovations. What seems to be going on is that the effort to write entirely new systems to arbitrary "specifications" leads to a tangle of inconsistent priorities, architectures, and so forth, that requires constant re-writing of code until the project has taken so long that the original conception is hopelessly obsolete.
I always wonder if it wouldn't be better to do these things "off the shelf" with working systems that are not optimal but "good enough", and to put the programming effort into ensuring good paths to next generation programs.
Linux source code passes 10 million lines. Average 30 (some say 50) bugs per 1000 lines of code means linux has some 300,000 bugs. I spend most of my time solving bugs left behind by 10 years of software development using the same tools and techniques still be used today. Mostly not my bugs. No crisis eh? Give your head a shake.
Crisis:
1. A stage in a sequence of events at which the trend of all future events, esp. for better or for worse, is determined; turning point.
2. A condition of instability or danger, as in social, economic, political, or international affairs, leading to a decisive change.
Are those bugs sufficient to halt use and development of Linux tomorrow? Even if so, are they sufficient to halt all software development?
They are annoying gnats rather than planet destroying asteroids.
The concept that there is no silver bullet, and that there is a crisis are almost fully opposed to each other. If there is truly a crisis, that implies there is some singular turning point that will change everything. If that turning point has a solution, then it is the mythical silver bullet.
The only way we can have no silver bullet and a crisis is if we're already doomed.
I don't think so. Software will continue to get better, in little bits as it's done for quite some time. Some projects will fail, others succeed, even if they fall short of overly ambitious goals. Progress is success in the grander scheme.
Linux is probably a bad example of buggy software as so many eyes look at it, as opposed to private software from big vendors and telecom.
Well you don't have to look far to see some of these gnats take big chunks out of companies. Quoting from IEEE (you might have heard of them) J Sainsbury writes off $526 million in 2006 due to a failed automated supply chain system. 5% to 15% of IT projects are abandoned shortly before or after delivery because of being hopelessly inadequate.
http://www.spectrum.ieee.org/computing/software/why-software-fails
Computer world reports in 2002 that buggy software costs the US almost $60 billion annually. Pretty hungry gnats out there alright.
http://www.computerworld.com/managementtopics/management/itspending/story/0,10801,72245,00.html
How much money do software bugs have to cost people in the US before you think it's a crisis? More than $60B I guess.
You yourself lament about the current model for multithreaded code is just not good enough. To be fair the bugs I was speaking of working on are are mostly in that category; those nasty race conditions that pop up under the right load and then lay waste to system behavior.
I thought Alan Kay's video quite interesting. I guess the development of "Pink OS" just about killed Apple. Jobs came back with NextStep and there was no more "pink" and Apple thrived. I can tell you from first hand knowledge that Handspring also fell into the same folly of trying to develop their own OS from scratch and that effort pretty much killed them. These weren't dumb people, but somehow the project just never got traction. How long did it take MS to make Longhorn? Oh about 5 1/2 years, and those folks have armies of smart guys right?
You said "The software industry continues to produce and improve software at an astronomical rate", and then respond to my comment with "Software will continue to get better, in little bits as it's done for quite some time". So I take it you've backed off from the idea of astronomical improvement of software. That's what most bothered me most about your article. If things are going so great why did MS struggle with Longhorn..er..Vista so much? Why is buggy software costing people so much a year? Why is every bug tracking system I use so slow like I'm running a vic-20? Why did my friend's xp winsock get so screwed up when she installed Norton Anti-virus sw that after two nights of online help and talking to her ip provider that we figured out there was nothing to do but re-install her whole system? OK now I'm ranting, but these are real experiences. I'll believe there is no crisis when I hear MS announces a development of a major new OS took less time than planned and didn't require beta testing.
Post a Comment