Learning programming is hard, but we can help people learn better by giving them better tools and materials.
There are two major things that make learning programming (and particular concepts in programming) a harder task than it should be: Our learning materials start with the wrong assumptions about what the learner already knows, and poorly explains the concepts, making it difficult for that person to visualise them; And our tools (programming languages, IDEs, text editors) make the experience of getting things wrong very frustrating, because they won't tell you what's wrong, why it's wrong, and how to fix the error.
For some people the problem with learning materials goes even further, as they make those people feel that programming as a is not a thing they should do, or can do.
There are some notable exceptions to this problem, of course. How To Design Programs is an excelent introductory resource to programming, and DrRacket is a programming environment that helps the learner understand their programs and problems that happen in those programs. But How to Design Programs uses Racket, which makes people less willing to read it, and DrRacket has a less-than-stellar user interface, besides not running in a browser, which increases the friction for using it to teach things.
Quil's Guide to CodeLand is a very ambitious project that aims to address parts of these problems (while some are inherently social and can't be fully addressed with teaching materials). In essence, it's comprised of:
- A new programming language (Canel.és) and web-based environment (Pastri.es), which is familiar (as a subset of ECMAScript) while making it possible to provide not only immediate helpful error feedback, but also help people learn particular concepts, like structural recursion, in an easier way.
- A series of visual, example-driven, interactive books on programming, starting from the very basics and covering different models of programming.
- A series of visual, in-depth, interactive articles on particular concepts in programming, in a similar vein to Bret Victor's Learnable Programming.
- And a monthly short-comic on programming culture, workflow, and community building.