With CS Education Week 2014 in full swing, everyone from Barack Obama on down is talking about the need to create more programmers. But is teaching kids how to move a bird using loops and conditionals really enough? My son did five such tutorials before he turned six years old, but still doesn’t have the confidence or skills to create his own programs.
For that matter, does the traditional Computer Science curriculum do any better? Why are so many graduates trapped in dead-end jobs doing testing, documentation, and IT support instead of filling our nation’s crying need for more programmers?
At The Swan Factory, we are committed to creating a “full stack” experience of programming. Our measure of success is not getting kids to solve a puzzle, but to actually learn enough about programming, tools, and culture that they can submit a pull request to the Hour of Node project on GitHub:
The Hour of Node app is built like an onion (hat tip to Larry Wall). Eventually, we want high school programming classes to be able to walk through:
- Playing the game via the GUI (now)
- Editing and sharing game levels via the GUI (v1.0)
- Creating and sharing complete games via the GUI (v2.0, 2015)
After they master the semantics, we will teach them the mechanics of Open Source participation
- Cloning the project on GitHub
- Creating complete games as CoffeeScript dictionaries
- Pushing their changes into the repository
Then — and only then, after they’ve learned event-driven semantics, self-expression, and community participation — we can start teaching them syntax and tedium:
- Editing full-blown CoffeScript programs
- Hacking the SwanKit runtime
- Filing and fixing bugs
To get them there, we have adopted a Fully Open approach. All my daytime coding (and most planning) sessions are live on the Internet. Instead of a polished Disney-esque experience — which most kids could never imagine creating — they get to see the messiness of real software development, and be inspired to do the same themselves.
It is an audacious vision, and we are at the very early stages of turning it into reality. But we hope our small contribution will help reframe the terms of the debate, and inspire others to join us in tackling the hard problem of making programming more accessible to everyone.