I’ve always struggled with the question of which I’d rather do in my career: would I like to always write new code, or am I happy fixing and extending older code (aka maintenance)? Some people may say it’s never that black and white, “Projects usually have sprinklings of both!”. In my career, though, it has typically followed that trend. So what makes the dichotomy between “writing new code” and “maintaining old” so important in my life as a software engineer, and why am I writing about this?
Writing new code is by definition the act of being creative. It’s hard. It requires you to use every skill you’ve cultivated as an engineer to make the best choice you can with an often incomplete set of information and constraints. It isn’t like math where there’s always a right answer. The quality of the engineer is in how well the design holds up to the test of time versus the cost it took to create it. In my experience, people are more interested in writing new code because it’s exciting and seems more interesting. On the other hand, finding and solving bugs offers more immediate gratification. It’s like a mystery: follow the clues, create hypotheses, experiment, and repeat. The quality of an engineer in this case is whether they can be trusted to find the problem versus the amount of time it takes them to do so. Maintaining old code isn’t as prestigious: (1) you’re typically using older technologies, (2) you’re constrained in the type of creativity you can employ to solve the problem due to risk, and (3) it’s comfortable. You don’t typically have to worry as much about deadlines.
Whether you want to write new code or debug and extend older code is a big reason people decide to leave contracts to find something better. Many people in their mid 20s are thinking ambitiously. They’re thinking about getting rich, creating the next big thing, and getting paid more money. Writing new code, whether it be in an up and coming project or with a new business, is typically a better path to that end goal. I didn’t start out like that. My goals upon graduation were much simpler. I wanted to eat whatever I wanted and I didn’t want to be in debt. I had no desire for a family, a nice car, or a house. I simply wanted to work on interesting, challenging projects, and that was it. I was ripe for the taking. My first contract was a large maintenance contract. In the first year, I simply studied and found bugs in 50,000 lines of C code. I didn’t realize it at the time, but my whole reason for existence was just to be there, learn the code, and to be available to correct issues if the need arose. It really didn’t matter if I did anything every day as long as I was there when it mattered the most. I was underpaid, ignorant, stagnant, and for three years never made any sort of move to improve the situation.
As time passes, I’ve observed many people in that same life stage move with an often incontrovertible drive to do something significant. It makes me wonder why I never experienced the same phenomenon. What drives people to want more? What guiding principle in people’s hearts gives them the ambition to do more? I used to feel that I was in an environment that didn’t foster that type of passion. However, I am also not driven by the same desires as others. For some, it’s dressing fashionably and going to social events to show off. It’s driving a really nice car to a nice house with matching furniture and a token wife. For others, it’s intellectual stimulation or more magnanimously, giving back to the world by teaching and ensuring others have the same opportunity. For everyone else, it’s about having a family. Is ambition all about doing things to get to a place that maximizes your happiness?
When I was younger, I derived a large amount of happiness by trying to make random people on the Internet happy. I served as a moderator for various forums, but the most notable thing I did was to fulfill feature requests for websites and open source projects I created. People would make suggestions or requests, and I would spend time implementing them. I was so happy when people genuinely responded with appreciation. This drove me for years. Past the emotional acceptance I received, I was also intellectually stimulated. I like automation. It is a secret pleasure to write something complex and see the log statements go by showing that it works, and conversely to see the error statements when it isn’t. That provides the most stimulation of all. Tracking down bugs is like being in a mystery novel where you’re the detective. The more challenging, the more fun. It’s all like a big adventure and it’s different every time. It became a game finding ways to solve mundane tasks by automating parts of it away.
As I got older, I realized that my perspective has changed. I don’t derive as much happiness from the appreciation of others anymore. It’s more internal, and I don’t care as much about how other people perceive me as well. I still derive happiness from the mystery, but I also realize that the effort is essentially empty. No matter how many bugs I solve, it leads to nothing substantive or meaningful for my life. In an effort to understand what is happening to me, I found this great article by a gentleman named Mark Manson. It’s called the Four Stages of Life. In the article, Mark defines the four stages as Mimicry, Self-Discovery, Commitment, and Legacy. I’ve always been a bit of a late bloomer, but I feel as though I’ve finally moved into stage 3, Commitment. I say this because I am more critical of my friendships; I don’t find as much joy in playing video games or watching endless swaths of TV or reading fiction; and because of my increased attempts to finally have a relationship for the first time in my life. As he says in the article, “You are left with what you’re good at.” I’m good at coding, writing, and analysis. I have a finely tuned sense of empathy. I can be creative given the right circumstances, and I am courageous and not willing to give up easily.
So where is the desire to “write new code” or “debug old code” rooted in my psyche? When I talk to many people about their ambitions, they have used the keyword “legacy” to describe the motivation behind their actions. Has legacy always been the subconscious driving force in my solution to the dichotomy? Is it the same mental source that drives my desire to become an entrepreneur or to take risks? It’s crazy that the thought of something fundamental to my career in computer science got me thinking so keenly about life goals. But the dichotomy is relevant in life as well: you choose to take risks and try something new, or you sit back comfortably and get the instant gratification of solving life’s everyday challenges. What is my end goal? I now look to the future and I feel as though I’m constantly running out of time and that I need to do something. Is that starting a business or having a family? Is it simply continuing on in my current job but pursuing alternatives in the meantime? Or perhaps I’m just at the stage of life where simply being alive has less meaning now, and I must take steps to supplement that meaning in other ways. I don’t know, but I’m more anxious than ever to discover what they will be.