Generations of Clean Code
I think it’s a common truth, that we wonder about what came before us… Perhaps at some level we hope in knowing what came before us we’ll find what led to us… We know some things. We know that there is this universe, and it has and is made of information.
If one zooms in far enough they may notice that we too are made of that same information. Perplexingly, at our high level, we are detailed and perfectly distinguishable from the other arrangements of bits. It seems, at every level, exists specifically dictated information conglomerations and defined interactions, tangentially related expressions codified through meaningful patterns, with neccesary abstractions for required precision: There has been, is, and will be code.
I believe that is the essence of what Uncle Bob means in the beginning of Clean Code. We can’t separate ourselves from code or the importance of its precision. We are a product of that precision. It’s in our DNA.
23 and Us
Recently, my parents both had there chromosomes parsed by different genetic information brokers (more on this later), so inheritance has been on my mind. Not to brag, but I like to think of myself as an operable human specimen. Again, not to brag, but rather to count my lucky stars (and perhaps yours too), it’s worth noting that there are stringent requirements for being an operable specification of a human. Most importantly, you need operable human cells. A normal healthy human cell requires 23 pairs of specifications that we call chromosomes to work properly. There are 3 main types of chromosomal anamolies that may sound strikingly familiar to a software programmer: deletion, duplication, and inversion.
Deeper still than the chromosome, slight variations and messes in genetic code can echo on through posterity and have. For example, we share DNA from endogenous retroviruses (viruses that reverse transcribe their genetic information into host germ cells) with bacteria, and even more with lizards, and even more still with squirrels, and most with bonobos and chimpanzees. Malicious buggy pieces of genetic code, infecting the software of our ancestors billions of years ago has followed the tree of life all the way from its roots its leaves, persisting from simple amoeba to sentient homo sapiens.
Fortunately the framework for building life is pretty fault tolerant and many of the errors caused by previous genome penetrations can be masked, but only after massive amounts of time and evolutionary energy. Try to imagine your DNA without a steady process like evolution having cleaned up it’s code. Try to imagine how you might have lived without billions of years of dying. It’s perhaps a dark thought to consider, but nonetheless true, that death has been a common consequence of faulty expectations and misunderstood requirements, it’s ancestral debt paid down for the ascendance of descendants. Death provides context for failure and reason for new tests written in and into blood. Is it so harsh to equate matters of life and death with how we go about our work writing code? Maybe, but for me there is an obvious correlation that was summed up nicely by Kent Beck in Implmentation Patterns and quoted by Uncle Bob in Clean Code,
"...good code matters...."
8, Life, and Me
I agree, good code matters, and I believe that information created by, with, or through our own life can be given to the ear of someone else, without being heard, and I know from experience some important lessons must be learned in solidarity with a team. This begs the same pondering I began with, only in more personal terms:
What came before me?
What led to me?
What have I inherited?
I’ve often asked myself those questions during or in recognition of the best and worst times of my life, which always involved a team in some form or another. In a previous narrative bias I’ve been a stunning example of inherited tension, at times tragically mistaking the ticking of a generational clock for a fate without free will and or a need for motivation. There’s a generally agreed upon notion but total shirk of responsibility I used to believe. A notion embodied by the idiom,
“all’s fair in love and war…“
What’s fair in love is at least trying to communicate with our partner. Anything less would be unfair. What’s fair in war is at least trying to have our buddies back like they have ours. Anything less would be unfair.
I used to believe I inherited a great ability in those two human endeavors and a self-discipline from my Dad, the Masterchief, who was an FMF Corpsman, cared deeply about his craft, and was full of good advice on leadership and work ethic. We’ve both been in and out the otherside of love and war and at both ends, perhaps because of him, I remember asking those questions.
He was born on 8/8/56 and might have asked those questions long before his son born on 8/18/88 interviewed at 8th Light on 8/18/17. Much like how a strange series of 8’s in one’s life might give the illusion of fate and dimenish one’s locus of control, I’ve thought because I’m born from him and I’m like him that a love for the same type of work and a great deal of hard learned cautionary tales would free me from having to worry about how much I’d need to want to be good at something before I would be. Because I failed to understand the sacrifices, time, and discipline required to be good in love and war, and do either as they’re meant to be done, in both I’ve been unfair.
Seeking answers in the past is good practice but hoping they are stories apart from our involvement is not. I sometimes to my own demise have hoped for quick stories with beginnings and endings, tales that are predictably finite, comforting and unrealistic. We are a continuation of action and inaction, and we can take ownership, for the path we’ve been put on, and the path we’ll cut. We have a responsibility to those that will retrace our footsteps and those whose footsteps we retrace. Making things clear in all directions, and keeping things clear as long as we have hands to do the work is how we can craft a better experience for ourselves and others as the generational clock ticks away. I asked those questions when I got the offer from 8th Light and I’m beginning to uncover answers.
What came before me? A lineage of hard work, empathy, mentorship, and shared responsibility I’ve been invited to take part in. A school of thought that reaches directly back to the author of Clean Code.
Schools of Scott
There’s perhaps no better programming analogy nor mathematical proof for the concept of generational impact than what I’ve began to code this week: Conway’s Game of Life. In John Horton Conway’s, Game of Life, generations tick by as if they were a microcosm for how the actions in one life are quickly copied into the next. Here’s an excerpt from Wikipedia explaining the origins:
Conway was interested in a problem presented in the 1940s by mathematician John von Neumann, who attempted to find a hypothetical machine that could build copies of itself and succeeded when he found a mathematical model for such a machine with very complicated rules on a rectangular grid.
This project was assigned to me by my mentors Paul Pagel and Nicole Carpenter. I am in their school. Nicole’s mentors were Zack Davy and Malcolm Newsome. I wonder what I’ve learned from Nicole that came from their school. At least one of Paul’s mentors was Robert Martin, the author of Clean Code. I wonder what I’ve learned from Paul that comes from Uncle Bob. Are we just copies of our mentors, met to build more mentors in the same likeness? Well, maybe in some regard and certainly I hope to immulate the best practices of my mentors but of course we’re not EXACT copies. Still, thinking about the impact that this lineage of mentorship has had on me in both direct and indirect ways, past and present, I’m beginning to consider the future:
What will continue on after me?
What will I lead to?
What will I pass on?
I’m not sure what the School of Scott will look like, but I do hope to have put in the same hard work, be as empathic, and pay forward the same lessons through mentorship as my forebearers have for me. I think the most meaningful simple step I can take right now to symbolize my understanding and commitment to these ideals, the products I’ll build, the people that came before me, those that I’ll work with along the way, and those that will come after, is to sign the manifesto that specifies these virtues…