Tuesday, October 2, 2012

welcome back, everything's broken

[I wrote this after one of our trips over the summer and never got around to publishing it.]

I got back to work on Friday to a flurry of accumulated issues, quickly dwarfed on Saturday by an across-the-board inability for our customers to upload our videos. Note that this is really the only thing our customers do, and while overall it's far more important that users be able to watch our customers' videos, an inability to upload brings to a halt the work of every individual and company that actually pays us.

I spent 2 hours in a sunny car on I-80 working on my laptop over a cell modem, and another half hour in a Starbucks when my battery ran down, mostly explaining to Tech Support that "Customer cannot upload videos" is not enough information to work with when we have more than a dozen different ways to upload a video. (It turns out they all go through one component, and that's the thing that failed.)

Yesterday I had a 1-1 talk with my boss, which I always enjoy, and I remarked on how my team and its primary software (the video encoding system) are so much better than when I started. He said, "Yes, it's so much better that no one asks about it any more." It turns out that during the uploading outage, several customers commented that video encoding continued to work perfectly. Neither of us really knows what it means for video encoding to continue functioning when you're unable to submit videos for encoding, but I never turn down a compliment.

I took over my team at a time of incredible chaos: the previous team lead is a very smart guy, but not good at either management or software engineering, so the software was a wreck and the team wasn't working coherently, and their constant flailing to keep the awful system running had them aiming for burnout. The company had planned to hire a new team lead, a video encoding expert like my predecessor. They offered me the job because in my anger at the state of the system and especially its human costs, I made a plausible plan to fix it and declared in no uncertain terms that this is what we were doing, and anyone who disagreed had to convince me otherwise (no small challenge when I've spent months thinking through the plan). It turns out this is exactly what you need from someone running a completely autonomous team with a ton of problems.

I complain a lot about my reduced technical role. I do some prototyping and experimenting and smoothing the path for the team, but my overarching role is to make my team work effectively. Not me; my team. As one lead discovered, "Coding is priority number five." It's a common complaint of leadership roles that we no longer do tangible things. It's true, it's a lot of email and talking to people, making design diagrams and plans and sometimes slide decks. We lack the sheer power, the playful omnipotence of typing into a computer, pressing a button, and watching the computer do exactly what we tell it to. (Whether what we actually told it to do is what we intended to tell it to do is, of course, why software has bugs.)

Obviously dealing with software is the core work of the team, as our patron saint Rands reminds us:
Those 15 people don't work for you; you work for them. Think of it like this: if those 15 people left, just left the building tomorrow, how much work would actually get done?
 All that effort has to be directed, though. Someone has to steer the ship, resolve disputes, tell the rest of the company to sod off, and make all sorts of random decisions. There is so much deciding.

Things I learned this year: I'm really good at running a team.

No comments:

Post a Comment