Software development is not really a single discipline. What comes under the overall field is a combination of disciplines that address a range of problems:
- Maintaining and evolving fielded code
- Adding significant new features to an existing application or platform
- Building an entirely new application or platform
These differ in the amount of innovation required and the amount of information available for delivering a quality system. Teams working on type 1 problems generally are not required to invent anything and they have detailed information on the code change required and available technology. Teams addressing type 2 efforts may need to be innovative in building out and integrating the capability. Also, they usually have incomplete information of the problem to be addressed and the technology to be used. Hence they should do some experimentation. Teams addressing type 3 efforts should plan to have much learning and invention.
The situation is described in figure 1 below. The x-axis is innovation and the y-axis is completeness of information and hence ability to make prediction.
Figure 1. The development spectrum
In the face of this, it is hardly surprising that there are a plethora of software techniques that have been adopted over the decades. Each of these is effective for some part of the innovation spectrum. None are the answer for the whole spectrum. An example of mapping some key processes to the spectrum is found in figure 2 below.
Figure 2 The development process map.
A team may be asked to address all three kinds of software efforts, but that is rare. Every software organization has a unique mix of types. So one size does not fit all.
A blog post is far too short to elaborate on this idea. However, this is among the thoughts that lie behind the Integrative Framework under development by Israel Gat and myself. This framework will be discussed in some detail during our workshop at the upcoming Cutter Summit. There we will discuss how to select and adapt the appropriate set of techniques to your development mix.
If you cannot make the Summit and are interested in your own workshop, please contact firstname.lastname@example.org.