What Software Development Teaches Us About Life
Software development has been my preoccupation for the last seventeen years, so I thought that it would be illuminating to see the connection between this love affair and what it foretells about life, death, and a search for meaning.
But before we start, I must share a confession. I despised software development the very first time I witnessed the apparent contradiction:
Phew. “Incrementing a number and getting back that number? Why don’t you just curse me while you are at it,” said the mathematician inside of me. This incongruity was the start and end of this brief experiment, and many years would pass before my attention would revisit this field of study.
So, what can software development teach us about the larger questions of life and death?
Absolutely nothing, say it again, y’all.
OK, I could not help myself with the lyrics of War by Edwin Starr. But in all seriousness, let’s take a deep dive into this one.
Creation — I speak of this act not in the biblical sense but of first and second creation that attracts one to the software development life or any other artistic endeavor.
Everyone is an artist including YOU!
Look at anything that has been created, be it the phone or the computer you are now using to read this article. It was created twice. First in the mind of the individual and second in the world for everyone to benefit.
Where did the time go?
“Have you ever lost track of time thinking about an idea or giving birth to it?” This temporal shift is the feeling of flow that one experiences when totally enthralled in a passion. I have to say that hands down, this sensation is the most attractive element of software development.
Everything is created twice, first in the mind and then in reality.— Robin S. Sharma
The ability to silence the mind, extract elegant simplicity from the noise, mentally exercise a model that reflects the truth, and then see it all come to fruition is what appealed to me when I finally “got” it. Do you experience such natural highs from your craft?
Dissolution — Right on the heels of attainment is its twin. Dissolution is the peeling away of the very thing that once brought joy and fulfillment. This reversal applies to every love affair and is governed by the Law of Impermanence. Seventeen years into this life, I can state that while I still love software development, I’m no longer in love with it. You are probably wondering what changed?
Nothing and Everything!
I have been at this point many times before as I now look back. Once, I swore that nothing about the universe made more sense than the 64 squares on a chess board. The game whispered to me the first time I wandered into its path. I had no idea what I was looking at, and at the same time, I knew deep, deep down, that it made perfect sense.
But alas, this love affair too faded after many years of intensifying pleasure. Both times I fought against the dwindling force of attraction with a mixture of denial, anger, and blame. “What did I do wrong?” was a common theme at these moments. “How could the very thing that once brought so much fulfillment suddenly cease to speak to my heart?”
In reality, the change was never sudden; it just felt that way. We compound the problem by fighting against what is natural and delaying the last stage of grief, which is acceptance.
Every pursuit we endeavor in life yields both attainment and dissolution. The downturn is as important to the process as the upswing and is essential to free space for the next cycle of growth. This lesson has been painful and liberating and is one that I’m grateful to have learned.
Identity — ”Hey, I’m a back-end, mobile app developer, what about you? Oh, you are a DevOps. Why yes, isn’t everyone? Wait a minute, are they asking for ten years of experience with Swift? It has only been out for a few. Let me get back to you with an answer; I have to check my status as a full-stack developer.”
Let the identity wars begin as we seek to find our place on the throne. The judges, in this case, are job recruiters, placement interviewers, and yes, that strange guy in the next cubicle, all seeking to pigeonhole you as a developer.
Who are you?
What a dangerous road we walk in this profession and life. We are so quick to relinquish power over our identity in pursuit of what appears as a higher ideal. And yet we are the ones that become lost in the turmoil of organizational change and the constant remapping of what is hot and trending in the industry.
There is nothing wrong with seeking a particular title in your profession. The danger creeps in when you exchange your identity for this title. It is a trap that patiently waits to be sprung with frustration, confusion, and anger in its wake. Having a grip on your core values (free assessment) is a MUST as you point your compass to your true north. “Do you know what you stand for above the noise?”
Unintended Outcomes — Back in the days of sequential programming, the paths through a system were limited. This knowledge made development simpler but not bug-free.
This simplicity all change with the advent of user-driven intentional design. Higher defects became the price for this freedom and productivity. Life parallels this nonlinear journey. Try as you might to set a goal and take action, the outcome can be surprising at times.
In life, we use the words “bad luck” and “failure” in place of “bug” and “defect”, but the meaning is the same. Our inputs led to an wanted output, not because of laziness or inattention, but rather the sheer number of permutations at play.
No battle plan survives contact with the enemy. — Helmut Von Moltke
The lesson here is to apply the formula of life,Event + Response = Outcome
Whatever event is at hand must be balanced against the desired outcome and constantly readjusted with the appropriate response. The takeaway is that the plan is only a best guess based on the truth known at any given moment.
Insight compounds with action and a good plan must be flexible to accommodate this new understanding. In software development, this process is known as Agile, and it is a fitting metaphor for life.
Patterns — Our journey into teasing life and death lessons from our profession now ends where it started with patterns. We make use of patterns in software development every day. After all, a pattern is simply a recurring solution to a common problem.
A look back on my life, and I’m sure yours as well, reveals such patterns. The biggest teaching for me has to be with first impressions.
These are not always right, and in most cases are dead wrong!
Yes, the saying that first impressions are everything is misguided and small-minded. How can you honestly make a bedrock decision when you have but a minuscule of the truth? And yet this is what the often recited quote seeks to teach us.
Had I followed my first, and monumentally incorrect, impression about software development, I would not be writing this article today, and I would not have been blessed with the insights into life which it parallels.
It is not endearing to render premature judgment just because you either did not understand something at first glance or incorrectly read where another person was coming from with “Hello, my name is and this is how I shake hands.”
Life is about staying open for as long as possible, while you gather data. I would further add that introductions in life are moments to be silent and listen to what you heart whispers. It is a process of living from your heart and not your head.
So, here we have it, folks. The design architecture that is software development mapped to the meaning of life and death. What does your profession have to tell you about your journey here and forward? I would love to hear your thoughts.