25 May 2011
This post was originally written by me for a former employer’s blog, I reproduced here with some minor edits with permission from them.
Get a bunch of techies together and you can easily start a war of words over any technology. Each will claim his favorite technology as “the best.” But it is all pointless because they’re just tools.
I see from time to time heated battles between techies about technologies, methodologies, applications, etc. Some of the classics are: Windows vs Linux, Firefox vs IE, C# vs Java, Agile vs Some other, Eclipse vs Netbeans, etc. These discussions can be seen in blog posts, books, informal talks, etc. You just have to gather a bunch of tech geeks around and they will start a discussion about how that particular technology they happen to love is better than the rest. It reminds me of a George Bernard Shaw quote:
Patriotism is the conviction that your country is superior to all others because you were born in it.
George Bernard Shaw
We as developers, managers, testers, architects, etc., in the software development industry, must try to see the things from a broader perspective. We have to stay objective and pragmatic. Operating systems, programming languages, software development methodologies, development environments, platforms, etc., they are tools, just tools. There is no such thing as “The best %s”, substitute %s with operating system, methodology, programming language, etc., there is no panacea. If it existed, it would be clear for everyone and we all would be using it without any kind of complain, it doesn’t matter if many people uses it, it is not the best. Because there are no such things.
There’s a catch in this, just like anything can’t be the best, everything CAN be the best too. But, in particular situations, every tool fits a purpose, it excels on some regard, but it can’t excel on everything. There are times when a tool will be very useful and fit in what you are doing, then other times when that same tool will cause you a headache because it’s simply not meant to be wielded the way you want it to. We should approach a tool with care, analyze its advantages and disadvantages and determine if it fits our purposes. Not pick something just because we like it, because it is the only thing we have used before, or because people say it is the best.
As professionals, we should try to read about tools and try to learn about and from them, try them out, etc., expanding our tool set, because after all, we are professionals, we cannot say to a client, or a partner, or our teachers, or our bosses that we cannot get something done because we just know or like one tool. We have to expand our tool set so we can propose and develop many solutions, many ways to accomplish a particular task, and then solve it in the most effective way. Remember, when you only know how to use a hammer, every problem starts looking like a nail.