Of all the ‘laws of software’ that I subscribe to, this one is one of the most fundamental, and unwavering. I cannot find an exception to it, and years of experience reinforce it for me. I can look at a chunk of source code, or an operations manual, or even a build script, and see the effects of the software development process used to create the artifact.
Process affects architecture. If you use agile techniques, you will not only get your results in a different amount of time and features will appear in a different sequence than if you used iterative spiral techniques, but the software itself will have a different structure, different patterns, and different interfaces.
Just making an observation. Probably not even a controversial one, but one that bears making.
Software reflects the process that creates it.
If you want to improve the quality of the software you produce (regardless of how you measure quality), you can change tools, and you can change information, and you can change training, to your heart’s content… but the big effects will come from changing the process.
4 thoughts on “Software Reflects The Process That Creates It”
PingBack from http://blog.a-foton.ru/index.php/2008/11/27/software-reflects-the-process-that-creates-it/
I believe that this is another manifestation of Conway’s law (http://en.wikipedia.org/wiki/Conway%27s_law).
Thanks for the link. I wasn’t aware of who had claimed credit for pointing this out. This law predates my time in computing, that’s for sure. It is somewhat obvious, but it bears repeating. The implication is interesting, of course, because people will try to change the quality of software without changing the processes used to create it.
This isn’t constrained to software. It’s true of all things artificial.
One of the earlier chapters of this *awesome* book explains this from the perspective of computer architecture (hardware).
Design Rules: Vol 1 (MIT Press)
The design of an artifact and the process of designing the artifact are intertwined and cannot be separated.