Keeping complexity down

"Using the right tools for the right job" is one of those phrases you hear a lot in tech. Each technology has its advantages and disadvantages, but its always better to put these into perspective. Some technologies might be a better fit, but is it worth adding it to the stack for just a marginal gain?

Much of this has to do with "premature optimization", the notion of trying to write a solution which handles cases which you might or might not encounter at a later stage. Sticking with one thing allows you to focus your efforts, reduces complexity and overcomes "context switching" (switching between different paradigms).

(Of course there are problems which warrant their own tools, because creating a solution using tool x might be way more complex that using tool y.)