How I Came To Write "Tidy First?"
Taking a software design course in college (Go Ducks!), we used Ed Yourdon (RIP) & Larry Constantine’s book Structured Design as a text. (This was ~1981-ish.) I read bits & pieces. Vaguely remembered coupling. Totally got cohesion wrong. Noted that most software investment went into “maintenance”. That was about it.
When Martin Fowler wrote Refactoring in 1999, I contributed a chapter & kibitzed on most of it. I had my own take on refactoring, organized in a more regular & less digestible way. I noted that some day I wanted to write my own version my way. Events intervened & I wrote about other things.
In 2005, Steven Fraser put together a panel celebrating 30 years since the publication of Structured Design. Ed & Larry participated, as did Grady Booch, Brian Henderson-Sellars, Rebecca Wirfs-Brock, and Steve McConnell. I knew I was going to need some ammunition if I was going to sit up front with a crew of that caliber, so I read the book again. Just kidding. I read the book for the first time.
My mouth dropped. All the ideas about design I had been playing with in a loosey-goosey way were laid out with precision & detail. Well, precision, detail, & some seriously out-dated examples.
I had breakfast with Ed & Larry, enjoying their comfortable banter (they were MIT classmates). I expressed my appreciation that they had laid out Newton’s Laws of Motion for software all those years ago. They must have been a bit bemused by my enthusiasm. Here’s how they signed my long-ago textbook:
In my giddiness I vowed to re-write their book for a modern audience. The basic principles you have been reading about here were all set out in that book—cost management, contagious change, coupling, cohesion. The examples needed updating & (for my taste) the principles could go a level deeper.
My first presentation of the updated material came in 2009. I called the idea “Responsive Design”, drawing a contrast with the Scylla of Predictive Design and the Charybdis of No Design At All. I made several well-received presentations but the idea as a whole didn’t take off. (I must say my explanation of cohesion seemed to leave folks more confused than when they started.) Then “Responsive Design” came to mean something entirely different. Then I shelved the topic. Sometimes you’re just not ready.
A vow is a vow, though. When I joined Gusto as Fellow in 2019 I had an unexpected 2 week delay before starting. With nothing else scheduled, I decided to just write & see how much of the book I could finish. Every day I’d awake, walk the hills, sit down & write long-hand, eat & nap, type & edit that morning’s draft, & watch videos until I fell asleep. I got into a great rhythm, ending the fortnight with 10,000 words. As a bonus, the first words off my fingers were, “Software design is an exercise in human relationships,” which quickly became the motto of the entire enterprise.
I stalled at 10K. I tried to write. I tried to present. The wheels spun but the car didn’t move.
Part of the problem was time—my energy was going into helping Gusto grow. Part of the problem was my ancient enemy Scope. I was trying to address too much of design all at once. Re-reading what I’d written so far, I noticed that I was spending considerable time around the moment an individual programmer, faced with the need to change code, has to decide whether or not to Tidy First. I moved the 10K words to the bone pile & started over with a new outline.
By January of 2021 I had started studying incentive systems in greater earnest. I thought, “Physician, heal thyself!” What incentive system could I put in place to keep me writing? I’m not a slow writer. I’m a frequent non-writer. That’s what takes all the time, the time I’m not writing. I started this substack as a way of creating community, getting feedback, & generating energy.
I did indeed write, but in splotches—here, there, all over. The words reflected my thoughts but they weren’t going anywhere. I bumped along for another year.
And so I took the incentives plunge—paid subscribers. I didn’t want paid subscribers. I didn’t want to feel beholden to anyone. If someone was giving me $7 a month, I’d feel an obligation to produce. I’d feel terrible if someone cancelled.
Turns out social obligation is an excellent incentive. If I go more than a week without publishing, churn rises. And so I write. Last month I had enough of a draft that I signed with O’Reilly Media. And here we are.