generate a new title here, between 50 to 60 characters long
Written on
Chapter 1: The Obsessive Nature of Coding
This past week has been a whirlwind of coding; I've immersed myself in it completely. Checking the clock, I notice I've skipped breakfast and lunch, and by the time I look again, night has fallen.
At times, I wonder if coding is inherently obsessive. It demands that you juggle numerous details simultaneously, making it hard to engage without a certain level of fixation. As Clive Thompson notes in Smarter Than You Think, “Programming requires a meticulous attention to detail and the ability to view everything as a sequence of processes.” Yet, it’s not just a matter of paying attention; it necessitates an intense focus. A single misplaced semi-colon can bring down a colossal codebase, and a minor error in function can disrupt the entire logic you’ve constructed. How can such precision not invite an obsession that pushes aside mundane tasks like eating?
Coding demands the ability to navigate between countless components at once. One must consider the entire application while delving into the minute aspects of a single function. When the code fails to execute, the reasons could range from a typographical error to faulty logic, an incorrect library version, or even editing the wrong file. There are endless possibilities for things to go awry, from hardware issues to dependencies and even your own stubborn mistakes.
At night, as I lay in bed, the code continues to swirl in my mind. I dream of functions, classes, and control structures. Occasionally, I awaken with a solution to a complex issue already formulated in my mind. It feels as if I’m coding even in my sleep!
For those of you who also write code, this may ring true. The narrative of Facebook's inception, as depicted through Zuckerberg’s posts and in The Social Network, illustrates a man consumed by a coding challenge, working through the night. (While his task was to scrape images from college sites for less than noble reasons, we shouldn't blame PHP for that.) The reality is that many code writers tend to be obsessives.
A colleague of mine often spends her evenings wrestling with tough coding problems. The next day, I notice her git commit timestamps — code written past midnight and into the early hours.
Although I refer to my work as coding, others may label it differently: software engineering, programming, developing, or hacking. There’s a heated yet trivial debate over these terms. Personally, I prefer the term scripting. After all, JavaScript is the most widely used language today.
Scripting implies a more humble approach. It prevents me from getting too grandiose. Essentially, code is a script for the computer to execute. It instructs the machine to perform tasks that could theoretically be done manually. For instance, we could manually ask every nearby Uber driver for their location and plot it on a map, but the Uber app automates that process for us. It provides a set of explicit instructions for the computer, akin to a meticulous actor following a script. A script can describe a process that may take a person hours to complete, yet a computer can execute it in mere milliseconds.
When I'm in the flow, time becomes irrelevant; I often forget to eat. I'm entirely absorbed in the task at hand, and the hours fly by as I produce more lines of code.
I wouldn’t claim to be an exceptional coder. I still remember the wonder I felt as a child the first time I crafted the right commands to make a computer respond to my wishes. As I learned more commands, I felt a sense of guilt, as I hadn’t followed a formal curriculum or studied computer science. I didn’t understand concepts like bezier curves or the intricacies of sorting algorithms. In short, I wasn’t a “real” software engineer, just a hobbyist. Yes, I knew how to build websites, manage databases, and work with APIs, but those skills were merely tools to achieve other goals. I didn’t identify as a proper developer.
The tech industry is rife with imposter syndrome — in part because we are all imposters. No one possesses comprehensive knowledge of all code at all times. There’s always someone more dedicated than you. I think we all dread the day we might become the target of one of Linus Torvalds’ critiques.
Torvalds, the mind behind Linux, which underpins most modern servers, also developed Git, a tool used by nearly all software engineers to manage their code. He is notorious not just for his intellect but for his harsh critiques of subpar code. In one of his public comments, he described a piece of code as “pure garbage, and is written wrong.” Many developers fear that he might stumble upon their work and weigh in. I sometimes wonder if he’s the only software engineer who doesn’t grapple with imposter syndrome. He embodies the blunt, no-nonsense software engineer who claims to care solely about code quality. I see others trying to mimic his style, which is unfortunate. The industry doesn't need more people offering sound advice in unkind manners.
Today, I find myself in a managerial role. My responsibilities revolve around budgets, governance, and approvals rather than coding intricacies. I deal with PowerPoint presentations instead of PowerShell scripts. However, the ability to code remains a valuable skill — it opens doors to possibilities that manual efforts can’t achieve.
Frequently, I write snippets of code to address issues — code that links to legacy systems and extracts data. Manually accomplishing this would take weeks, but scripts can do it in mere minutes. My coding might be messy and chaotic — the kind of work that should be hidden away — but no one else needs to see it. All they care about is that a task they assumed would take six months is completed well before lunchtime.
Last week was one of those weeks. I had a tedious task (which I won’t detail here), so I opened Sublime Text and wrote the code. It’s not the type of code that would win accolades, nor is it suitable for broader deployment; Torvalds would certainly not be impressed.
My team often reacts with exasperation when I dive into coding. “The boss is at it again,” they might think. However, not everyone feels that way — some appreciate that I’m “one of them.” Others might be relieved that I comprehend the challenges they face daily.
Coding can be a frustrating endeavor. Despite the brilliance of computers and our discussions about usability, coding often feels like an uphill battle. More often than not, it’s a process of trial and error rather than systematic thinking.
Code can throw errors, crash unexpectedly, and behave in ways I can't comprehend. If I accidentally write “variable” instead of “Variable,” the computer seems baffled, as if to say, “Really? With all your advanced technology, you can’t figure that out?”
Among programmers, it’s a well-known fact that much of coding involves hitting walls, searching for solutions online, consulting Stack Overflow, and experimenting until you find the right fix. This is how our modern world has been constructed. Bugs are simply issues that didn’t arise during testing.
I might not excel as a full-time software developer. What truly engages me is the challenge of solving problems, not the process of writing code. I would struggle with the monotonous tasks of managing tickets, coding features, ensuring test coverage, and pushing changes to deployment. I have immense respect for those who engage in this work day after day, but that is not my calling. I code in frenzied bursts to address specific challenges. I code to achieve a purpose, not for the sake of coding itself.
Code serves as the bridge between concepts and reality — it allows us to bring our ideas to life. It is the clearest expression of our intentions. In the hours I spent coding last week, I don’t recall my fingers flying over the keyboard or my mouse clicking. Instead, my memories exist outside my body: I remember visualizing how the system operated, recalling errors, and mentally constructing abstract components. The act of writing code itself fades from memory.
Sometimes, I question whether I truly enjoy coding or if it’s merely an itch I need to scratch — as if each line I write is a nagging irritation that stands between me and my goals.
Yet, each morning, I awaken with fresh ideas, innovative solutions, or new approaches to structuring functions or refactoring objects, and I rush back to my computer. I promise myself I’ll eat breakfast after I finish this one last task.
Chapter 2: Insights from the Coding Journey
In this video titled "Has my side project become an obsession? (confessions of an app developer)," the creator shares their struggles with balancing side projects and personal life, highlighting the obsessive nature that often accompanies coding pursuits.
The second video, "Why coding is SAD and BORING," dives into the less glamorous aspects of coding, offering a candid look at the challenges that developers face in their daily work.