We’ve talked about frames adding up to worldviews adding up to cultures, but it all feels pretty vague in its possible importance. We need some informal sense of how this works in practice. In the immortal words of Brian Marick, “an example would be handy right about now.”
Continuous Integration (CI) is the practice of frequently cycling code through the source vault. People practicing CI do this several times a day. In “git” terms, they both pull/merge/push, depending on language & task, once every 15-90 minutes.
There are several reasons for me to choose CI as my example.
First, though its usage is far from being universal, it is a “known entity”, and many of my readers are familiar with it.
Second, at the time of its initial introduction in the trade, it was regarded as wild-eyed radicalism, and fought off by many organizations as “just crazy talk”.
Third, the case “against” is a really simple & direct example of misapplying a frame. The culture of the trade, based so heavily on simple usage of More, Race, and Build, routinely applies these ideas quite thoughtlessly, and in this case, causing its analysis to be mistaken.
Fourth, it actually opens or segues into the question of what I’ve called multi-valence, and will let us dip our toes into that idea.
(A technical note: Tho they are related and sometimes conflated in the literature, CI is not the same as Continuous Deployment (CD) or Trunk-Based Development (TBD). I advocate for all three, but each is different.)
The More frame we’ve described already. It’s very easy to summarize:
If some X gives you some Y, more X will give you more Y.
It is one of the most basic frames, a fundamental reasoning pattern that is quite “baked in” to human bodies.
The direct and simple case against adopting CI is rooted in the More frame. The argument goes like this:
Some merging, say, once a week, gives you some pain, so more merging, say, several times a day, gives you more pain.
Applications of the More frame don’t get much simpler than this one. If some merging hurts, more merging will hurt even more.
What could be more obvious than that!?
Twenty years on, CI is reasonably widespread. I don’t think it’s “default mainstream” technique, but a substantial minority of shops train it, use it, and assume it. Tho the case “against” still has adherents, it has become progressively more obvious: CI is not patently insane.
But if that case “against” were valid, CI would be at most a severely limited fringe activity, something specialized environments and rare cases might call for, but not a significant number.
So, is there something wrong with that case? The answer lies in its misusage of More.
The More frame is about linear correlations. “Some X gives you some Y so more X gives you more Y” can be drawn on a plane with an X and a Y, and the resultant drawing is a straight line.
There’s nothing wrong with using More in a linear situation. But when you are analyzing non-linear correlations, More can lead us very easily into mistaken reasoning with infelicitious outcomes.
A quick refresher on what I mean by saying “non-linear”. Many very common correlations can’t be drawn as a straight line, and must be drawn as a curve.
A trivial example of non-linearity: the curve to correlate “number of balls” with “difficulty of juggling”. Nearly all of us can juggle 1. Many can do 3, 4, some, 5. At 7 and above, the difficulty is regarded as “professionals only”. At 12, it’s so hard no one has ever done it.
That juggling curve is non-linear with a vengeance. The thing is, there are *lots* of non-linear correlations. Salt in your food. Water in your diet. In the organic world, non-linear correlations dramatically outnumber linear ones. And the More frame just won’t do the trick.
Plot “difficulty of safe and successful merge” against “size of merge”, and you don’t get a straight line. Merging 10,000 lines safely and successfully isn’t just 1000 times harder than merging10 lines safely and successfully, but many many more times harder.
The ordinary human language I often use: in straight-line correlations, the bigger the problem the bigger the difficulty. In the juggling & merging curves, the bigger the problem the “bigger-er” the difficulty.
Merging once a week isn’t just 5 times more painful than merging once a day, it’s a lot more painful. Mergining once a day isn’t just 7 times more painful than merging once an hour, it’s a lot more than 7 times as painful.
And that is why CI works, in spite of the reasoning of the More frame, because the variables “size of merge” and “pain of merge” can’t be plotted as a straight line.
Now, circle back. I didn’t start this CI conversation because I wanted you to believe in CI. (I do want you to believe in it, and CD and TBD for that matter, but that’s not why I started this muse.
My purpose here was to draw your eye not to CI but to the reasoning that it met when it was first introduced around the beginning of this century.
Frames really matter. They have profound and dramatic practical impact. Changing frames, adding to our set, fitting them well in their application, all of that is really serious pragmatism, not vague philosophical maundering, but genuine and direct impact in the trade.
So let me re-hash some prior homework, newly armed with this muse: this week at work, notice all the places we’re using More to reason about causes & effects and make decisions about behavior.
I’m done for now. I’m about to apply a frame I call Lasagna, in which I take alternating layers of flat noodle with a meat & tomato sauce, and stuff them into my belly.
I hope you’re having a good evening, and then I hope you can apply More successfully, and have a great one.
GeePaw’s Camerata is a community of software developers leading in changing the industry. Becoming a member also gives you exclusive access and discounts on the site.
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.