A Heads-Up About Head-Down Coding

November 4th, 2010  |  Published in Medill Community Media Innovation Project

This was originally posted on the Local Fourth blog as part of my participation in a community media innovation project at the Medill School of Journalism.

I first became acquainted with the term hackathon in college. A computer science student group organized an all-night event in one of the computer labs and ordered in pizza and a seemingly limitless supply of caffeinated soda. I remember the event as fun, but I mostly worked on classwork. I didn’t yet have a backlog of personal hacking projects that could really benefit from hours of uninterrupted coding.

At the start of this project, Shane, Steve and I participated in a mobile hackathon sponsored by The Media Consortium. It was a fun way to familiarize ourselves with our chosen software tools, get used to coding as a team and anticipate some of the hurdles we’d encounter during the innovation project. Though I spend a lot of most days in front of the computer, there’s something pleasurable about having an entire day, or weekend, of frenetic, uninterrupted programming. This might sound like hell to a lot of people, but it’s fundamentally satisfying to building something from scratch and to be able to be fully immersed in a project, really feeling every aspect of the process and design.

Most of my coding time doesn’t feel this way. Within the innovation project, there are countless meetings, e-mail threads to read, documents to share. While there is a certain amount of coordination required between developers working on the same code base, the time overhead required to connect with other teams feels like it increases exponentially. While communicating about the project often feels like an interruption, finding uninterrupted time to program is even more difficult when I have to factor in childcare responsibilities.

On a typical Wednesday, I try to leave the workspace before 3:30 to pick the kids up from their after school program. Then we head home where I have to help with homework, cook dinner, do the dishes, go to the park if we have time and then remind them when it’s time for bed. It’s around 9 before I can even think clearly about code again. Thursdays, I leave even earlier to pick them up from school, drop Florence at home and drive Oona to the West Loop for her dance class (though this has made me really good at doing long division in my head while navigating traffic). If the traffic’s bad, I’m in the car for around two hours total. I sometimes try to squeeze in a little work while they’re doing homework, or reading after dinner, but it usually feels like a kind of attention purgatory where I’m neither able to focus on the infuriating bug that I’m trying to fix or the needs of the kids. On the days when I have to leave early, it feels like I never end my work day at a coherent stopping point, where I’ve at least discovered the cause of a bug and have a plan for a fix or where I’ve sketched out enough of the implementation of a feature where I can come back to it and everything will make sense.

I’ve lived with and helped take care of my friend’s twin daughters, now 10 years old, for a few years.  But, my responsibilities, and their impact on my time, really ramped up since we all moved to Chicago. I’m somewhere between a babysitter and a parental figure and this ambiguity mirrors the range of likely responses to talking about trying to work on a software project and share in childcare responsibilities. For a lot of my peers, who are childless, the response is “I can’t imagine what that’s like.” For older folks who are parents, it’s more like “duh, that’s how it is.” It’s a tough topic to talk about, made tougher because, from week to week, I either feel overwhelmed by all the juggling or like the responsibilities that I have are a cakewalk compared with those of a full-time single parent.

As a recent thread about parenting and start-ups on the excellent Geek Feminism Blog points out, its not a very productive conversation to generalize about how parenting or any other real-life experience affects technology projects and the people behind them. Still, the experience of someone struggling to balance the needs of a project and the needs of others is different than those who aren’t struggling with such ambivalence. I’ve read accounts of developers who are fathers feeling alienated when they leave at the end of the workday, just as their childless colleagues are ordering pizza for a late-night coding session. During this past year’s Ada Lovelace Day, a campaign to forefront women in technology, a blogger voiced criticism that some men used it as an opportunity to acknowledge how their female partners gave them time to work on technical projects rather than celebrating the direct technical contributions of women. In the context of childcare responsibilities, it’s easy to see how this underscores a trade-off between one person’s ability to participate in demanding technology projects and another’s. But I want to go beyond pointing out that there might be some disparities and prejudices around different people’s availability for technology work or projects. Instead, I try to question whether the amount of time someone spends hacking on a project, or in the office necessarily represents the only value of their labor.

I yearn for days where I can work, uninterrupted and on my own schedule, on a juicy programming problem. But I, and hacker culture in general, may also overly romanticize this kind of heads-down coding. Interruptions are frustrating, but they can also mean that our work and lives as programmers are grounded in the world and not just in code. Good software exists to meet needs, not for its own sake, and a life without significant demands outside of a software project can make it much more difficult for a developer to design software that is both elegant and useful. Furthermore, more code, or time coding, doesn’t necessarily mean better code. I’ve definitely spent hours of intense coding, only to find that I’ve hacked my way into a corner, leaving behind a series of commits more convoluted than when I started.

Now I just need to remember this when I’m stuck in traffic rushing to make that after-school pickup.