Back before I knew what a variable was, and I thought git was an idiot, twice a month I would haunt Beijing Linux Users Group meetings. These gatherings were filled with developers engaging in lively discussions about technology. After formal talks, geeks would wistfully recall the days before Unity while nursing bottles of Qingdao beer. I left each meeting equal parts inspired…and confused. But regardless, I wanted in. I wanted to be that code slinging superstar. So one day, I took a seasoned Linux veteran aside. and asked, “how do I learn how to code?” The friendly fellow reflectively responded with , “build something.” Throughout my journey that has been by far the best and worst advice given to me.
I remember how I felt when I heard those words. Build something? Me? At that point, the extent of my scripting talents was limited to using a Python IDE as a giant alternative calculator. How was I going to build something, or better yet, solve a problem, when I couldn’t even identify a problem?
Fast forward a year. My life has been a revolving door of tutorials, and books especially designed for n00bs I have a special name for this period of learning- tutorial purgatory. You know enough to have a semi-decent conversation about the new concepts you are learning- but you can’t apply said concepts outside of the tutorial examples.
Before I continue, it must be said that tutorials have been, and continue to be indispensable vehicles that have gotten me to where I am today. I have learned all sorts of fundamental information through tutorial. Heck, I plan on starting a new one next week.
But the bottom line is I didn’t aspire to become a programmer just to muddle my way through an endless loop of tutorials. I am learning how to code because I want to become a badass, rogue hacker.
How to Be a Badass-in-Training
Codecademy: Not all tutorials are created equal. Codecademy offers a balanced blend of tutorial, and miniature projects. If you made up your mind that you want to learn how to program like five minutes ago, then this is a good place to start.
OpenHatch: OpenHatch is a non-for-profit which helps new developers contribute to open source projects. The ‘missions’ are fun ways to learn important concepts such as working with tar archives, and git. The website is very nice, however I suggest finding a real live person to help you with one of the projects. When it comes to Open Hatch, I find that having a physical mentor beats IRC chats any day, especially when you are brand new at this stuff.
Be the Critic
Take some time out to make a list of everything that makes your life a little less pleasant. Is your alarm clock not doing the trick? Are you looking for an even easier way to split up the bill? Are you trying to find a more intuitive way to organize your smart phone’s address book? After you’ve made your list, see if you could use what you already know to solve some of these problems. For example, you could write a simple Python script to calculate and split the bill, or if you are interested in hardware you could make your own alarm clock by using an arduino micro-controller.
And finally, don’t be a stranger. If you are working on a cool project, please let me know!