A college education is supposed to make us more knowledgeable, not less, but that doesn't seem to be how things have worked in software development. The way this subject is taught at most colleges and universities is actually eroding the quality of systems produced.
Despite miraculous advances in hardware efficiency, software systems development is less efficient now than it was 30 years ago. Reliable software systems can be produced more efficiently by a programmer with a computer in his basement than by a professionally managed IS organization.
Most software experts come from three educational disciplines: engineering, information science and computer science.
The engineering discipline dictates that software engineers spend most of their time preparing detailed plans that define every aspect of the development process. Students are taught that when these specifications are completed, their job is over and they should let someone else do the implementation.
Implicit in software engineering education is the idea that specifications are the only legitimately creative part of software development and no one should be involved personally, let alone emotionally, with a software project from conception through maintenance.
The fact is, however, that software system implementation is the most critical part of any software development project. The way it is handled and the quality of the people who handle it almost always mean the difference between system acceptance and system disaster.
Even more than the software engineers, management information graduates denigrate the place of the software implementor. Information management studies concentrate on "big picture" analysis and treat implementation as an unfortunate necessity.
The computer science curriculum approaches software development as if it were a natural science, using the scientific method to seek basic principles and fundamental truths. In the eyes of this group, no one who implements software without employing the same rigorous scientific methods can possibly be doing an efficient job.
All Talk, No Delivery
Because it is considered good corporate policy to get the leaders of tomorrow from the academic world, the software community is becoming increasingly populated by sophisticates who can merely write specifications, talk about the "big picture" and deliver impressive speeches.
At best, the graduates of these courses of study patronize the efforts of the people who code, test and maintain software systems. At worst, these newly minted graduates actively malign the programmers' approach to software development and express the opinion that anyone who writes innovative and creative code should be fired.
Unless we rediscover the value of the experienced, end-to-end programmer, we will soon arrive at a point where all our software experts will be able to plan and discuss projects, but will be totally incapable of making them work.
On second thought, maybe we're at that point already.