Accidental complexity happens when teams donβt care about their codebase, applications, and systems enough and when they break down tasks in the wrong way. The name accidental also explains that it usually happens unwittingly. The teams unintentionally build up accidental complexity, and it makes their job more difficult to evolve and change the systems. Onboarding becomes more challenging, and technical debt builds up. One way to reduce accidental complexity is through abstraction. Abstraction helps to make code simpler and limits access to in-depth implementation to prevent possible mistakes or wrong usages.
- Source(s): Designing Data-Intensive Applications by Martin Kleppmann