Choose your tools wisely

Every IT, DevOps, engineer or person in the information technology business has seen or participated in some Flame Wars about what the best framework, best programming language, the best Operative System, or even the best IDE is. Every one of us had to do it, at least once. And admit it, is funny at some levels…

But when the flame war ends, and the real work starts, maybe you continue in doubt, or maybe you are “sure” about what you need, and maybe you are wrong.

In the Software Development, it happened to me a lot of times. I had doubts about what language or framework I needed, and other times, I was completely sure about that. But also, sometimes, I was completely wrong.

I realize that I started to feel limited by my framework, language or OS choice. And also I discovered that there were more limits than I thought at first. I noticed that I was limited most of the time just because of the denial that every one of us has when facing changes.

So, I started to think about it, and I realized that most of the articles on the net were like some unipersonal flame wars or defense of every personal choice. At the beginning, it was frustrated, but then, I started to take a closer look and opened my mind, so I saw that everyone was accurate. I just needed to see what the environment or the objective of every one of those posts, discussions or forum was.

Then, at this point, I changed my mindset: avoid every inclination that I had before, and ponder about the objective, trying to be more pragmatic.

And when I did that, I discovered that every language, framework, OS, and other tools like IDEs are OK. I only need to focus on the pros and cons of every situation.

You can see next, a list of tips that I started to take into account in every situation:

  • The goal. I started to focus on which tool the best for the job is. For example, if I need to do a landing page with a contact form, I should not use JAVA as language or any framework. It can be resolved with an HTML+JS or a simple PHP script. On the other side, if I need to do a program that accesses hardware, I should not consider Node.JS. The best tool will be some like C/C++.
  • My skills and my teammates’ skills. I need to consider that I hardly ever work alone. And every teammate has different skills and levels of knowledge. If I need to do a Webservice, and I have the chance to do it in JAVA, but my team is senior in PHP and juniors in JAVA, I need to consider that maybe, depending on the due date, it will be better if we do it in PHP, but if we have time, we can use the best tool (JAVA in this case) and learn at the same time.
  • Keep it simple. For me, it is very important to keep the application as simple as I can, so, if I need to use a framework, I start to analyze from the most minimalistic to the most complete, what covers my need, thinking also in future scalability of the software.

So, in conclusion, in every flame war, review, lobby-post, every participant, editor or commentator are right, at least in some parts of the discussion. But in the end of the day, when you need to choose how to make your application, my advice is that you need to forget every fanaticism for a tool, in particular, every precept about other tools, and try to think pragmatically, focused on the objective or need of the project, and you will be more chances of success.