| |||||||||||||||||||||||||||||||||||||||||||||||||
|
/ (38) code/ (1) emacs/ (2) go/ (1) hardware/ (2) python/ (2) spam/ (1) twisted/ (8) web/ (1) weblog/ (5) | |||||||||||||||||||||||||||||||||||||||||||||||||
You're probably familiar with eXtreme Programming, and branch-based development, and agile development. But I've discovered that I've been using a new technique recently, that I call Forgetfulness-Based Development. The way it works is this: I come up with something insanely complicated, that takes me weeks to get my head around and document and implement and test, but seems like it's the best way to solve whatever the current problem is. And then I go away on vacation for two weeks, and forget absolutely everything about it. And then I come back, and look at it again, and discover how little I can understand. After a few days of cursing the fool who wrote the insane thing, I start seeing ways that it could be done more simply, or more generally, or more robustly, or more understandably. And then I write some more code to replace the old stuff.
Lather, rinse, repeat, and eventually you wind up with a design that solves the problem *and* makes sense to a new employee/developer. As the python folks say, Readability Matters. And as Brian Kernighan says: "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it."
(of course, to make this work right, you have to take a lot of vacations. but usually it's a sacrifice I'm willing to take.)
I just got back from PyCon. Highly inspirational as always, saw some fascinating projects and some thought-provoking keynotes. r0ml's talk in particular has me thinking about how to structure code as a narrative, trying to bring the world of human-to-human communication and the world of human-to-machine communication closer together. He had a lot fo say about parallels between the development of writing systems (the introduction of random-access pages in a book rather than linear-access scrolls, the use of standardized fonts, the use of spaces between words) and the development of programming languages.
I ran a Buildbot BOF, and had about 25 people show up! There are a lot of folks out there using this thing. Very gratifying.
I spent a few days sprinting, mostly working with Eric Mangold (aka teratorn) on a Buildbot plugin for Trac. It's starting to take shape nicely.
Also, I foolishly walked into a room where a bunch of people were playing a PyGame space-themed production game called Galcon, and stupidly installed it. It's amazingly addictive for such a straightforward game. Now I'm seeing little spaceships launching and crashing into planets every time I close my eyes. I'm hopeful that the hallucinations will only last a few days.