3 ms·
"Conservation of complexity" is a useful concept in my experience. You can shuffle the complexity around, but usually you can't eliminate it. In practice, most
by ants_everywhere 3y ago
"Conservation of complexity" is a useful concept in my experience. You can shuffle the complexity around, but usually you can't eliminate it.
In practice, most software solutions I see that emphasize "simplicity" are really putting the complexity elsewhere, typically on the user. More complex solutions have more features because the user needs to get stuff done. The simple solution doesn't have those features, so the user now needs to either do more manual work or rely on additional tools. The simpler tool has made the user's life more complex.
My pet theory (that I just made up) is that what you really want to do is start with something ugly that gets at the real shape of the solution, and then simplify it over time. So "simplicity" is a refinement process like moving from the rough cut of a sculpture to the finished version. But I'm skeptical of simplicity as an up-front design requirement. If you value simplicity so highly that you're never willing to have ugly complexity, then you miss so much of the design search space that you're unlikely to find a good local maximum.
- layer8 3y agoThere’s accidental complexity and essential complexity. The former can in principle be eliminated. The web tech stack is brimming with accidental complexity.
- ants_everywhere 3y agoThat's a Fred Brooks distinction, and not one that's (AFAIK) used outside of software consulting literature. In his essay, he basically uses "accidental complexity" to mean complexity from the past and "essential complexity" to mean "current complexity". He also says all software complexity is essential: > The complexity of software is in essential property, not an accidental one. Hence descriptions of a software entity that abstract away its complexity often abstract away its essence. This is pretty close to what I was saying. There are, of course, more standard notions like Kolmogorov complexity. You could argue that the essential complexity of something is its Kolmogorov complexity. But I don't think anyone means that when they talk about essential complexity.