While working on software systems and products we often find ourselves having to make choices between naive solutions (cheap) and solidly engineered solutions (expensive). It’s a balancing act. On one side, we don’t want to underestimate the complex...