Building software is probably the discipline people are most afraid of calling "engineering". In my career as a programmer, I have seen many people making decisions out of hype or unsupported claims. To be honest, I have done that over, and over again!
When we start a software project, we always start by making decisions. Each of those decisions will have an impact on how easy the program is to maintain, scale and extend. How can we make sure the decisions we make are going to shape the program the way we really want?