Programming is often described as a mixture of problem-solving, creativity, and technical knowledge. But what it's really like, day to day, might be best captured by a sitcom, specifically an episode of Friends. In this particular episode, Monica Geller becomes obsessed with figuring out what a mysterious light switch controls in her apartment.
https://www.youtube.com/watch?v=pMuVm1Y669U
If you think about it, Monica's process mirrors the mindset and behaviors of a programmer, with a few important lessons thrown in.
Monica begins by systematically trying different combinations: she plugs in appliances, flips switches, and observes the results. Each step is designed to eliminate half the possibilities, so she can quickly zero in on the answer. This is how programmers approach their work, too. There's an initial curiosity: a drive to figure out how a system works or what’s causing a bug. Programmers, like Monica, start with hypotheses, test them one by one, and carefully document the results.
However, what makes Monica's behavior quintessentially programmer-like is her determination, bordering on obsession, to get to the bottom of the mystery. She goes to great lengths, and when nothing seems to make sense, she digs deeper, eventually ripping holes in the walls to trace where the wires go. This is where the programmer’s mindset kicks in: the willingness to keep going where others would give up.
In the world of programming, this trait can be an asset. Many problems require this kind of persistence. Debugging particularly nasty issues, for example, demands a level of obsessiveness to continue after hours of dead ends. It’s often the person who keeps pushing and doesn’t give up who finds the root cause and implements the fix.
But there's a fine line between productive perseverance and unproductive obsession. Monica’s descent into chaos, as she leaves her apartment in tatters, is an apt metaphor for what happens when programmers go too far. A common pitfall for newer developers is the inability to know when to stop. Sometimes the problem at hand isn't worth solving, or at least not in the way we imagined. There's a point where the damage we cause by pushing too hard outweighs the benefit of solving the problem.
In programming, like with Monica's light switch, you must weigh the cost of continuing against the potential rewards. Maybe the juice just isn’t worth the squeeze. The wisdom comes in knowing when to walk away and find a simpler, more practical solution.
So, the next time you find yourself knee-deep in code, obsessively hunting down a bug or chasing a solution to a mysterious technical problem, ask yourself: Is this productive persistence, or am I tearing holes in the wall for an answer that doesn't really matter?
If you’re thinking about becoming a programmer, it’s worth asking yourself: Are you more like Monica or Joey? Joey, in his carefree way, is perfectly satisfied with his ignorance about the mysterious light switch. "I know what it does: NOTHING!" he declares, happy to leave the question unanswered.
In contrast, Monica's determination to solve the problem, even if it means going too far, is a trait more aligned with the mindset of a programmer. It’s easier for someone like Monica to dial back her obsession with finding the answer than it is for someone like Joey to trudge through a problem he doesn't care about. If you find yourself more curious and driven like Monica, programming might be a better fit for you.