Beautiful Lessons

On May 17, 2006, I sent the following email to a couple of hundred programmers and computer scientists whose email addresses I had gleaned from the web:

I hope you don't mind mail out of the blue, but I'm working on a
new book project with O'Reilly called "Beautiful Code" and would
like to ask you to contribute an article-length section. Profits
from the book will be donated to Amnesty International.

The book will be a collection of master classes in software design.
In each chapter, a well-known software developer will present one
of his or her favorite pieces of code, then explain what makes it
particularly appealing.  The aim is to "think aloud" while walking
through its design and implementation, so that junior developers
can learn to see through more experienced developers' eyes.


When I sent out that email, the most common response was something like, "I don't think I've ever written any code I'd call beautiful, but I'd really like to read the book when it's done." There were others, though, and two years later, Beautiful Code won a Jolt Award.

I think it's now time for me to do this again, because I think programmers need a book called Beautiful Lessons. I don't want it to be a collection of clever ways to introduce learners to recursion, because thinks like that don't transfer to other lessons; instead, I want examples of lessons that are beautifully structured—that have well-written objectives, exercises that relate directly to those objectives, instructor's notes that actually help with the teaching, and all the other wheels that we're now reinventing for Sotware Carpentry. Most of all, I want their creators' commentary and feedback on it from other experienced teachers—the discussion of "why" that has made the Architecture of Open Source Applications series so much fun.

I would also like a pony for Christmas...