Well, Change-Harvesters, I want so badly to connect up the dots from these previous muses about the topic and tie them back to the concrete realities of professional software development.
But I can’t. Yet. I can’t yet. We have just a little further to go.
When we talked about "if all you have is a hammer", we mentioned frames, and I mentioned Race, Build, and More, but then we kept right on going. I want to circle back now, because our heavy reliance on these causes a lot of confusion. They tend to block change-harvesting.
A "frame" is a kind of crystallized chunk of experience. One wants to slide quickly to "idea" or "concept", but resist that pull: ideas & concepts are far more chosen, more conscious. Frames are — to use a lovely geek phrase — much closer to the metal.
The word has two flavors in it, both important. First, think of a frame as a rigid structure that holds things together. Your car’s frame, for instance. Second, think of a frame as a boundary, with an inside & outside. When we speak of a painting’s frame, we use that flavor.
(The word comes from AI/cognitive science. There, it is used far more rigorously than I’m using it. I am okay with that. I’m not trying to simulate minds here, I’m trying to stimulate them. If the usage gets me in trouble, well, I been kicked outta better bars than this one.)
Operationally, frames work kind of like those “simple machines” we learned about back in primary school: the lever, the inclined plane, the wedge, and so on. Tho they work when they’re alone, they’re more commonly combined to form complex devices.
Like those simple machines, frames aren’t inherently correct or incorrect. Pulleys aren’t better than inclined planes in some abstract sense. Rather, their value comes from the fit-to-application, which is always richly contextual.
Let’s look at these three: More, Race, and Build, and maybe that’ll give you a better sense of what they are and how and where they work.
More: If some X gives you some Y, then more X will give you more Y.
That’s it, that’s all there is to More. (I just flashed on Ross Perot saying “It’s just that simple!”)
We use More every day in myriad ways, in both our shared physical world and our shared fictional one.
Some sugar makes it sweet, so more sugar makes it sweeter.
Some weight gives it traction, so more weight gives it more traction.
These are all routine. More is also less, of course, because that’s how linear proportion works.
More is not of universal value. No frame is. More can’t deal with non-linear effects at all:
Some salt brings out its flavor, so more salt — no, wait.
Some substances relax you, so more — no, wait.
Fred Brooks’s famous Mythical Man Month is a book that is all about the ways in which More doesn’t work in the software trade. If you haven’t read it, buy two copies, so you can read it faster. (Stolen joke, no citation.)
Race: There’s a starting point with no value, an ending point with all the value, and a direct path between them.
Race, you can see, is in some sense heavier than More. It has more parts, more constraints, more assumptions. It’s harder to one-liner.
Some of you used Race to plan your route to work this morning. Some of you used it to get the kids out the door to school. It’s a little heavier than More, but we still use it a lot.
Race is the stuff of linear optimization. When we think using it, at the simplest level we’re talking about the speed with which we traverse the path. We can get clever, too: tweak the path a little, shave a corner, learn to adjust our stride.
The key to Race is the certainty. We know the starting point. We know the finish point. We know the available paths, and the cost of each one. We use all that knowing to optimize our behavior.
And again, it has merit sometimes but not always. When we aren’t surfeited with knowing, Race can send us scurrying off in the wrong direction, optimizing every aspect of our rush down a path that doesn’t ever reach the finish, or only reaches where it was when we started.
Build: The value comes from A, which sits atop a pile of precedents B and C and D, each of which requires specialization, most of which have their own precedents in turn.
Build is also heavy compared to More. The frame here starts to push up into the world of consciousness.
If you cooked today, you probably used Build. There are other cases, too. But obviously, the easiest way to see build is to find yourself a nearby building that’s under construction and just open your eyes.
We get some land. An architect makes a plan. We dig a hole, lay a foundation, erect walls. It’s all in a sequence, and it’s a sequence of specialties. It is not possible to paint the walls before we’ve put on a roof, and in any case those are two very different tasks.
Build is about linear sequencing. It’s about arranging things so that they’re done one on top of the other, until finally we get value-day: the day we all move in and start paying exorbitant parking fees.
So these frames, little crystallized essences of our experience, mostly based heavily in the direct physical world, functioning at times as scripts for action but at other times as scripts for perception or reasoning, these are the “simple machines”.
There are more than just six frames, but the analogy holds:
We combine the frames, in various proportions at various locations, and we make from them a weltanschauung, a worldview, an outlook, a framework, a *way*. We make amazing things from our frames, amazing.
Just as your car, your house, a plane, a router, a factory, a toy, all of these are based in the simple machines, so, too, all of the fantastic mental constructs: money, software, history, and so on, are all made from the frames.
No one frame is the frame, always valuable, always correct. The ones we’ve the most personal successful experience with are the ones that are writ large in our minds, the ones we turn to most readily, the ones that most powerfully filter our experience. (Remember the hammer!)
I’m guessing you’ll readily see More and Race and Build in your job, but here are some fairly common statements people make using them.
“We’ll hire more people so we can get more value.”
“Nothing matters but shipping this thing March 1st, so what corners can we cut?”
“Everything needs the database, so we’ll start with two months of design on that.”
“If this team worked harder, we’d get more story points done.”
“Testing takes too long, so we never do it.”
“We’ll paint ourselves into a corner if we don’t get the architecture right from the beginning.”
The change-harvester’s worldview uses all these frames, but it combines them in different proportions at different times, and it adds a couple of significantly different ones, too.
Unending: We are being & participating in dynamic unities, & the change doesn’t stop. Just as the belief in the finish line from the Race frame shapes existing culture in the trade, so the disbelief in it shapes the change-harvester’s culture.
Non-Linear: The world is dominated by non-linear effects. More, Race, and Build are all focused primarily on straight linear function, and they’re very powerful when reality yields to that, but when it doesn’t, they can hurt us very badly.
A dim outline begins to emerge for all this. I want to stress “begin” and “emerge”: this is all work-in-progress. I have many questions and damned few answers. That’s the way it is when you try to rearrange frames and worldviews.
I have characterized the change-harvesters take as “local, oriented, taken, human, and iterative”. By using those words and their concomitant idea-clusters, what I’m trying to do is connect the practice of what I do to the theory of it.
Note that directionality: I didn’t start with a theory, but with a bundle of successful practices. Change-harvesters are pretty empirical in outlook. But the practices are related to each other. I don’t think it’s just a grab-bag of lucky tricks. I think there’s a reason.
Now we gotta bring it home with some damned concrete.
We’ll start — soon — with the coding. I want to show you how my coding practices, described below, connect back to the theory, and back to those words: local, oriented, taken, human, and iterative.
How I Work – Just Programming Mix | GeePawHill.org
But self-similarity is another critical idea of the change-harvesting outlook: the same five words work for me not only when I’m changing code, but when I’m changing myself, or helping others with their change. It’ll start with code, but it doesn’t end there, by any means.
The Change-Harvesting Camerata, an informal gathering of change-harvesters, is open. I’m using it for now to fund the time I spend working on these ideas.
Join today! The first 50 yearly members get a personal consult!
Let’s change things!!
Listener Support and How to Be On the GeePaw Podcast
If you love the GeePaw Podcast, show your support with a monthly donation to help keep the content flowing. Support GeePaw Here. You can also show your support by sending in voice messages to be included in the podcasts. These can be questions, comments, etc. Submit Voice Message Here.