Programming as a Performance Art

Music, dance – we think of these as performing arts. Before audio and video, each performance was unique and fleeting.

These disciplines developed notation (sheet music, Labanotation) to capture a projection of the experience – perhaps the skeleton, perhaps just a shadow.

The arts have a tradition of personal instruction. My first piano teacher claimed a teaching lineage through Rachmaninoff, Bach, and Josquin des Prez – going back 500 years and more.
 

Computer Science has had notation (code), and has acquired some aeshetic sense around what’s good code. I remember learning compilers by studying Wirth’s Pascal compiler, and learning operating systems by reading Unix code. There have been movements to preserve old software, and emulators to run them. (See http://www.linuxlinks.com/Software/Emulators/ and http://outliners.scripting.com for examples.)

Software has a teaching ethic, though I wish it were stronger. In Programming as if People Mattered, Nathaniel Borenstein speculates that computer science could be inspired by the way architecture, music, or drama are taught. I value the classes or tutorials I’ve had with people like Ivar Jacobsen, Ralph Johnson, and Kent Beck.

I’ve long felt that software has a performance aspect that we’ve ignored. I’ve envisioned a famous programmer sitting on a stage, house lights dimmed, with their screen projected for visibility. They sit down, compose a program (perhaps reproducing a classic), and finish to rousing applause.

I’ve seen a version of this in software demos – particularly of development environments. (Although – they tend to resemble rock concerts more than classical music concerts.) I’ve seen a glimpse of this in seminars. But until December 1999, I hadn’t seen it a true performance.

In the first XP immersion class, I was lucky to see two performances. (No stage, no dimmed lights, but gratifying nonetheless.) Martin Fowler presented “Chapter 1 of Refactoring,” a video rental program. This was a solid performance, exploring the theme “programmer against complexity.”

The second performance was by Kent Beck and Jim Newkirk, in a duet. They tackled the chestnut “Sieve of Eratosthenes.” The 4-hand arrangement worked well, and let us see not only “programmer against complexity” but also “programmer against self” (when they started to make mistakes) and “programmer against programmer” (when they resolved their differences). The audience appreciated the show, but we should have applauded more enthusiastically.
 

Tragedy, comedy, drama – a programmer and program could explore any of these.

Don’t just admire the pot – watch the sculptor at the wheel. Don’t just admire a quilt – see it designed and sewn. And when Donald Knuth comes to your local arena to perform “Sort in Mixolydian,” come early so you get a good seat, applaud an excellent performance, and tell your grandchildren about it 25 years from now.

[September 7, 2000.]