A Student’s Thoughts After (Almost) Two Months of Code Year

It’s been almost two months since Codecademy started Code Year, a year dedicated to teaching people to program. I’ve been keeping up with the courses and here are my thoughts thus far.

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.

Why am I Learning JavaScript?

Codecademy is teaching me JavaScript. But why am I learning JavaScript? I know that courses teaching other languages are on the way, but why start me with JavaScript and not, say, Python? There are countless articles I’ve read about learning to code by starting with Python. The MIT OpenCourseWare class Introduction to Computer Science and Programming uses Python as the language to teach computer science concepts. When I talked to other coders about my desire to learn application development and mentioned starting with Python, the feedback was largely positive.

So why am I learning JavaScript?

Don’t get me wrong, JavaScript is definitely a language that will be insanely useful. And I’m sure the Codecademy team put a lot of thought into what language to teach first. But I’m not educated enough to know the strengths and weaknesses of different languages yet, so I’m just left confused. As I make my way concurrently through the Google Python Class, I’m left wondering Codecademy’s thought process.

How to Use Code in Real World

I’m following along with all the code lessons and projects. I’m understanding the concepts. But how do I actually use this code on a website? One of the very first things you learn at Codecademy is how to create an alert box or a prompt. If I, say, wanted to add an alert or a prompt to this website, how would I do that? Where would I put JavaScript? How would I call the code? How does that process work?

I understand that teaching real world deployment of code may go beyond the scope (or goals) of the class, but maybe Codecademy can point me in the right direction? Or create a bonus project where basic knowledge of HTML is required (or even briefly explained) and JavaScript is deployed. Or at least link me to an example of basic JavaScript in the real world.

I’m aware that the best way to learn code is to look at other people’s code. I often view the page source of websites I stumble upon to see how they work. I now view every link to a JavaScript project that’s posted to Hacker News. But most of this code is still too advanced for me. And I can sort of see how the language is being used in the real world by viewing the page source of websites using JavaScript, but even a lesson or two explaining exactly what I’m looking at would be extremely helpful.

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.

Related Posts: