Oral Tradition in Software Engineering: Passing the Craft Along Generations
notes date: 2018-10-14
source links:
source date: 2016-10-07
- If I say “Jingle Bells, Batman smells”, what do you say?
- Where did you learn that?
- No parent uses this as a lullaby; this survives solely in the 7 year-old to 8 year-old substrate
- The genesis of software is mostly lost to the ages
- typically very proprietary
- software was considered nothing more than a byproduct of hardware
- “Oral literature” – when oral tradition is distilled into a clear and repeatable narrative – first became a thing on USENET
- Ed Nathers’s story about Mel Kaye (search for “Real Programmers write in FORTRAN”)
- the true story of Mel Kaye
- working on the LGP-30 (a drum-based machine)
- drum-based meant you have a drum rotating at a fixed velocity. Each instruction took a variable duration, and so also had to say “the next instruction is at location FOO” to ensure the drum would not try to read the next instruction too early (or too late). So you are writing optimizing assemblers that try to pack instructions well for the drum rotation rate of the machine.
- If Mel is our Illiad, Tracy Kidder’s “Soul of a new machine” is our Odyssey
- Tracy sat with Data General as they engineered a new computer, and documented the process, warts and all
- Nonetheless, the ’80s and ’90s were a local maximum for proprietary culture, so not much is in the open.
- sgi.badattitude was well-known (and jwz’s writeup of netscape’s bad attitude and really bad attitude)
- John Browne’s “The Bug Count Also Rises”, the winner of a Microsoft-internal Hemingway parody contest
- David Hanson’s Ruby on Rails video, November 7, 2005
- giving you a demo wherever you are is a form of oral tradition
- Google Tech Talks
- Dtrace review Google Tech Talk
- This presentation was viewed by tens of thousands of people, more than all of the talks I had given before summed together; but I didn’t know it would be like that so I was super candid
- I had arrived way too early for the talk and finished a book that I hated, but I’m a finisher so I couldn’t not finish it, so the first 7 minutes were a drive-by on the book “Dreaming in Code”
- The true oral tradition nowadays is not the content (the talks/documents themselves) but the meta-content (collections of talks and documents)
- The UNIX source base as a vessel for narratives
- Joe Ossana’s C implementation of
troff
- Joe died suddenly, and nobody since has managed to understand it (Kernighan famously tried to modernize it and failed), so we summon Ossana from the dead every time we invoke man
swtch
, that does the mechanics of context switching, and its famous “You are not expected to understand this.”- There was an intern who was on staff to document functions and this comment was not to keep developers out, but to save labor
- But years later it was discovered there was a subtle bug in here, so “when you write “You’re not expected to understand this”, you probably don’t understand it either.”.
- Why does C have no logical XOR
- Cantrill had heated arguments with Roger Faulkner in favor of C having logical xor and can’t understand why it wouldn’t make life better
- “I held Dennis in such high regard that I’m just like “they forgot; it was a mistake”; Roger held them in even higher regard and said “anything that is not there, is not there intentionally, it is what the founder’s intention””
- Once, an email got sent to Dennis Ritchie about it, and Ritchie responded with Faulkner’s reasons: it can’t short-circuit (unlike other logical operators) and writing it from scratch is not so bad
- “It shows that original intent can be wrong”
- “Future generations want to honor your intent” is the lesson from the logical XOR story
- “We need to tell them what our intent was”
- Javascript is the failed state of programming languages, precisely because there is no Constituation. Brendan Eich never wrote a book.
- Jeff Bonwick & Bryan Cantrill’s chapter in Beautiful Code
- a very narrow path by which we could solve a devastating problem – one which is disappointingly inelegant.
- a very long comment ending with “You think this is cheesy? Let’s see you do better.”
- Code Comments are one of the most discoverable and durable forms of communicating to future generations
- Cantrill has code in UNIX that’s been running for 20 years
- Recording presentations and tech talks
- Amazing durability: “your kids will watch it, your grandchildren will watch it, your great-grandchildren will watch it”
- Encourage folks to record the things you don’t otherwise record: this allows a source-base to project its values
- “When people want to come work for Joyent, I have them go watch a couple of key videos, just so they know what they’re getting themselves into. And as I tell people, like, “I’ve got a couple of videos – if you know me you know which ones I’m talking about – you watch this, and you will want to work here more or less, but you will not want to work here the same after you watch this video.”
- You allow people to opt-in to your traditions and values.