# 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:

• Linux is the best place to learn shell scripting (bash, zsh)— which will allow you to program your computing experience
• Linux distros give you easy access to powerful development tools, such as:

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.

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!