In 2011 I refused to use technology. I wouldn’t even text on my cell phone. Now I embrace technology, and want to use it in the most efficient way possible. Finding an efficient way has been a long journey, and it’s far from over. But I do have a much better idea of what skills are important, and the areas where my technical skills need to grow.

What made me decide to learn technology? I was looking at the Occupational Outlook Handbook, and I noticed that every single career I was interested in involved sitting in front of a computer for long periods of time. So you might as well get good at it. Thus I began, somewhat reluctantly. After a while though, it got to where it wasn’t a burden. The efficiency gains started showing up. I followed the lead of people that I respected, and was especially influenced by the writings of Norm Matloff, Peter Norvig’s How to become a programmer in 10 years and the book Practical Programming.

It takes time to become efficient with a computer. Each skill and language is an investment. People make financial investments because they wish to make money. So also you should make prudent time investments. Learn something that will provide you with job opportunities or with joy, and preferably both. If you’re wondering what skills are in demand, you might check out hired.com.

I view the following as critical skills for someone interested in data science.

Shell

Learn Bash and Linux. Let this be the primary way that you interact with your computer. Once you achieve a basic level of proficiency it’s much easier, faster, and more precise than a GUI. Also, GUI’s change on a regular basis. Every time they do you’ll have to learn again. Learning the POSIX standard for operating systems is a skill that won’t be going out of style any time soon. It’s a good investment. Another positive side effect is that it makes you think as a programmer whenever you use a computer, and many programming languages have features inspired by shell commands.

I personally use tmux for everything in the shell. Tmux provides a windowing environment that allows me to be just as efficient on a remote machine that I’ve logged on using SSH as I can on my local laptop.

Text Editor

Programming Language

Markdown and LaTeX

Version Control

SQL