A hell-raising labor activist fires up the crowd, spurring a group of employees on to victory in a union election. A writer tweaks and polishes the first few paragraphs of a novel destined for the bestseller lists. A software architect spins up a web of microservices, load balancers, and databases on the canvass of a dry-erase board. What are all these people doing? It’s simple: abstraction.

Improvement

At first glance it’s not entirely clear that there’s a whole lot in common among these activities. Certainly they bear different emotional tones, and still more fundamentally, they are physically quite distinct.

Indeed, most people probably do not think of software engineering, writing, or progressive organizing as very similar activities, certainly not in that combination. There is a precious little written about the similarity between software and writing, and still less about the similarity between progressive organizing and software.

In point of fact, though, these activities are all at minimum about something profound and vital: improvement. The labor organizer wishes to improve the fortunes of her union; the writer wishes to give his readers a new understanding of the world; the software engineer wishes to give the software users a new or better gadget for accomplishing some task. That’s well and good, though the same could be said about beavers building a dam or a cyclist taking a spin around the block for some exercise.

Abstraction

What’s interesting about these three activities is that they involve synthesizing many real-world observations into a theoretical model which can be applied and reused elsewhere. In software, we call this activity abstraction. Abstraction is nothing new - it shows up in ancient mathematics, for example - but software developers have lately turned it into something of a high art, something which can be produced in vast quantities, reviewed and refined over time. A software engineer gets requirements from a product manager, or dreams them up perhaps - the engineer abstracts these requirements into a series of instructurions, better known as code - the code undergoes some testing, hopefully - and finally a user receives the code and starts using it. It’s such a huge activity that the tools of abstraction are themselves enormously valuable.

Writers have engaged in abstraction for millenia, but we don’t generally think of their craft in those terms. Let’s set aside non-fiction for the moment, since it’s actually a bit easier to see how that kind of writing is a form of abstraction. Let’s instead think about fiction: the writer takes some ideas in her head - which may or may not have any similarity to anything happening in the world - and turns it into a series of words and sentences which together convey… something. An idea, a feeling, maybe just a clever whodunnit plot: it’s all the product of taking something as nebulous as the thought processes inside the writer’s head, turning into text and language which readers can ingest, allowing them to form new thoughts and feelings in their own turn. It’s this process of turning the nebulous thought into a reusable, symbolic artifact - a fancy name for a book - that is exactly the process of abstraction.

Can we really say that progressive organizers engage in abstraction? It’s not particularly obvious because the visible things that a progressive organizer does are so far removed from the artifact which is, at heart, the organizr’s goal - better policy. The labor organizer seeks a contract between a group of employees and its employer. The community organizer wants the city to raise its minimum wage or obey environmental standards and clean up its rivers. The field organizer for a political campaign wants to see a politician elected, and wants laws or regulations to improve. Sometimes the policies involve public entities like a state government, sometimes they involve private entities like an auto factory; sometimes the policies are a formal code of law, sometimes they are the execution of laws written but never followed; sometimes the policies are a bit more nebulous - a tacit agreement that some person or some organization had better behave or fear the wrath of its constituents down the road. They are policies nonetheless, and they are reused by - that is to say, applied to the benefit of - the people who fought for them in the first place. Or so we hope. It’s the progressive organizer’s job to see an injustice in the wild, to bring it to light, to organize a group of people around fighting that injustice - and finally to formulate a policy which can put things to rights. In this case it is injustice that is the nebulous problem; the genius of abstraction is in formulating a new policy and a group to fight for it. If the work of abstraction is good enough, then both the group and the policy are symbolic artifacts which redound to the benefit of many others over time, putting the injustice to an end.

Tools of the trade

It’s easy enough to define terms in such a way that things line up neatly. At a sufficient level of generality, every activity under the sun is similar enough to every other activity under the sun: astronomy is ballet is carpentry, and so forth.

What’s interesting about abstraction is that it’s a skill which applies itself well across disciplines. Once you’ve learned how to do abstraction in one context, you get to be reasonably good at it. The tools of the trade are reusable.

Earlier I pointed out just how valuable the tools of abstraction are. Github, which is actually just one vendor for one flavor (git) for one particular tool of abstraction (source control), sold for $7.5 billion last year. That’s more than three times the amount of money spent on the 2016 Presidential election! Granted Github is not just any tool of abstraction - arguably it’s the single biggest one, though there is quite a long tail of other products ranging from programming books to IDEs. It’s also quite apparent that Github is more than just a pretty skin around the fundamentals of the git version control system, and incorporates features which go above and beyond the “tools of abstraction.” Still, its core value proposition is source control, which is at the heart of the abstraction process - that is how we keep track of the code we produce in response to requirements, and no less critically, that’s how we change the code over time.

Source control, it turns out, lends itself nicely to other problems of abstraction. Writers have known that for a long time: a good novelist will have countless drafts of the great novel-in-progress, will squirrel away chunks of writing and stray paragraphs that don’t seem to fit anywhere but are too good to throw out; and so on. Entire businesses like Gitbook and Leanpub have built on this insight; they try to bring a little bit of the software engineer’s rigor to this writer’s problem.

Progressive organizers are keen on source control as well; they call it “history” and are fanatical in studying its lessons. Alas, there is no really systematic project, that I know of, which brings the history, lessons, and insights from progressive organizing into a repository which can be readily reviewed, amended, and improved, as one might for a code repository in git. At least, not something with a grand sweep that covers a broad range of historical social movements.

That is just the point, though: each of these disciplines has something valuable and fascinating to teach the others. Writers divide themselves into two camps - plotters and pantsers - but software engineers learn to be plotters first and always. Is there some hidden value to being a “pantser” that engineers are missing out on? Progressive organizers have studied voter turnout methods and electioneering rules obsessively; they understand quite deeply that the forms of engagement impact their success or failure. What is it they can teach software engineers about design and usability?

These are relatively modest questions that don’t even scratch the surface - while the modes of thought are similar across these discipline, the amount that one has to teach the other is tremendous.

Reducibility and the boundary problem

It’s reasonable to ask what, precisely, falls under the umbrella of “writing” and “organizing”. Even software engineering is something of a murky term these days, given the proliferation of “no-code” tools. Or to consider the question the other way around - what sorts of activities are reducible to one of these three we’ve already identified?

I like to think of these terms broadly, if only because it’s clear that so many of the lessons we think of for traditionally-defined activities also apply at the margins. Painters, musicians, and other artists are practitioners in abstraction in just the same way as writers; they can benefit from source control, and they understand the benefit of jumping in to a new artistic endeavor with minimal planning like a “pantser”, just as well. Elected officials, lawyers, academics, and journalists interact with written policy just as deeply as a progressive organizer; they value the lessons of history and are no less attuned to the significance of forms of engagement. So we can think of some lawyers as progressive organizers, but where is the boundary? Is a well-bred partner at a prestigious mergers-and-acquisitions firm a progressive organizer? Almost certainly not, but it’s easy to see that Thurgood Marshall was.

More than that, the reduction from one form of “abstractioneering” to another is fascinating and often instructive across disciplines. Let us take very different forms of progressive organizing: the NAACP’s legal strategy for desegregation, as against the 2008 Obama campaign’s blockbuster campaign strategy. These two strategies could not have been less similar in the particulars, not least because one involved a very long-haul series of court cases and the other involved a peer-to-peer outreach campaign paired with an everything-including-the-kitchen-sink media blitz. Yet there is something fascinating in how both strategies transformed a radical concept into reality by connecting the dots between basic principles and on-the-ground reality, inviting judges and voters alike to settle into notions that would previously have been unthinkable. Any artist, and any engineer, should find something valuable in the way these powerful ideas drove very different organizing efforts separated by five-and-more decades of turbulent history.

We can of course take this line of thinking to an extreme. According to Derrida, reality is a text. In his formulation, since text is open to interpretation, and if reality is a text - then everything is open to interpretation. If that is true, then everyone (indeed, everything) is a writer, and is also an “abstractioneer.” I’m not sure that for our purposes here such a broad construction makes any kind of sense; but it’s worth thinking a bit broadly about what constitutes a practitioner of abstraction.

What’s left out

Astute readers will note what I’ve left out of the above discussion - actually a couple of things.

I described the activity of engineers, writers, and organizers as “synthesizing many real-world observations into a theoretical model which can be applied and reused elsewhere.” Who else does that? Scientists, of course. Indeed this description is almost a textbook definition of the practice of science. Gravity, the central dogma of biology, the periodic table - perfect examples of practical abstractions that loom large in the high school science curriculum. Journals mint more of these things every day, and if you like we can consider this activity a cousin of software engineering in the above discussion. You could even take a broader view still and think about all the different kinds of engineering that fit this description. It’s a reasonable way to extend this theory, though it’s not exactly where my mind goes. Partly that’s because the tools of software are so different from the tools of science, partly because, if I’m being honest, I know almost nothing about scientific practice today. It’s my blog and I’ll be myopic if I want to.

Which brings me to the other great omission above, non-progressive organizing. Two field organizers go door-to-door, one lugging around Obama literature, the other McCain - are they really so different? On the one hand, obviously, no - they’re doing the exact same thing! On the other hand, one wants to improve the world and the other wants to leave it the same, and that is a huge difference. Set aside the policy positions for a minute; in the abstract progressive organizing is about progress, conservative organizing is about stasis. William F. Buckley, Jr. famously described a conservative as someone who stands athwart history yelling “stop!” Whether we’re taking about health care policy or civil rights I think that’s a pretty reasonable summary. There is no genius of abstraction in yelling “stop!” - it’s a playbook literally thousands of years old. But inventing new policy and organizing towards it is another matter altogether and requires tremendous creativity. Of course you may take issue with my theory here, especially in there particulars of what constitutes progressive and conservative policy. For example, Obama’s famous health care bill essentially copied many ideas from the Heritage Foundation’s policy proposals in the early 90s. As it happens, I think that part of Obama’s genius was organizing towards the goal, almost as much as the goal itself. The Heritage proposal was a cynical effort to undermine Bill Clinton’s health care bill, which is why conservatives never really organized towards it. I think that a proper grouping of the activities we call politician organizing do in fact paint a pretty sharp line between the progressive and conservative flavors. But again, it’s my blog and I’ll say mean things about conservatism if I want to.

What’s next

So… what? All of this theorizing is (hopefully) very interesting, but what is the point?

In part I’m merely thinking out loud. Software, literature, progressive activism - these are all subjects that I think about a lot, that I enjoy delving into, that have benefited me personally a great deal over the years. At a certain point I began thinking about how similar these apparently-different disciplines are. A long time later I started writing down those thoughts. Today I finally put a bow on them all in the form of a blog post, and to some degree you’ve been indulging me in some good old-fashioned write-it-down-so-it-stops-bouncing-around-my-head-ification.

Also, I have a hope, however distant, that the disciplinary reductions I’ve sketched out here will actually come to some use. Approximately, I’d like to see lessons learned in one these fields go on to benefit one of the others. Literature is an ancient, fascinating field whose historical legacy is nothing short of astounding; its study is bound to benefit the much younger, perhaps more glib field of software engineering. Software is a young and lucrative field, with orders of magnitude more resources available to it than even the most financially-secure progressive organization; what kind of thought processes and procedural models can this very fortunate field donate to progressive causes? And so forth. This sort of hope is a bit of a generalization of my reflections on changing jobs last year, when I suggested that software and progressive organizing are very similar.

Naturally, it’s one thing to have a hope, especially such an unspecific and odd one. It’s another thing altogether to see it take shape. Hopefully I’ll have a chance to develop these thoughts with a little more detail, soon!