When I see how the age of digital transformation is still being proclaimed around me, how apparently no IT project can do without colourful notes, woolen threads and group loitering, doubts grow in me as to whether we are on the right track. I increasingly get the impression that the whole thing is largely a substitute action to deny the real problem.
Digital computers are themselves more complex than most things people build; they have very large numbers of states. This makes conceiving, describing, and testing them hard. Software systems have orders of magnitude more states than computers do.Frederick P. Brooks, Jr.
I am convinced that the development of software and the introduction of IT systems with effects on people and their actions is non-trivial and therefore a high level of complexity is system-inherent. Little has changed since the paper “No Silver Bullet — Essence and Accident in Software Engineering” by Fred Brooks: Neither developments in programming languages nor the introduction of agile methods can change this significantly.
Frederick P. Brooks, Jr.
Likewise, a scaling-up of a software entity is not merely a repetition of the same elements in larger size; it is necessarily an increase in the number of different elements. In most cases, the elements interact with each other in some nonlinear fashion, and the complexity of the whole increases much more than linearly. The complexity of software is in essential property, not an accidental one.
Dealing with system-inherent complexity requires measures other than negation. “Just do it” isn’t a good advice when we try to build solutions that are sustainable, take into account data protection and information security, and want to ensure that we did not overlook significant errors at critical points. There is a difference between generating and testing ideas quickly and building a robust and maintainable solution.