Leave your ego at the door and master your tools
I am constantly surprised and astonished at how few programmers are thoroughly trained in using the tools they use in their daily work.
I first noticed this in college. All throughout, I consistently preached the emacs gospel to my fellow classmates. The gospel I am referring to is that emacs is an incredibly powerful tool, and that those that have a vested interest in programming should put forth the effort to master such tools to leverage their skills.
At the University of Texas, we primarly used Ubuntu Linux on the school’s lab machines. I constantly saw kids fumbling with the random crap that came with the KDE installation: KWrite, Kate, pico, nano. Not just the young ‘uns. Juniors and seniors, also. It made me sick to my stomach.
Regardless of whether I was creating a two-line text file for printing or working on my multi-semester thesis project, I would use emacs. I knew the tool well. It was quick and simple to launch, edit, and close. I could even use it from the shell without having to launch X Windows.
Photo: John Dierdorf
This post is not about why emacs is better than vi (which it is). Instead, my goal is to describe why I don’t care whether you use emacs, vi, TextMate, Python, Ruby, BASH, Windows, Linux, or any combination thereof; what matters is that you choose a set of powerful tools and know them well enough to enhance your productivity.
In fact, the differences between two competing entites is negligible. Take vi and emacs for example. All they do is edit text. Two experts in either tool most likely have an indistinguishable difference in productivity. Yet a newbie to either one is utterly useless.
I don’t care about which set of tools you choose for your craft. I do care about how well you know those tools.
The same goes for Ruby and Python. Has a developer ever reached a point in a Python project in which he or she said, “darn. I should have used Ruby. It fulfills a need for this project that Python lacks.” The answer is no. They are both Turing-complete, after all. The initial toolset choice is the subject of another post.
In short, it takes an initial time investment to get over the learning curve, but once that time is invested, the productivity gains are phenomenal. As you continue to practice an hone your skills, the reward continues to increase.