I morphed this newsletter from being solely about software design to being my general blog. I feel a little bait-and-switch-ee, especially with all you paying subscribers, to offer you one thing & then deliver something else. Now seems a good time to inform you about what all topics you may be seeing soon. (Use Sections to choose what posts you see.)
I’m not guaranteeing all these topics will be represented. That’s not how I engage with ideas. I have an even larger portfolio of ideas that I think of once a month. The ideas listed here are the ones where I’ve made enough progress on that I’d like to write about them (each one is at least book-sized).
I do guarantee that you’ll see frequent posts about software design. Tidy First? is almost out. Book 2 is cooking on the front burner. Posts on software design come roughly once a week.
Paying subscribers also get one Thinkie (habit of creativity) every week. See below for more details.
Ideas
Scaling XP—One limitation of Extreme Programming is that it speaks to organizing the work of tens of people, not thousands. Limiting scale is an advantage because it lets XP say more about details but it’s a disadvantage because the macro environment profoundly affects development & the macro environment is often severely dysfunctional (at least from a geeky perspective). What would it take to speak from principle about the work of thousands?
TCR: Test && commit || revert—TCR is an alternative to TDD that I find fun & challenging. If the tests fail, the code reverts to where it was the last time they succeeded. TCR creates intense incentives to work in teensy tiny steps. I’m not sure where TCR is going because folks pooh-pooh it as impractical.
Limbo—Speaking of the work of thousands, coordinate the work of thousands of programmers besides having everybody work in teensy tiny steps. Likewise, this is utterly impractical—until it is essential.
3X: Explore/Expand/Extract—Software development changes radically depending on whether you are searching for a new source of value, trying to keep up with demand for a surprisingly successful source of value, or continuing with predictable growth. Not just software development—management changes, technology changes, project management, product management, marketing, sales, finance. Everything changes.
Thinkies—Habits of creativity. Habits may seem like the opposite of creativity, but I’ve noticed that most of my ideas originate from a limited (like 40) set of habits. Each of these habits (“Thinkies”) generates an idea in a certain context. Mostly the ideas are easy to invalidate. When you fail to fail, though, the idea is likely to be valuable. Paying subscribers get a new Thinkie every week.
Systems Thinking—Learning to see causality flowing in a system offers greater leverage with fewer unanticipated side-effects than working with simplistic, linear cause-and-effect.
Geek Incentives—We create incentive systems all the time, often without realizing we are creating incentive systems. These systems often result in outcomes that are the opposite of what we intended. Feedback loops, reinforcing & inhibiting, intensify these unexpected effects. What would it take to create aligned incentives? (e.g. performance review)
Tidy First?/Empirical Software Design—How & what to design, but even more when & why. Software design as an exercise in human relationships, at all scales.
Test Desiderata—12 desirable properties of tests. How do they interact? Interfere? Reinforce? We’ve only explored a tiny fraction of this space.
Coaching—I’ve spent many thousands of hours coaching thousands of students, including coaching coaches. I may be ready to talk about it.
Sponsoring Software—What can an executive or customer of software development do to encourage success from their perspective? Lots, it turns out. There are also some classic mistakes to avoid.
Tradeoff Thinking—One of my most prolific Thinkies is recasting a situation as a tradeoff space. A dozen tricks suffice to make tradeoff thinking a powerful way to think.
Others
That’s not everything going on in my brain. I’m thinking about politics, climate, health care, mortality, the future of creator economics. I’m making art. I’m writing stories. Playing poker. Singing & playing guitar. The list above, though, is what you’re likely to see me write about here.
The systems thinking/learning-organization/Deming people worked on comp/performance review alignment stuff. When I finally got down to their answers, I experienced enlightenment.
Of course this never caught on.
Peter R. Scholtes laid it out in The Leader's Handbook in 1998. Very thick, interesting book full of congruent advice for leaders looking to work in "the new way," including long sections about performance review, with a lot of specific discussion. I don't want to do it a disservice by boiling it down too far, but here's how it ends:
"What I have proposed in this chapter is that there is no right way to do performance appraisal. Performance appraisal is inherently the wrong thing to do. It is derived from the most inhumane instincts of people and it hurts both those who are evaluated and, in the long run, those who evaluate. It provides no demonstrable benefit to the organization or its customers.
"Those who would insist in practicing performance appraisal must accept the burden of proving that, first, it does no harm and, second, it makes a demonstrable, conclusive, positive contribution."
The details are a long road to accepting that all "merit" pay is capricious, and that non-capricious, objective elements are necessary to enable collaboration and remove the harmful effects of capricious systems of leadership. The book urges separating the ideas of performance and pay entirely, because performance is not about luring people into giving forth some otherwise hidden reserve by dangling incentives.
Fully rejecting the idea that people who are "better" at something should be paid more was tough for me. Merit pay is deep in our cultural bones. I think I'm better than a lot of people at what I do, and it's wrenching to let go of the idea that I should be paid more, praised more, etc, as a result. But very serious people have grappled with this enough that I am convinced it's not just a flight of fancy.
I would rather have an impact on things that matter, I would rather see people raising each other up and working together in joy, than get paid more than other people doing similar work.
The happiest places I've been, pay and performance evaluation was the furthest from everyone's mind. As they decayed away from that "everyone's just a software engineer, we get periodic raises that are basically fine, and mostly don't think about it, even as we step between teams and roles" ideal, things became worse in a way that I don't think is a coincidence.
I'd be very interested to hear your thoughts on this, though. I think if we're really going to see an XP-enabled or post-XP revolution now, it's going to come from people with XP experience building and influencing organizations that are now small, or don't yet exist. And those people need to have an intellectual and practical toolkit available to reach for that is not the conventional model when their people start asking them for career ladders and feedback, because what they'll get will destroy the potential of scaling the greatness of the organization.