Every few years, I indulge in a bit of sympathetic magic by writing reviews of books that don't actually exist in the hope that it will inspire someone to write them. Previous versions written in 1997, 2003, 2009, and 2014 led to Beautiful Code, Making Software, The Architecture of Open Source Applications, and most recently 500 Lines or Less, which is now in early release.

Writing these wish lists has helped me figure out what I think our field needs and how best I could contribute to it. While most of the books I've described in the past are still needed, the ones I would most like to write myself right now are:

  1. Software Engineering: An Evidence-Based Approach: as I outlined last year, this textbook would show undergraduates how to collect and analyze data about software engineering projects. (I'd drop the 500 Lines-style analysis of actual architectures, since that would be too much for a one-semester course.)

  2. Close Enough for Scientific Work: a 500 Lines-style collection of examples showing scientists how to build, test, and manage small versions of real scientific applications.

  3. Software Carpentry: Next Steps: what to learn after a standard two-day Software Carpentry workshop. (I'd like to turn the core lessons into a book as well, but that's mostly an editing job at this point.)

  4. Teaching Software Carpentry: a short guide to evidence-based teaching using Software Carpentry as a running example. (In order to write this I'd first have to upgrade the Software Carpentry lessons to use more of what I've learned and preached in the last five years, but I should do that anyway.)

And since I'm fantasizing anyway, there are also three software projects I'd like to push forward:

  1. A web-native replacement for screencasts. Various prototypes have come so close to being usable...

  2. A web-based tool for peer instruction that would allow instructors to toggle seamlessly between one-to-many broadcast (lecture) and small-group discussion (learning). Piotr Banaszkiewicz showed last summer that it's possible, and videos like this (plus a ton of research) should convince any open-minded person that it would be worth doing.

  3. Diff and merge for spreadsheets. Right now, most end users have to abandon the file formats (and associated tools) that they've used for years if they want to start using version control. There's no technical reason for this, and I honestly believe that making Subversion, Git, and Mercurial play nicely with structured file formats would help persuade tens of thousands of scientists to adopt better computing practices.

One project that isn't on this list is the one I proposed to the Shuttleworth Foundation last year: using off-the-shelf package managers to deploy lessons. I'm still interested in that, and I still think that "writing better lessons" and "sharing lessons" are chicken and egg, but the last year has convinced me that neither will happen until more people are using evidence-based teaching practices.

So, which of these would you most like to see me tackle?