What is Accidental Complexity?
Brooks mentions that most of the gains in software productivity will come from tools that solve the accidental complexity of writing software. What is this accidental complexity? In 1986 when he published No Silver Bullet, I think most of it would be memory and processing constraints. Those problems are mostly gone unless you are on the bleeding edge Writing code to train LLMs or on the scale of Meta/Google. . I think he has been shown to right. But we still have accidental complexities today.
some current accidental complexity
It requires 24 docker containers so have a local copy of the system on my machine. The work it takes to keep all the local development environment running requires a team of about 5 people. It still breaks about once a week and I have to spend a couple hours figuring out how to get it working again.
We are migrating from one application monitoring service to another. This requires setting new alerts and dashboards. This means learning how to search logs, requests and traces on their system.
The framework’s new version includes breaking changes. If we want to update we need to scour the codebase fix the breakage. If we don’t update we fall behind which opens us to more potential security vulnerabilities and being stuck on outdated dependencies.
We have to keep the OS of our servers up to date with patches and new releases.
Our cloud bill is getting expensive so we may need to rethink our architecture.
We are 3 versions behind in our programming language. The version we are on reached end of life over a year ago. The new version has a lot of new features but upgrading has the potential to break a lot of things.
It takes coordination between 2 engineering teams and the marketing team to ship a new feature.
none of these are essential problems of our domain. Some are avoidable, some can be made manageable, and some are inevitable. I think one of the most important jobs of an engineering leader is to keep the accidental complexity to a minimum. I’ll talk about some ways to do this in the next post.
Published: 2024-04-15
Last Edited: 2024-04-15