by Conrad Weisert
May 14, 2010
©Information Disciplines, Inc.
This article may be circulated freely as long as the copyright notice is included.
We've been hearing vigorous debates lately about the pros and cons of recent fads in software development. Surprisingly, many of those debates focus on the process and pay little or no attention to the results that are produced.
To avoid arguments, I try to get the enthusiasts to concede that there are four possibilities:
|A good process (one that we like and admire) can yield||a good result|
|a bad result|
|A bad process (one that we hate and disparage) can yield||a good result|
|a bad result|
The 1970s brought the publication and selling of formal application system development life-cycle1 methodologies (SDLC), specifying a sequence of phases from initial conception through installation and operational start-up:
For organizations that practiced a high degree of professionalism the results-oriented approach tended to yield more successful projects and higher staff morale.
Recent fads in programming methodology have focused less on the resulting program than on the activities (or process) by which the program is produced. In many cases, that's a misguided emphasis that may seriously compromise the quality of our software. Those processes include cornerstones of the so-called "agile" methodologies, such as:
Those are indeed intriguing and potentially useful techniques, but a company standard requiring their use on projects misses the main point of having standards, which is to assure high-quality application systems. If a piece of production software was produced by pair programmers practicing test-driven development, that's irrelevant if the end product is superb and irrelevant if the end product is atrocious. If it was produced by a single programmer doing bottom-up development at home in the middle of the night, that's irrelevant, too.
Very few managers have any interest whatever in the processes that their I.T. department or contractor follows. They care about results: A new application system needs to solve the right problem at an acceptable cost at an acceptable time. It also should have a trouble free future, not only with respect to reliability and operational performance, but also with respect to flexibility and maintainability.
Therefore, an organization's I.T. infrastucture must emphasize results. In particular:
Build your staff from top performers. Tell them exactly what they're expected to produce and trust them to choose the best ways of producing it.
In coming months we shall explore the downsides of certain fad techniques as they affect software quality.
Return to table of contents
Last modified May 27, 2010