What is software complexity?


As a fellow grug brained developer, I also agree that complexity is very bad. But what is software complexity? What does it look like? How does it come about?

The article above tells you what to do to avoid it, but doesn’t quite tell you what it looks like.

In John Ousterhout’s Philosophy of Software Design, he describes a few common symptoms of complexity, and what to do about it.

Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system.

The common symptoms are:

Also, complexity doesn’t come about abruptly. There’s usually no single cause you can point to. You don’t notice it accumulating until it’s too late.

I think J.O. is also realistic in that he recognizes there is a tradeoff between software design vs overengineering. Too much design leads to overengineering useless pieces, and may even cause more complexity. But some software design is useful to avoid complexity, and will likely lead to software that is easier to modify.


Have some thoughts on this post? Reply with an email.

If you're interested in updates, you can subscribe below or via the RSS feed

Powered by Buttondown.