A long time ago, I went to college with the intent of becoming a programmer by way of a Computer Information Systems (CIS) degree. Due to the requirement of mastering COBOL, I quickly decided to go a different route (for those that had to work with COBOL, you most likely understand my frustration). But the old process of learning code stuck with me: sharing a large, monolithic mainframe to check code against, cracking open large tomes of coding knowledge, and generally finding the entire experience to be horribly boring.
Earlier this year I decided to dust off my Python skills in an effort to contribute to the development of Nova within OpenStack Compute. The encouragement came from a friend of mine, Colin McNamara, after he talked so passionately about the need to be a part of something, rather than an outsider looking in. I ended up picking up a few books – my favorite being Python Programming for the Absolute Beginner – and also starting up an account on Codecademy. The experience has been night and day compared to my old code classes in college, especially when I think that we’re able to run code in a web browser (kinda blows me away).
Each part of the course is designed to focus on a task with clear instructions and hints (if needed). You can enter the code and check the results in real time, and the editor even color codes the text based on syntax. If you get stuck, use a hint or ask a friend for help. You can also refer to an awesome online glossary that contains a list of entries for your language, such as “what is a class?” as shown below.
I’ve found the lessons to be appropriately challenging, with each one requiring some bits of knowledge gained from previous lessons. The capstone lesson ties in multiple techniques to blend in skills you should have picked up along the way, such as declaring multiple variables and using arithmetic operations to combine them. The instructions are written in a friendly manner, and often lean on the side of being a bit sugary for my taste – but it’s certainly much preferred over a cruel tone of voice (unless you’re into that sort of thing).
The Carrot (Rewards)
Codecademy also offers a number of rewards in the form of badges. You can earn badges for just about anything – how many days in a row you’ve worked on learning code, passing a unit, and even for completing a certain number of exercises. As an example, when I completed the Python Syntax unit of Python, I received a badge that can be tweeted or liked. I wouldn’t advise going nuts with this, but it’s nice to share a particularly difficult completion with friends or family.
The Codecademy mothership also sends an email with a clue as to which unit to complete next. In the case of completing the Python Syntax, the next one recommended is the “Tip Calculator” lesson. These can be disabled, but I like having an email to flag, which reminds me to work on a new lesson later on.
The bottom of the email allows you to unsubscribe, or again – share a tweet or like with your social media networks.
The free service provided by Codecademy is outstanding. It’s a great place to learn to code and interact with other individuals who are looking to learn or teach. This sort of knowledge used to be locked up in dusty old books or behind a college paywall, but is now available for on-the-go consumption via web browser. If you haven’t looked into Codecademy yet, I strongly suggest you give it a peek – they even let you sign in using Facebook, Google, or Twitter.