Avoiding the Complexity Spiral

At work I intermittently talk about “complexity spirals”: the phenomenon where someone makes the wrong – usually over complicated – choice in software design, but for time constraints or some other reason the development group is unable to go back and make the right choice.

Sooner or later, users want a new feature. That feature is complicated to implement on top of the wrong solution. If you go ahead and implement it, you’ve now got two complicated bits of code instead of two simple ones. Soon you spiral out of control, as the complexity piles up and it becomes very time consuming to add functionality.

All this can be avoided if you recognise the original design was wrong. This article on Raymond’s Windows blog interested me today, as its a well known example of where the “wrong” decision (.lnk files instead of symbolic links as first-class members of the file system) are so incongruous with the rest of the operating system that implementing what seems like a simple behaviour that users will want, is essentially impossible.

Leave a Reply