Behavioral product strategist and gamification designer. Many pages are incomplete. These are ideas in motion, and I'm iterating as I go. These notes are patterns I've noticed and hypotheses to bet on.


Learnable programming

When people want to learn to code from scratch, they might search for an online code academy. Through a series of lessons, they would teach you the ins and outs of a language and of your developer tools. If you're bought into this way of teaching people how to code, you might try to learn better pedagogical technique.

Learnable programming asks a different question. How might we design developer tools and programming languages so coding is inherently easier to learn? How might we change the UX of an IDE such that certain programming practices are more obvious?

One of the most important questions in learnable programming is around how to tighten and facilitate feedback loops. How might we make the impact of a person's code immediately visible to them such that they're able to learn how to write better code? How might we make code playful vs. intimidating?

An example of this might be the live programming environment we implemented in The debugger for GuidedTrack, making it so the user can change the code and immediately see the change reflected in the preview. It also highlights the code that produces the preview, giving the user more visibility into the effect of their code.

For an excellent read on feedback loops and failure in the context of coding, read this piece by Max Kreminski.

I first heard the term "learnable programming" from Brett Victor in this piece.