Long ago, I wrote Adventures in C#, a book that showed me learning C# while writing a fairly extensive application, a text editor. The style of the book was to show what really happened as I wrote the app. At that time, Extreme Programming and Agile methods were new, and many people didn’t believe you could really write real programs incrementally, refactoring to keep things clean. I recall one thoughtful critic telling me “If you wrote an editor this way, and a requirement for
undo came up late, you could never get it in.” Well, of course I can’t claim to have forgotten this challenge. Nonetheless, in the Adventures book, I wrote well-factored code, but never did a thing aimed at undo. Then, very late on, I put undo in … and it was easy.
Microsoft poached me from Pearson to publish the book. They did so quite easily: they bribed me. My editor at Pearson said: “They’ll pay you a lot of money, but they won’t sell the book.” That’s exactly what happened. However, at the time, the “lot of money” was important, because there was a recession going on. Both of the people who bought the book liked it, but that’s about where it stopped.
Of course, I’ve written dozens of articles, programming in that same style, where I don’t know what I’m doing, take false steps, get in trouble, and recover. It’s possible that I’m a really terrible programmer, but in fact I’ve observed a lot of professional programmers, and most of them make dozens of mistakes in the course of a morning, so I think I’m really only unique in that I admit it. (I could be wrong about this but I hope not.)
At the Agile Alliance Technical Conference, I drew a little graphic for some reason, and I got to thinking: why not a book in the “Programming in Public” style, with shorter applications, in various languages, showing what I do and what happens when I do it.
What might be in it? I don’t know. I’m always coding something. Contents may include …
- Python - I have a little app in mind for my house, to detect whether the generator is in use. This would require that we deal with
- Raspberry Pi or Arduino - to support the app.
- Codea - I’ve done some Spacewar apps. I might move some of that material, or more likely, do it again. Or another game in a more modern style.
- Linden Scripting Language (LSL) - I have an identity on Second Life, and do a fair amount of scripting. LSL is an interesting system and because it’s about making “physical” objects do things, it’s quite difficult to test. We might learn some interesting things if I could write about that.
- Ruby - There’s a lot of stuff that I do in Ruby, most of it simple.
And so on. I might include articles from this site, or do some of those little programs over again for freshness. I might include some work with Bill Tozier, with whom I pair from time to time on truly odd things.
The whole point would be to show what happens to one real programmer as he works, and to show how he thinks, and how he acts, so as to get things done.
If I were writing that, would you like to read it? Would you pay for the book? Would you like to support the work financially?
Please drop me an email (ronjeffries at acm dot org) and let me know your thoughts either way. Thanks!