I’ve recently been telling anyone who will listen that I am excited to be on the precipice of using Sorbet to write a type-checked edition of Mocktail that has the potential to unlock productivity workflows never before possible in Ruby.
I’m not there yet.
I don’t want to say it’s been a “quagmire,” but I’m over 150 commits in, and there’s a lot left to button up before release. It’s been a real challenge. Learning Sorbet at all takes a good chunk of time, to be sure. I’ve also hit a number of thorny edge cases and elusive bugs along the way (both in the type system itself and that the type system exposed in my code). And, like usual, I’m trying to do something that’s never quite been done before, so I’m constantly oscillating between feelings of nervous excitement and fear that I’m attempting the impossible. (Though it’s been made far more possible thanks to the generous
assistance of Ufuk Kayserilioglu, Kevin Newton, and Jake Zimmerman!)
Beyond this, any specifics I might share about my current quest are so banal as to not be worth your time. (If you somehow find this interesting, please email me so I might feel less alone in this world.) That said, there is something generally interesting here that programmers don’t often talk about. And that’s the deeper question: why do I keep doing this to myself?
What makes me “special”
I am an enthusiast programmer.
I stumble on a problem like this one and I stay up late every night until I find the solution. I wake up early each morning with new ideas of things to try. I don’t take enough breaks, but when I do, they’re tactically-designed to exploit my brain’s asynchronous processor to generate solutions for whatever I’m currently stuck on. I irresponsibly defer responsibilities from other areas of my life. Eventually, I realize I’m only at the 20% mark and that a pattern is repeating where a month or more of my life is about to disappear from the calendar. Towards the end, I find myself rushing to find the maze’s exit because my desire to unlock the puzzle’s final secret starts to be overtaken by the shame of all the other balls I’m dropping. It’s excruciating as I approach that inflection point—as intense as an overbearing manager’s “do or die” deadlines ever were, except in this case the pressure I feel is entirely self-imposed.
And then, at some uneventful moment at 4 pm on a Sunday, it’s done.
Sometimes people care about what I made. Usually they don’t. Often, even I don’t.
I give myself enough time to clear my inbox, tidy the house, and shave. Then I move onto the next Sisyphean task I’ve laid before myself.
This describes how I’ve lived my life since I was 13 years old, with few exceptions. And let me tell you, it’s very difficult to juggle a healthy personal life and a sustainable work life when you’re simultaneously engulfed in an endless series of side quests to will every creative curiosity into existence.
When I was a consultant at Crowe, there was one year I billed clients for nearly 2100 hours, which averages out to more than 40 hours per week every week of the year with zero days off. And that’s not counting travel time. Or the half-dozen hours of weekly administrative work that wasn’t considered billable. Nevertheless, I found time in my nights and weekends that year to build an app with Apple’s buggy, mostly-undocumented initial iPhone SDK. The app was a native client to vBulletin web forums, allowing users to browse threads and compose replies. Despite knowing nothing about any of the underlying technologies, I obsessively polished the app to perfection. Did I make time to sleep? I don’t remember. The whole year’s a blur.
All so that Apple could reject my app because users might post swear words or dirty pictures. Oh, well. Onto the next thing.
I don’t know what word best describes my behavior above without inflecting significant value judgment. Perfectionist? Obsessive? Passionate? Whatever we call this compulsion, it’s hardly an unalloyed good and it comes with its share of downsides. Nevertheless, it’s one of a number of idiosyncrasies and character flaws I’ve decided to lean into and find productive outlets for rather than attempting to repress or rewire.
Other examples:
- I ruminate endlessly under stress, so I wrest back some control by manufacturing stress responses over things I’m building to trick my brain into ruminating on work that’s useful to me. This both overrides the unhelpful, irrational worries that surround me every day and unlocks a “second shift” where I accomplish almost as much away from the keyboard as in front of it
- I’m a terrible listener and struggle with auditory processing, especially in groups and loud environments. (One reason I talk so much is that it’s always felt safer to drive the conversation than risk mishearing and offending someone.) Parsing others’ sentences often feels like I’m filling in the blanks to make sense of them, like playing a game of Mad Libs. Over the years, I’ve redirected this into a source of creativity and humor. Most of my puns and wordplay are happy accidents as I fill in the gaps in my own listening comprehension. Some of my most creative ideas are things I swear I heard someone say when it turns out they were actually talking about something else
- I’m a really bad learner—disinterested, distractible, and disagreeable. I’ve never enjoyed learning and generally avoid it, especially learning for its own sake. At the slightest discomfort when struggling to understand something, I’ll grasp for any distraction that might offer me a momentary escape. When I do manage to get traction, I inevitably find myself disagreeing with the premise or subversively trying to prove the authors wrong. The upshot is that once I actually do learn something, I know it cold. It means I will have scoured every nook and climbed out of every pitfall. Professionally, this apparent weakness has turned out to be a superpower. Learning everything the hard way has made me a natural consultant and mentor. Because I’ve already explored all the wrong paths, I often know someone is stuck before they do, understand what threw them off course, and show them how to get back on track
The reason I landed on this topic today is not that any of the above makes me special, it’s actually that contradictions like these—whatever their origin—are so typical among programmers born before 1990 that they’re entirely mundane.
An aberrant generation of programmers
Squint and everything I just said about myself could have described a character from The Big Bang Theory or Silicon Valley. I’m at peace with the fact that on my best days, I’m an overplayed, abrasive character trope come to life. For decades, we’ve associated a slew of mostly-negative traits like these with programmers as if the linkage is inherent and inevitable. I’ve always thought that stereotype was arbitrary—anybody can learn programming and be great at it—but now I’m starting to think it’s a product of our times as well.
That is to say, I’ve come to believe the era typified by the enthu