Designing Systems

When it comes to architecture, every problem has a potentially different solution – there are no silver bullets. At the same time, it's easy to get tunnel vision when feeling really comfortable with a particular architecture. When we're wearing our software architect hats, we need to make sure that we are satisfying the following points.

In order to make any sort of decisions, the first thing we need to do is fully understand the problem. This is non-negotiable and there's no way around it – without genuinely understanding the problem, it just won't be possible to proceed. The first thing we must always do is completely understand what problem we are trying to solve.

Depending on what we may already know or not, there are some additional questions that we should be asking at this time to get some additional context such as why is this a problem, how long has this been a