Becoming a Programmer

2013-05-31
programming, linux

This post is for all who want to become proficient at computer programming in their spare time.

Beginner

First, you need to get a computer with a decent text editor on it. Programming involves writing human-readable text, called “source code”, and then feeding this code to the machine. Get some internet resources on newbie-friendly programming languages like Python or Ruby, or if you’re daring, web design (which is much harder to learn, as it involves HTML, XML, CSS, JavaScript, and maybe even SQL, not to mention web frameworks). Do not use an IDE (Integrated Development Environment) like Visual Studio or Eclipse or anything like that; the point is to become familiar with reading and writing source code. In short, if you find yourself using the mouse a lot, you are doing it wrong.

Just spend time writing lots of short, toy programs.

Intermediate

After about a year, you should be pretty familiar with source code. The time is ripe to upgrade your development environment by switching to a Linux-based OS. I recommend trying out user-friendly ones like Ubuntu first, and then once you are familiar with that, migrate over to something more advanced like Arch Linux.

I strongly recommend a Linux environment for doing all of your programming for the following reasons:

Actually, writing shell scripts is probably one of the best ways to get familiar with programming concepts, because you end up writing scripts that you will actually use.

Just getting a working, customized Linux desktop will be enough of a challenge to keep you occupied for months.

Advanced

Now that you have Linux knowledge, you have access to all of the nice tools that can help you program like a professional. And, since you are now familiar with some of these tools (especially git, I hope), the only thing stopping you from becoming a brilliant programmer is knowledge of programming languages and algorithms/mathematics. You will find yourself looking at formal academic papers for the latest research into computer science — good stuff!

If you have not learned vim or emacs yet, you should do so now. These editors are very powerful and Emacs especially is infinitely customizable — programmable. You will use these editors for decades, probably, because they are that good at what they do. I personally use Emacs with evil, because I like Emacs’ configuration/customization system better.

Final Thoughts

I think learning Linux and shell scripting is probably the most important step. Once you get yourself comfortable in a Linux environment, things seem to fall into place, at least in my personal experience. Overall though, the theme is to keep reading and learning new things every day.

Happy hacking!