I wrote yesterday’s piece on API education with Codecademy back in February. I didn’t publish because I wanted to do more research on suggested areas of improvement for the Codecademy team to balance my criticism.
The point of yesterday's post was not to bash Codecademy, it is to incentivize them to make their platform better. Until then, I can't really recommend as an API building block.
The publishing of my post yesterday was triggered after seeing an example of what is possible after seeing another learn to code platform called Studio Sketchpad by Ari Bader-Natal (@studiosketchpad). Studio Sketchpad is an open studio platform for creating beautiful code, aiming to be a open studio for individuals learning to sketch beautiful code on the web canvas--built on a mashup of the Sketch from Processing and the Pad from EtherPad.
Studio Sketchpad, while still a work in progress has many of the essential elements I feel should be part of any learn to code with API tool.
- Learn By Yourself - You can select lessons and learn online at your own pace
- Learn With Instructor - You can learn in real-time with the assistance of instructor
- Create Lessons - Instructors can build and record lessons and publish to a gallery, providing code walkthrough, with audio (using SoundCloud), complete with playback
- Cloning - You can clone a sketch (lesson) and tweek, edit and make learning more hands on
- Versioning - You can see the, interact and fork sketches at any point in the evolution of the script
- Embeddable - You can embed the sketch within your site, allowing for use on your site
- Render - All code renders so you can see the results of the lesson and your modifications
- Share - Allow you to share to your social networks
- Export - You can export code lessons to use outside of Studio Sketchpad
- Licensing - Sketches are openly licensed allowing for reuse, remix and learning
I found nine additional features, beyond what is available via Codecademy. I strongly feel both embeddability and learn with instructor are critical to API education. My primary arguement in yesterday's post is I can’t endorse sending our API users away to learn about an API. API education is an hands-on, iterative process, and we have invested too much in our API ecosystems to ship our users off to boarding school.
Secondarily API education is not just people learning about your API, it is about you learning from your API consumers and making your API endpoints, resources and community better. As API owners there is so much to learn through interacting with our API consumers as they learn and integrate with a platform. API education isn’t a one way street.
I understand everyone in Silicon Valley is cheering for Codecademy, but I think that we are setting the bar too low. What Ari has created with Studio Sketchpad raises the bar, and really delivers a platform that can help people truly learn about programming. His implementation is for learning about Canvas, and would take some work to retrofit for PHP, Python, Ruby and would need some sort of emulator to work for iOS and Android, but the important elements are all there.
I’m also concerned with where Codecademy has opted to set the bar, since they are a YCombinator company, based on the fact that the technology Studio Sketchpad is built Eitherpad has its origins in YCombinator before Google bought it, and in its early incarnation as AppJet. There seems to be some sort of broken feedback loop at YCombinator, and I don’t think Codecademy is consciously ignoring the past, but I think there is a lot they can learn from their own investor's technology history, our rich history of teaching people to program and some of the proven building blocks for API support and education.
I hope Codecademy and other platforms who are looking to teach people to use APIs receive both my posts as constructive criticism on how they can evolve their platforms to better serve not just the API consumer, but also API owners--resulting in truly helping educate the masses about the potential of APIs.
from API Evangelist http://feedproxy.google.com/~r/ApiEvangelist/~3/9HXitpzhACs/