So you’ve realized that you suck at programming and decided to get better at it. Congratulations, you are in that very small minority of programmers who have realized how much more there is to learn about the art of software development. Most programmers spend all their professional lives never knowing about the improvements and advances to the craft of programming.
Before you start, there is one skill set that you need to have which will make a big difference in your journey to be a better programmer. Typing.
Do you touch type?
Of all the technical and communication skills you need to acquire to be able to write good programs, programming finally comes down to sitting at a terminal and typing in text. Doesn’t it make sense that you spend some time to learn how to touch type?
Up till 2009, I was a card carrying member of the hunt & peck club. I had planned on learning to touch type, but then decided against it. I did not think that it would be of any benefit. I rationalized that the 60 hours I would invest in learning touch typing, I could instead learn a new programming skill set. Also, touch typing seemed hard, something that I could never learn.
All that changed in January 2009. I was working on building a program that needed a ton of documentation. It became quite clear that to finish it on time, I would need to ramp up my typing speed. I spent 30 mins a day for about 20 days learning to type using Mavis Beacon. My typing speed went from a paltry 20 wpm to about 60 wpm. It has been 2 years since, I now type 80 wpm.
Learning to touch type has made a huge difference in my learning process. The ability to touch type means I can now focus on the program logic instead of a small amount of concentration leaking into looking for the right key.
I tend to use formal methods of leaning. I use technical books to teach myself new languages and concepts. Like most programmers, I prefer to type in all the example code. Here alone, touch typing makes a huge difference, the ability to type quickly means that you will have time to try out many more examples and take notes as you learn.
It has other benefits too. You can learn to use Emacs. You wont shy away from documenting your programs(which most programmers think is a pain anyway, this
is compounded when you have a low wpm count. Most programmers will deal with this by skipping documentation and comments entirely.)
Also, not having to look at the keyboard is one less obstacle that stops, delays or snaps you out of the zone.