There has always been the on going debate about using productivity tools in software development. As a primarily a .NET developer I hear a lot from people (that aren’t .NET developers) that denounce Visual Studio and claim that it actually hurts you. Yet I also hear from people (that are .NET developers) that swear by more advanced productivity tools for .NET like Resharper whom are flabbergasted that I don’t use it.
Tools are tools, they are there to help you; you still make them work. So to all those that say real programmers use text editors like Vim, emacs, or more recently sublime text, guess what… those are ‘productivity tools’ too.
I was showing a non-programmer colleague of mine Visual Studio and some of it’s features because he does ‘programming’ in an industry specific application (think drag and drop blocks that you configure) and I was showing him the neat things that tools for ‘real’ programming can do. I told him about the debate about such tools and that some people see them as a crutch. He then said something that I didn’t realize until later is quite profound and interesting.
Why does it have to be a crutch, shouldn’t it act more like a turbo?
What this means is that we shouldn’t rely on or blindly follow our tools, like accepting all the little suggestions Resharper pops up. During the time I used it I would investigate what exactly it was suggesting, and why, to understand if that is better. If it was better I would then why it was better and accept it and look for others areas that had similar problems.
There-in lies the distinction folks.
Our tools should be used as we see the need for them and they should ASSIST us. So really all of these tools can be quite valuable, but going by this reasoning they will be crutch to inexperienced developers, but a turbo engine to those that it makes faster.
Tools can accomplish two things, if you don’t know exactly what you are doing they can lead you down whatever path and you will blindly follow. Or you can know when to ignore them and when to leverage them to increase your speed. I have seen arguments that code is read significantly more than it is written (which is very valid), so any tools that increase code production don’t add value. That’s not true at all, increased speed is increased speed regardless.
So like everything in life, there is no one singular answer (no the world is not binary, sorry guys). It seems that as with many other things if used properly, a tool can greatly enhance one’s abilities, if used improperly it can make you worse of than had you done it all manually.