Sunday, 14 March 2010

Software Development is not a Production Line

I was discussing the software development process with one of the architects in my team this afternoon. The key observation was that software development is not a production line; the only production line in software development is when you're stamping out the media once the software has been developed.

Software development, by the very nature of software, suffers from maleability. Because it is relatively easy to change software, change ensues.

Walter Vincenti in "What Engineers know and how they know it" coined the terms "normal design" and "radical design".

Normal design is when "...the engineer knows at the outset how the device works, customary features, and if you design it properly along such lines, good likelihood of accomplishing the desired task".

Radical design is where you are doing something new and innovative and you don’t know how it should be arranged, you don’t know how it works, you’ve never really seen anything quite like this before and you have no presumption of success.

Microprocessor Development

Microprocessor development is comparable to software development: there is lots of design work and experimentation, then the resulting microprocessor is stamped out on a production line.

The environments in which microprocessors find themselves deployed are a lot more controlled than software, the microprocessor's interface to the circuit board on which it is mounted is well defined, the strength, potential, frequency and shape of the signals the microprocessor receives is fairly well defined.

Software, particularly when used by humans (or other software created by humans), deals with a vastly more complex environment.

Craftsmen

Rather than production line workers the people involved in producing software are like a collection of craftsmen.

Like a craftsman, whenever working on a problem, each one will:
  • analyse the problem to some degree
    (the stone sculptor will observe and feel the stone)
  • design a solution, or a sufficient first step
    (the stone sculptor will decide where the first major cuts will be)
  • implement a solution
    (the stone sculptor will start hammering and chiseling at the stone based on his design)
  • test the solution
    (the sculptor will look at the carved stone to decide whether it matches the subject)

No comments:

Post a Comment