As a software engineer, I write a lot of changesets. Changesets are an “indivisible group”¹ of individual code changes (“commits”) meant to be treated as one. It’s the sentence of software engineering — and, just like a sentence, the goal of a changeset is to convey a full thought or idea. Presenting a well-thought out idea is the result of practice, honed through repetition and iteration.
Conversely, assembling a coherent changeset isn’t strictly about the code itself. If a changeset is a sentence, then a pull request (providing context via a description for peer review) is a paragraph. Paragraphs, like a pull request, contain interrelated ideas meant to convey a concept. Well constructed paragraphs communicate ideas via sentence structure, form, and grammar; similarly, pull requests communicate its ideas via comments, code, and, finally, a description, tying it all together.
In the moments before submitting a pull request, I often have to tell myself: writing a description up will only take a second, this is worth doing well. Even in the midst of an emergency, when adrenaline is high, I still take the time to write a description, to provide context. You never know what will be important, I think. You might as well write it down.
Scientists have been studying how humans experience time. As it turns out, we experience time in three second increments; the past three seconds, and the next three seconds: just now, and what’s next. Colwyn Trevarthen, a psychobiologist at the University of Edinburgh in the United Kingdom notes, “We’re not talking about something crude and automatic. We’re talking about something flexible and highly expressive. It’s biological. It’s mental. It’s spiritual. This is the timing of the human spirit.”²
Lately, I’ve been separating my life into two buckets: just now, and what’s next. If time is measured by stringing together three second increments, how do we make meaning of the just now, and the what’s next? These three second chunks may not relate to each other now, but in the future? They might. I connect present and future by scribbling notes to myself, and constructing narratives for others —which intersects beautifully as changesets, and, in particular, as a fleshed-out pull request description.
I believe coherent pull requests are an act of empathy, for the person reviewing my changes, for the me in the just now — the me trying to get a quality review — and for the me in the what’s next? Future me encompasses a lot of people: future engineers on my team, new and veteran alike, trying to make sense of decisions made, or engineers trying to diagnose problems, who weren’t involved in the original changes, but are involved now because of something past me missed. So, I provide context, as best I can, to the once and future me.
“Metadata,” Jason Scott says, “is a love note to the future.”
We learn by doing. There’s a model of learning — the Dreyfus model of skill acquisition — that proposes we move through distinct stages when attempting to learn a new skill: novice, competence, proficiency, expertise, and mastery. In order to move though these stages, and on to mastery, the Dreyfus brothers³ assert that experience is necessary:
“[C]oncrete experience plays a paramount role. Rather than adopting the […] view that proficiency increases as one moves from the concrete to the abstract, we argue that skill in its minimal form is produced by following abstract formal rules, but that only experience with concrete cases can account for higher levels of performance.”
Yes, we learn by doing. However, we also learn by doing often enough that we can rely on our experience of the problem to intuit the answer. Though repetition can be boring — the word “rote” comes to mind — it’s central to learning new skills.
This is the story I tell myself when I open a pull request. I use the same structure each time and try to keep my changes small. I tweak and adjust so that, over time, I might master this skill. I will learn what’s important now, I think. I will discern what is next.
Many thanks and secret handshakes go to Ibu Madha and Leah Reich for proofing this, and to Josh Kaderlan, who constantly encourages me to write my ideas down.
¹ “Changeset.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 8 Sep. 2015. Web. 9 May. 2016.
² Kessler, Rebecca. “Hugs Follow a 3-Second Rule.” Science Jan. 2011. Web. 8 May 2016.
³ Dreyfus, Stuart E., and Hubert L. Dreyfus. “A Five Stage-Model of the Mental Activities Involved in Directed Skill Acquisition.” (PDF)