Know your tradeoffs #

It’s a common joke that senior software engineers answer all technical questions with “It depends.” It happens far more often than you think. It turns out that making decisions in designing software is not easy.

Maturity in software engineering is a result of understanding the tradeoffs in all your decisions. There is no perfect solution; only the most relevant one. Our job as a software engineer is to:

  1. Make sure we make the best decision possible given what we know.
  2. Design the system so that it is easy to redesign our solution if things change.

We can’t see all ends and this is where the wisdom of the team comes in. Our core value is to work as a team. So, do not hesitate to review your decision with your peers.