4 ms·
I like the concept that there are accidental complexity and essential complexity. Essential complexity is that of the problem you are solving itself. How compl
by didibus 3y ago
I like the concept that there are accidental complexity and essential complexity.
Essential complexity is that of the problem you are solving itself. How complex the use case itself is.
Accidental complexity is how more complicated your implementation of it make things. This is the one people want to keep away, and favor simplicity.
If you remove scope, you're removing essential complexity by making the problem itself simpler.
To remove accidental complexity you have to find a solution to the same problem that adds little more complexity over it.
People want to be able to deliver essentially complex use cases, while adding as little accidental complexity over it. But doing so is hard, hard things are hard to achieve, and so most of the time we end up with a lot of accidental complexity added, because it's easier that way. Not because people don't want simplicity.
- nonethewiser 3y agoThis is a very important distinction. I think it stands to reason that an overall industry trend towards more complexity must be due to essential complexity. Could you even have an enduring trend that is not due to essential complexity? Wouldn't people get better over time, or the accidental complexity lose out to non-accidentally complex?
- couchand 3y agoA better term is "non-essential complexity", since "accidental" implies that it wasn't intended. The reason it's a durable trend for non-essential complexity to increase is that there are common and powerful forces that push for increased non-essential complexity. The prime example is short-term technical debt taken on to speed the release of something new. It's not accidental, the team intentionally chose to (temporarily, hopefully) take on the added complexity.
- ttymck 3y agoNot to be rude, but these terms are pretty firm at this point. If it helps, think of "accidental" as "incidental". It's not referring to any actor's intent or lack thereof. Frankly, you're introducing accidental complexity by trying to refer to it as "non-essential complexity" ;)
- couchand 3y agoIt doesn't generally help to think of one word as another word. That doesn't tend to work out well when trying to parse semantics. "Incidental" is correct here, but not ideal for communication because of the eggcorn with "accidental". The word "accidental" is wrong no matter how you slice it.
- augustk 3y agoThe programming language itself is also a complexity on top of the problem's essential complexity and the complexity of the algorithm solving the problem.