How to Avoid Accidental Complexity in Software Design | Dark Hacker News