coding is best when you’re bad at it with someone else
Like many people, I’ve found this period of isolation (or social distancing, or quarantine, or lockdown, or shelter in place, or whatever you want to call it) difficult on my mental health. I’ve struggled with depression on and off for as long as I can remember, and I was in the middle of a pretty rough stretch when this whole thing started. But I’ve actually found that dealing with depression in the middle of a global pandemic hasn’t gone as poorly as I feared it would.
One of the greatest gifts drum corps gave me was discipline. I’ve been forcing myself to have a regular bedtime, my job makes sure I get up regularly in the morning, and I’ve tried to stick to a consistent eating schedule. Likewise, my partner and I have been diligent about taking regular walks and taking time before bed to talk, have some tea, and more generally make sure we’re looking after each other. I’ve managed to pace myself in working on projects over nights and weekends, and to expect less productivity in the stress of a global pandemic.
These are all coping strategies that have helped my mental health a lot in the past, so I felt prepared to deal with the crisis once the stay at home orders came down from Governor Whitmer. I made a plan and staying disciplined has been difficult, but manageable.
But there’s one mental health problem I wasn’t prepared for: impostor syndrome.
Impostor syndrome is my biggest mental health challenge. My symptoms include pretty regular anxiety, having invasive internal voices fixated on my mistakes, regular feelings of inadequacy and incompetence, and a general nihilistic thought that all my efforts at public service will never amount to anything - not because public service is difficult and often complicated, but because I’m just not that good at what I do. I know of no better way of describing what it feels like than Liana Finck’s “rats of self-doubt”:
At times, these symptoms can be very acute. I remember two meetings in particular where I made a visible mistake and I had to fix my code and rerun my analyses, in real time, right in front of my colleagues. During these meetings, I got so stressed and anxious that I started getting tunnel vision and struggled to hear my boss speaking over my tinnitus.
My impostor syndrome had been getting better over the last couple years, to the point that it was more or less in recession by the early fall of 2019. What’s interesting is that, despite my gratitude, I couldn’t figure out what was driving this improvement. The people around me were incredibly supportive, but that was true during the worst days too. I’m a better fit in the new position I started in 2018 than my previous one, but the nature of the work itself was pretty similar to what I’d been doing since 2016. I didn’t think either the people or the position could fully explain the improvement.
It took the last 6 weeks of working from home for me to figure it out: paired programming.
Paired programming is when two programmers work on a problem at the same time, but with only one keyboard and one monitor. Typically, one person is the “driver” and does the typing, but all the code that’s written is a representation of both programmers’ thoughts and expertise. Mob programming is the same thing, but with more than two people - in my team we often mob program with 5 people and a projector. A lot of companies use this to help bring new employees up to speed by pairing them with more experienced ones, or to cross-train senior employees. A lot of experienced employees, unsurprisingly, hate it.
When my team decided to dive head first into paired and mob programming, I was petrified. My “rats of self-doubt” told me there was no getting out of this - my qualifications (and lack thereof) would be completely transparent. My team would see my wasting an hour trying to track down a typo, my shoddy first implementation of a new idea that never gets better, my failure to grasp computer science principles I should have mastered in undergrad. My deficiencies would be so obvious my coworkers would be tripping on reasons to fire me. At the time we started, I seriously and unironically thought the most likely outcome of our mob programming adventure was me getting fired before my probationary period was up.
But what’s surprising about paired and mob programming is that it’s actually a lot tougher for my “rats of self-doubt” to get a foothold in my thoughts. Paired programming is both social and deeply technical, after all, which makes it wonderfully engaging. This, in turn, makes it just about impossible to get into your own head. Any thought spiral is quickly derailed by a surprising question, a witty joke, or the cognitive demands of having to navigate a social and technical situation at the same time.
But even more than that, paired programming provided me with objective, irrefutable evidence that I was not alone. I saw my coworkers make dozens of typing mistakes in just a half hour of driving. I found myself commonly helping others with technical concepts that I thought they’d have no problem understanding. I came to realize that the shoddy first implementation of a new idea that never gets fixed isn’t particular to me; it’s a deeply ingrained programming practice that is a reflection of what it means to write abstract computer code. In seeing the simple mistakes and confusion of others, I came to see myself more clearly. I am not an impostor, but someone who muddles through writing code and would benefit from an extra set of eyes, a whiteboard, and some extra synapses from time to time.
I didn’t realize this at the time, but my team also became my go-to debugging tool. Even when I was working on something alone, I would generally walk to the desk of one of my teammates and talk about issues that came up before my “rats of self-doubt” could cause my thoughts to spiral out of control. While we still hold very productive mob programming sessions over virtual meetings, there’s no substitute for being able to walk down the hall and talk to your teammates about what’s bothering you.
Now when I run into issues at work (physically at home), I have nowhere to go and no teammates to simply talk to. Even reaching out for help requires sending a Skype message or drafting an email that reads like a JIRA issue. There used to be no time for my invasive thoughts to grab ahold of me before, but now there is plenty. What used to be casually asking for help and sharing information has become describing my incompetence in writing, in the federal record. My incompetence is FOIA-able. And, perhaps with a twist of dark irony, I’ve found myself feeling that all the ways I would ask for help when we were in the office were actually to the annoyance and chagrin of those around me, silently lamenting that they didn’t let me go when they had the chance.
So more than almost anything else during the coronavirus crisis, I find myself longing for the in-person mob programming meetings, impromptu cubicle chats, and sloppy whiteboard drawings that together became the prescription which finally drove my impostor syndrome into remission. In my experience, nothing fosters that kind of culture as well as paired and mob programming.