This post is for all who want to become proficient at computer programming in their spare time.
Just spend time writing lots of short, toy programs.
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!
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.
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.