Teddy Bear Programming

[Note: This is going to diverge into the world of programmers. But stick with it. I’m not going to get super technical and I think there’s something there for the civilians.]

A long long time ago in a galaxy far far away I was a Wall Street programmer for a firm that spent a LOT of money and energy on training its developers. Every year they’d get a consultant in for a week to sit and meet with developers in large groups then do one on one sessions with them to train them up in Extreme Programming, a subclass of the iterative development methodologies known by their umbrella term of “Agile Development.”

XP as it’s colloquially known, is comprised of a bunch of small practices that lead the development and project stakeholders through an iterative process of “something close to organically” building software with minimal surprises.

For a “normal” developer these practices represent such a massive culture shift that it’s a truly Herculean, if not Sisyphean, task to actually get these things to stick. In my brief experience it’s effectively impossible. But SOME programmers pick up SOME of the practices, take them back to their desks and hang on to them when the afterglow of hanging out with Really Smart People fades.

ONE of these practices is “Pair Programming.”

Pair Programming is exactly what it sounds like: When working, work with a partner at the same computer. DO this for a few hours at a time, then rotate partners. Now this flies in the face of the core reason most programmers are programmers. It’s awful.

It was my first year at this firm (of…I think 4) and Mike Hill was the one who came in for a week. We were sitting in a conference room, about 15 of us and he was going on about Pair Programming and how they developed and dialed it in.

I’m not going to try and quote him because it’s about 14 years ago and there’s a zero percent chance I’m going to get even close. BUT what he said was that they experimented with time spans for optimum “session lengths” that what they found was that, down to about an hour and a half or so, the SHORTER the duration of the sessions the more productive people were.

What they finally realized and, like quite a lot of what Mike Hill had to say, just hit my head like a tuning fork was that it wasn’t so much the work itself that caused the lion’s share of the benefit (though the accountability of sharing the experience by working very closely with someone else was critical) came from the context switching itself.

Imagine you’re working on SOMEthing creative, doesn’t matter what at all, in this style.

You get in to work, slate out your tasks for the day and you’re joined by someone else. Maybe you’re playing host, maybe they are. Six of one. You have to describe to that person exactly what’s going on, what has been going on, and what you’re planning on accomplishing.

The very act of having that discussion forces you to share that knowledge with someone else, WHICH in turn requires you go through the act of clarifying it for yourself as well.

So you clearly define the problems you’re working on and the steps you intend to take to solve them in discussion with someone who’s going to have their own take on the situation.

Now, an hour and a half goes by and the bell rings (or whatever) and you rotate. Whatever you’ve accomplished and your new position in the problem you now have to discuss with someone else.

Over (very little) time this keeps you from getting too far afield and keeps everybody more or less on the same evolving page as you work.

Now by the end of the day having bopped around the office all day like this you know exactly what everybody is working on and how they’re doing it.

It’s amazing, prevents the siloing of work and keeps fresh ideas flowing back and forth between all the little sub-projects.

I’d love to apply this to my personal creative pursuits and, in some small regard that’s what I’m doing here, constraining myself to accountability by forcing myself to describe what my brain is up to.

But to really do that properly you have to let go of ownership of the projects entirely and just share them across a universe of people with whom you are participating in the endeavor.

That’s…not gonna work for me. I’m not bringing people in or letting go of ownership of my creative pursuits. That might be a strategic failure, as I’m sure I could get a tremendous amount of work done in a tiny fraction of the time if I did. But no, not happening. Yeah I may condescend to sub-contract out work. But there’s no room in my life for that kind of partnering.

Although…now that I think that through another step or two, I COULD see the benefits of working with someone else on our individual projects, maintaining ownership, and throwing my effort in on a small collective of people to get them all done. A kind of Master Mind Programming group. Huh. That might bear thinking on some.

Instead what I do is talk to myself as if I’m having a conversation with someone else. I have white boards and black boards in my kitchen and office (and I’m building more because I just don’t have enough) and I walk around pretending I’m describing what I’m working on to an audience that’s…just not there.

I’m convinced my neighbors think I have someone shackled to a wall that they can’t see.

It’s a tremendously useful practice. I try to remind myself whenever I get stuck on a problem, to push the chair back and just start talking about what it is I’m trying to do, what I’m running up against and why it’s a problem and…inevitably my brain fills in the other half of the conversation with something I hadn’t thought of.

It’s pretty freaky.

But it works. The trick is figuring out how to make it work better.