Codecademy is a computer programming teaching platform “Made in NYC” by a group of about 20 young entrepreneurs whose mission is to “… rethinking education from the ground up.” The company was founded in 2011 and has since had about “24 million users who had completed over 100 million exercises.” This is an impressive impact they are having. I was watching Jessica McKellar’s talk “A hands-on introduction to Python for beginning programmers” where she taught a 3 hour class to introduce people to Python programming. During the class she supplemented her talk by having people do exercises on the Codecademy platform. I liked what I saw on the Pycon 2014 talk so I decided to run through the Python Track. Here are some thoughts.
I really like the coding platform. You get stepped through a programming “track” from the beginning which starts with the basics, progressively getting deeper into the subject and all along the way you are doing something you can relate to in the real world. An example of this is that when you are learning how to make functions in Python, its done by creating functions to compute the cost of a Vacation. By the end of that section you have created separate functions to calculate the cost of a rental car, hotel, and airfare. The lesson shows you how to pass parameters to the function and even call multiple functions within the function. It’s a very effective way to keep someone interested and grounded in reality, and not just teaching the syntax in an abstract way.
On the left side of the page you get stepped through a section 1 lesson at a time. The site tells you what you are about to learn, there is a code example similar to what you are expected to generate, and some step by step instructions on how to do it. Then in the main body of the page is your code file. There are strategically places code comments telling you what the existing code is doing and sometimes providing hints like “don’t forget to have a colon after your if statement. Finally on the upper right side there is a window showing the output of your program.
One of the really cool things is that as you go along through your efforts you earn badges similar to Khan academy. This is a fun addition and I always like getting surprised by a badge popping up after a certain point. I think there is more that can be done on badges. This seems to be a pretty nascent feature on Codecademy and should be further developed into something as robust as on Khan Academy.
Codecademy has recently done a complete website overhaul. I didn’t use it before, but the look and feel of the site is modern and fresh. It is fast and I haven’t really run into any issues. The site is written in Ruby on Rails and seems to run flawlessly. As for the look and feel, I don’t think I would change a think. Kudos.
Missing important languages and frameworks
There is only so much a small team can bite off and chew, but I think there are a couple glaring holes in the curricula at Codecademy. Missing is anything related to mobile application development. As this development represents half or more of the current computing worldwide it seems to be a big leave out. I would like to see a Java track, which is arguably the most popular language and an Android development track which ,again, is one of the most popular mobile platforms. In the same vein, I would suggest they add Swift programming and iOS framework development.
Also the most popular Python web framework has no track on Codecademy. Django, which is powering sites like Pinterest, Instagram,
Another major part of programming is data storage and access. SQL is a “coding language” that would be great to have on the site. If a lesson track was put up on MySQL (or MariaDB preferably) the knowledge would be usable for pretty much any database backend someone ends up using, whether its MySQL, MSSQL, Oracle, IBMDB2, etc. With these additions I am sure Codecademy would more than double the user base.
Missing social elements
Something that I find lacking is any social element on the website. This seems to be missing everywhere on the site. There are badges, so I would expect that some level of social interaction is in the cards, but even the most basic social interaction is missing. Blog posts with no comments, no feedback area to suggest new features, no real place to post a bug, and the forums to have discussions with fellow students are hard to find. These items are all a big part of sites like Khan Academy and are a gaping hole in Codecademy right now.
This is a site with a huge potential to help countless millions of people to learn how to program. The site and company are only a couple of years old at this point so I’m sure there is still a lot to do. Computer programming and Web represent a huge opportunity for people. The barrier to entry to creating your own web business is so low. Codecademy helps to lower the barrier further by reducing the slope of the learning curve. Programming gives us the language to speak to computers and use our imagination to create anything. Codecademy is a good example of this as the founders, both from Columbia University, pretty much dropped everything and build a site that went from 0 users to millions in just a couple of years.
I will certainly be taking advantage of the resources, and hope to see Swift/iOS and Java/Android show up on the site sooner than later.