Where to Start

April 17, 2021

If you are new or early in your programming journey, these are the things I suggest learning first. They will benefit you no matter what kind of programming you ultimately do.

Learn C

If you understand the fundamentals of computer science, namely data structures and algorithms, you have the ability to understand and use any programming language.

But while that’s true, learning C will give you a practical programming knowledge that computer science theory will not. After learning C you can mentally translate every other language’s behavior to C (for example, parameter passing). Another benefit is the C language can be learned in its entirety (something I would never say about C++).

As someone who has primarily developed systems software for my entire career, perhaps I’m biased. But I believe C is essential knowledge for every programmer.

Learn a scripting language

Programmers need to write tailored but ephemeral programs on a daily basis. The ability to automate some kind of work with minimal investment to create the automation is invaluable.

That’s why I recommend deeply learning a scripting language. I mentioned that any language is on the table for someone who understands the fundamentals, and that’s true. But paying the get-up-to-speed cost every time you need to automate something is expensive.

Python, Perl, and Ruby are examples of scripting languages that can do this work. My personal favorite is Python, but give these and others a look. Pick one that suits you, and master its basics to the point that you don’t need to look much up to use them.

Learn a shell

Technically a shell script is just as capable as the scripting languages I mentioned above, but I use them differently. Using even the most basic data structure will feel more comfortable in a true scripting language. Shell scripts are useful for, well, automating the shell. But that’s incredibly useful.

The shell is the driver for so many programming tasks. Understanding Unix commands, how to chain them together, and how to automate it all will make you a more efficient programmer. (Saving your steps as a shell script is also a great way to remember how to do something.)

Depending on your environment you may have not complete freedom of choice, but I recommend learning one of: bash, zsh, or fish.

Keep learning

I recommend C, a scripting language, and a shell as some of the first things to learn. They provide a foundation for future learning, and improve your productivity.

But remember, the world of computer science and programming is too big to completely master. None of us will learn it all, and that’s fine. The much more important advice I can give is, no matter what you’re learning, to keep learning.

Keep learning.