How to Avoid Accidental Complexity in Software Design
medium.com