3.6. Where is Knowledge in Software Development?

The whole software development process is an attempt to codify knowledge. We start with some vague idea of what a system should do and, through successive processes of specification, design, implementation and testing, try to turn that knowledge into a useful working model.

Our problem is that knowledge is difficult to codify. As software developers, our skills and knowledge reside in our own domain, our own field of ba. We take a problem domain, with its own ba field, and attempt to produce a product that will exist in both domains, satisfying the requirements of the problem domain while meeting the engineering requirements of our own solution domain. (Chapter 4 will look more closely at the different domains.)

Figure 3.1. Software is like an iceberg.
Figure 3.2. Solutions develop their own ba.

Software needs to exist simultaneously in these two environments. Commercially, it is the part seen by customers that tends to get priority. However, this often represents only the tip of the iceberg (Figure 3.1). As engineers, we see the bigger, more complex, problem beneath the waves.

Once our software is developed and given to users, an interesting thing happens: the software develops its own ba. In any community of software users, ...

Get Changing Software Development: Learning to Become Agile now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.