Earlier this year, I made a pledge to learn to code in 2012. Not only did I make the pledge, but I’ve kept the pledge, generally completing each weekly course within three to four days after its release.
I really am Codecademy‘s ideal student: an extremely competent non-programmer (did you read about how I made my iPhone app?) with a strong desire to learn to code. I’ve attempted to learn programming numerous times before (investing in books, online classes, and continuing adult education classes) without much success. But I’m willing and ready to put in the time.
Even with all the prior attempt to learn to code, it wasn’t until the Functions section of Codecademy’s classes that coding “clicked.” It all suddenly made sense. I finally understood why every class that I had attempted always recommended prior knowledge of another language. I understood where math and algorithms fit into the equation. I understood how a language’s ability to return 2 + 2 impacted a program.
As with any other skill, the more you learn, the more questions you have and the more you realize you don’t know. Codecademy has been fantastic for opening the door to learning to code (so they have succeeded in their goal) but I still see areas where I want to know more and don’t know where to find answers. Maybe these gaps will be filled as the year progresses, but as a student for two months, I wanted to share what I feel some of my thoughts thus far.
How to Use Code in Real World
Learning to Think Like a Programmer
Codecademy is great for walking me, step by step, through the process of building an application. The projects are especially great because functionality is added bit by bit until we have a large and functional project built from smaller bits and steps taught in the lessons. But I feel like too many of the answers are given away in the instructions. If I’m told to wite a function that takes a certain perimeter, I can do that. But if I was given a problem without being told which specific tools to use, how long would it take me to figure out that I need to utilize a function rather than an object, a constructor, a switch, or anything else? This is the difficulty of programming.
The Blackjack challenge was great because it challenged the student to think about which tool to use before actually using the tool. At this point in my studies, there is where I need the most help and practice. If even the instructions were hidden at first, in the same way that hints are hidden, it would give me more of a time to think about how to solve a problem. I can build an object or a class with no real problems; my coding errors usually result from syntactic mistakes and are usually easily caught and fixed. Where I really need help is thinking like a programmer.
My Brain Wants More
I’m always extremely excited for a new lesson on Monday, and then sad on Wednesday when I have no more lessons or projects to complete. I don’t know where to turn for more. Not just more lessons but more puzzles, more math, and more related brain exercises.
I’ve started taking the Google Python class in addition to the Codecademy courses. My girlfriend even humored my inner nerd and got me an Introduction to Algorithms textbook for Valentine’s Day. I’ve also been reading a bit through the MIT book Structure and Interpretation of Computer Programs (the full text is available online!). But should I really be learning two different languages at this point in my studies? All these extra books and classes leave me feeling very unfocused. I have gone, in just two months, from knowledge of zero computer languages to learning computer science concepts with four different languages. I even attempted to start the Try Ruby course at Code School, but don’t feel ready to throw another language into the mix at this point.
I’m basically stuck, because I want to learn more, but I don’t know where to turn. I want puzzles to solve, algorithms to figure out, and a forum to discuss my questions with other Codecademy students (much like the invaluable Q&A section for each lesson and project). This problem may be solved son since Codecademy is opening up their system to allow programmers to create new classes. However, for the moment, I have a strong desire to learn more and no direction about where to turn.
Codecademy Spoiled Me
Finally, Codecademy has spoiled me rotten. They walk me through concepts, step by step, and let me physically try each step as I’m learning it. Their website shows which lines in my code have errors. Their Q&A help section is amazing, and helped answer my questions every time.
Other courses, such as the Google Python class, now seem cumbersome with all the pausing and switching back and forth between my video player and the terminal. With my textbooks, it’s easy to think I understand a concept and then be completely lost when it’s time to try it out. Or to get lost trying to search the internet for answers when I’m not even sure what question I should be asking.
Codecademy really is changing the way people interact and learn to code. It really has opened a whole new, exciting world for me and made me want to learn more. I also recognize that Codecademy is still in its infancy, and will only grow and become more feature filled over time.
So, thank you Codecademy, for all you’re doing. I can’t wait for more.