An ugly truck might be better than a Ferrari.

There is no best tool; there is the right tool for the right job.

There is already plenty of content about Web development online, but not many addresses one of the most important aspects of Software Engineering, choosing the right tool for the right job. Many articles teach you how to get something done, but only a few teach why you should do it that way.

In addition to that, it is easy to put an application backbone together using lego bricks made by different SaS tools nowadays. Going further, new AI tools like chat GPT and GitHub copilot can also "code" for you. But shouldn't we learn when and how to use things and be critical about our choices?

It's not uncommon to find ourselves falling into the pitfall of following the herd and making decisions based on whatever is hyped or trying to copy what others are doing.

When I was a kid, I remember my father asking me what would be a better car, a Ferrari or his ugly green Peugeot truck. I remember answering that question quickly and without a doubt: Ferrari.

Obviously, there was something more hidden behind the question. He continued:
Can you carry a load of fruits (he had a juice factory then) in a Ferrari?
Can a Ferrari climb that rough hill we had just climbed?

Of course not, he answered. And went forward, my truck wouldn't beat a Ferrari on a race track or wouldn't impress as many people, but the point is that they are made for different purposes.

Software project choices are all about the purpose of it. You can get something done with pretty much any technology. But it would be unpleasant to code a web application strictly in C++. In the same way, it would be a terrible choice to store financial transactions in a plain file.

Both can be done, but the number of problems and the time to do so make these choices impossible.

This is why I'll write this series of articles; I want to go through different situations where different tolls apply. SQL and NoSQL databases, Vertical and Horizontal Scaling, strongly typed and loosely typed languages, and so on.

I'll be posting the codes and explaining tools and situations where they apply.

Subscribe to my newsletter to be notified when new articles are published.