Agile Management - Complexity Thinking View more presentations from Jurgen Appelo.
This week I have been reading the famous book by Frederick P. Brooks Jr., called The Mythical Man-Month (1995 Anniversary Edition). I found it interesting to see that Brooks had raised the issue of software complexity as early as 1975.
"Software entities are more complex for their size than perhaps any other human construct. […] The complexity of software is an essential property." (p.182)
Though his definition of complexity probably does not exactly match the one people use in Complexity Theory, a field which has only started to emerge some twenty years later. Nevertheless, one might call this man a visionary if he was already able to see bits of the connection between Software Engineering and Complexity Theory in those early years. Even more compelling was his contemplation, also in 1975, that software should be grown, and not built:
"The brain alone is intricate beyond mapping, powerful beyond imagination, rich in diversity, self-protecting and self-renewing. The secret is that it is grown, not built. So it must be with our software systems." (p.201)
This means that my scoop has been stolen from me more than 30 years ago…
However, all the more interesting is the fact that Brooks at the same time considered top-down design the proper way of building those complex systems.
"[…] furthermore, each of the architecture, implementation, and realization can best be done by top-down methods." p.143
Anybody dealing with Complexity Theory knows that this field is all about bottom-up self-organization. Top-down design is definately on the other side of the scale of system construction. Complexity deals with self-organization, not with some form of creationism. So, after reading this I am left wondering… Was Brooks contradicting himself? Or am I misunderstanding what he meant?