Programmers must strike a delicate balance between expertise in tooling and expertise in
writing code. Having lots of one and not enough of the other can result in large drops
in efficiency.
Here at Vanderbilt, I see many students struggle with the simple tools we use in our
third programming course: SVN, VirtualBox, Vim/Emacs, and the command line. Generally,
these students are fully capable programmers, but their lack of experience with basic
tools of the trade makes them hopelessly inefficient. Granted, learning all of these
tools at the same time in addition to struggling with advanced C++ concepts must
certainly be overwhelming.
As someone who has always loved configuring tools, I unfortunately spent a significant
portion of my career on the other side of the spectrum. My tools were well configured, I
could navigate Emacs with ease, and with a few simple bash commands I could grep in a
matter of seconds what would otherwise have taken hours to find. My programming skills,
however, were lacking.
This summer I interned for
Nacho Cove,
a start up that is dedicated to improving corporate email on mobile. The engineers at
Nacho Cove, many of
whom I had worked with previously at
Nukona,
were exceptionally experienced programmers who were able to make the most of the tools
available to them without being distracted from the ultimate goal: writing code and
producing a product.
During my internship, I realized something that should have been obvious to me all
along: Choose your tools wisely, stick with them, and start writing code. After my very
first week at the company, I already felt that my programming abilities had improved
dramatically. Spending time writing code, and a lot of it, is the only way to become a
better programmer.
This semester, my goal is to spend a little less time in my .vimrc and .tmux.conf and a
little more time in
SICP
and
Learn You a Haskell.