Tools don’t matter

Tools don’t matter
I don’t use vim or emacs, but for some reason whenever I used to read a vim or emacs article or blog post, I used to download, install and spend the rest of the day reading books, manuals and playing with the editors. I’ve done this several times in the last few years with each iteration making a more firm resolve to switch to vim/emacs for my day to day tasks. However, I always ended back at Visual Studio.Net/Eclipse/Notepad++ as the tools of my day to day work. For some reason I always felt inferior to all the Guru* Hackers** using vim and emacs and having this crazy productivity and superior intellect. Why couldn’t I be part of this “elite” club? The same holds true for several other areas as well, for e.g. downloading Python, Ruby, J and spending the day learning the language only to forget the next week.
All this kind of reminded me of my experiences with finding the perfect weapon while playing Call of Duty 4 over the past year. I spent 3 hours a day almost every day for the past one year playing this game, reaching the max prestige level (the “elite” club) in the multiplayer version. I became really really good at it and could kick a lot of ass no matter what weapon I was using. But I remember when I started out and I really sucked, I became obsessed with finding the perfect weapon with the perfect set of perks and addons. I used to wander the forums asking people about which weapons and perks to use on which map and what the best tips were etc. Thinking that having the perfect weapon would make me a good player. In the end, the only thing that mattered was all the hours I put in to learn all the maps, routes, tricks and my ability(I like to think). The surprising thing was that once I mastered the game, it didn’t really matter what weapon I chose, I was able to adapt any weapon and do a decent job.
Based on my experiences with the game I started thinking about why I felt I needed to be using vim/emacs. I realized that I was really efficient at doing everything that vim/emacs claimed to do using my own toolchain. And I didn’t really need to un-learn the toolset that I am the master at and pick up another toolset because a lot of people claim that it’s only way to do it right. The same applies to my language/platform of choice (C#/.Net) and my OS of choice (Vista). For some reason I was giving more weight to the opinions posted by people on the Internet than to my own experiences. I have no angst for the vim/emacs folks, they’re probably folks whose first editor was vim/emacs and that’s what they became comfortable with like to share their passion for the tool and help others in mastering it. For me coming from a DOS background with Turbo Pascal and Turbo C++ as the first tools, it’s a different perspective of what an editor should be able to do.
I’ve now made peace with my choice of tools, I know it’s limitatons and advantages compared to the other tools and I think that’s more important. The reason I have this confidence now is that I’ve written, read and debugged enough code to have an appreciation for our craft and what it entails. You just can’t get here by reading blog posts and books, you have to actually do it to the get confidence to be able to make those decisions. I am going to continue checking out new tools because I inherently love learning new things, but I’ve learned to be comfortable in my own choices.
To summarize, I’d say Pick a tool/language/platform “YOU” are comfortable with, stick with it for a non-trivial time and once you master it, you can do everything that some other tool claims to do, because in the end the tool does not matter, what really matters is the mind using It.
*,** – Really interesting that I spewed the term Guru Hackers…Guru was what the term used for master programmers before Paul Graham made Hacker the defacto term.

I don’t use vim or emacs, but for some reason whenever I used to read a vim or emacs article or blog post, I used to download, install and spend the rest of the day reading books, manuals and playing with the editors. I’ve done this several times in the last few years with each iteration making a more firm resolve to switch to vim/emacs for my day to day tasks. However, I always ended back at Visual Studio.Net/Eclipse/Notepad++ as the tools of my day to day work. For some reason I always felt inferior to all the Guru* Hackers** using vim and emacs and having this crazy productivity and superior intellect. Why couldn’t I be part of this “elite” club? The same holds true for several other areas as well, for e.g. downloading Python, Ruby, J and spending the day learning the language only to forget the next week.

All this kind of reminded me of my experiences with finding the perfect weapon while playing Call of Duty 4 over the past year. I spent 3 hours a day almost every day for the past one year playing this game, reaching the max prestige level (the “elite” club) in the multi-player version. I became really really good at it and could kick a lot of ass no matter what weapon I was using. But I remember when I started out and I really sucked, I became obsessed with finding the perfect weapon with the perfect set of perks and addons. I used to wander the forums asking people about which weapons and perks to use on which map and what the best tips were etc. Thinking that having the perfect weapon would make me a good player. In the end, the only thing that mattered was all the hours I put in to learn all the maps, routes, tricks and my ability(I like to think). The surprising thing was that once I mastered the game, it didn’t really matter what weapon I chose, I was able to adapt any weapon and do a decent job.

Based on my experiences with the game I started thinking about why I felt I needed to be using vim/emacs. I realized that I was really efficient at doing everything that vim/emacs claimed to do using my own toolchain. And I didn’t really need to un-learn the toolset that I am the master at and pick up another toolset because a lot of people claim that it’s only way to do it right. The same applies to my language/platform of choice (C#/.Net) and my OS of choice (Vista). For some reason I was giving more weight to the opinions posted by people on the Internet than to my own experiences. I have no angst for the vim/emacs folks, they’re probably folks whose first editor was vim/emacs and that’s what they became comfortable with like to share their passion for the tool and help others in mastering it. For me coming from a DOS background with Turbo Pascal and Turbo C++ as the first tools, it’s a different perspective of what an editor should be able to do. I like the deep intellisense that Visual Studio and Eclipse are able to provide, this coupled with Notepad++ for quick edits is all I need right now.

I’ve now made peace with my choice of tools, I know it’s limitations and advantages compared to the other tools and I think that’s more important. The reason I have this confidence now is that I’ve written, read and debugged enough code to have an appreciation for our craft and what it entails and I don’t think I could have gotten this confidence by reading blog posts and books, you have to actually do it to the get confidence to be able to make those decisions. I am going to continue checking out new tools because I inherently love learning new things, but I’ve learned to have confidence in my own choices and to make an objective decision on the tool to use for a particular task.

To summarize, I’d say Pick a tool/language/platform “YOU” are comfortable with, stick with it for a non-trivial time and once you master it, you can do everything that some other tool claims to do, because in the end the tool does not matter a lot, what really matters is the mind using It.

*,** – Really interesting that I spewed the adjective Guru Hackers, “Guru” was what the term used for master programmers before Paul Graham popularized “Hacker” as the de facto term.

Real Programmers
Real Programmers

7 Comments

 Add your comment
  1. Another one with “DOS background and Turbo Pascal”.
    However, before that was Turbo Pascal on CP/M machines. And before that ZX Spectrum.
    Today I still love Pascal. Why? Easy to write and easy to read.

  2. Do not use images from XKCD with attribution. You are breaching copyright.

  3. Nice gaming analogy – once you master the game, the tool you use doesn’t matter.

    Reminds me of the gamers who make it a point of completing every game with fists as their only weapon.

  4. Without attribution? There is the link…
    However, what I really like about going to the command line is that in Unix you have small tools that do one job, and do it well (aka the Unix way). You can connect trough their universal plain text interface in O(e^n) ways to perform different jobs, and it’s something I could not do with Visual Studio or Eclipse. In fact, I liked a bit netbeans since it used the subversion command line tool instead of trying to integrate everything.

  5. Mastering Vi was the single best thing that improved my programming.

  6. I would read in awe when programmers mentioned that they would use emacs/vim for their programming tasks and much more. While I have worked with those, my career mainly has involved IDEs like Visual Studio or Eclipse or editors like gEdit. It’s good advice to believe in your own experiences rather than some posts which mention tools in which the poster is comfortable.

  7. You conclude you are as productive using Visual Studio as the people using vim/emacs. You accuse vim/emacs users as the people who only have known vim/emacs(paraphrasing from your first-editor quote). Seriously, what is there to know about you Visual Studio which can’t be known in under an hour? And Turbo C++? I would rather write in edit.exe. Oh, and this about “vim being the first editor” from someone who admits not knowing anything other than Visual Studio(if there is anything to know about it). Compared to your brain-dead visual studio/eclipse, it takes time to become productive in vim/emacs, and it’s time well spent. Your one day stint is never going to cut it. I can see your next post about python being a bad language coz you spent 1 day of your precious time and weren’t able to figure out where is the visual designer for python where you can draw your cute windows forms and double click on them to write the event handling code.

    Now don’t go about making claims about vim/emacs being show off things and no real projects using them. There are many devels in top notch companies who use it out of choice(Google, Yahoo, Amazon to name a few) and there are projects of significant size which have been done totally on vim/emacs. Yahoo! search is one of the projects where majority of the devels use vim/emacs.

Leave a Reply

3 Trackbacks

  1. Tools matter – Another guy named Mike (Pingback)
  2. Today's read: Tools don't matter | Complete Coding (Pingback)
  3. Predictive Analytics: 8 Things to Keep in Mind (Part 4) « Amaresh Tripathy's Blog on Information & Decisions (Pingback)