outstrip supply for the foreseeable future. Hence, more and more software will be behind schedule, over budget, underpowered, and of poor quality -- and there's nothing we can do about it.
"Nothing?" you ask. "What about better schools, better tools, better on-the-job training, better methodologies?" Those are essential because they raise the quality of most developers. But they do not solve the fundamental problem.
The conclusion I have reluctantly come to after more than 20 years of software development is this: Excellent developers, like excellent musicians and artists, are born, not made. The number of such developers is a fixed (and tiny) percentage of the population. Thus, the absolute number of such developers grows very s
lowly. At the same time, the demand for them expands rapidly due to the world's increasing use of, and reliance on, software.
The situation is worse than it appears. Some of these innately talented people never go into the computer industry. Many who do never develop their full potential. Others become prima donnas, demanding large salaries and extreme benefits. Or they become "cowboy programmers," shooting from the hip and holding teams, projects, or entire companies hostage. A few burn out and leave the field. Of those left, only a fraction meets the requirements for your project.
This is not to slight the decent, talented software engineers, the ones who study hard and work hard at developing and maintaining their skills. Indeed, if not for them, we wouldn't have a software industry at all. But even they can't meet the demand, and their efforts are undermined by the mediocre (or worse) programmers.
Suppose that companies needed in-house orchestras to produce quality music. The demand for
musicians would explode, and their starting salaries would soar. Think about the vast number of people (especially college students) who would take up music regardless of their talent or inclination, guaranteed an entry-level position because companies were desperate to fill all those seats.
Here and there, a great soloist or ensemble would play with passion, skill, and creativity, but much of what musicians produced would be cacophony, especially as the newcomers and those lacking talent and skill struggled with unfamiliar instruments and pieces. Now imagine that jobs, companies, and lives depended on how flawlessly the players performed.
This scenario describes the current state of software development. I saw this for the first time when I went back to teach computer science at the same place I had studied a decade earlier. The enrollment of computer science majors had gone up by almost a factor of 10, yet a professor who had been there since I was a student noted that the absolute number of rea
lly excellent computer science students remained the same.
In the years since my graduation, my experience in building and working with development teams has confirmed this. Ask any manager how many resumes and interviews it takes to find a top-notch software architect or developer.
As needs, costs, and opportunities escalate, some great breakthrough -- a "silver bullet," to use Frederick Brooks' classic phrase -- may yet quell the software crisis, reducing the complexities of development. If you wish to bet on that, go ahead. But in the meantime, keep your eyes and your checkbook open and grab the great programmers when you can -- they're getting really hard to find.
photo_link (39 Kbytes)

Bruce F. Webster is a consultant and author of Pitfalls of Object-Oriented Development and The Art of 'Ware (both M&T Books, 1995). He can be contacted on the Internet at
bwebster@bfwa.com
or on BIX c/o "editors."