Originally published on GeekWire, January 23, 2012
Have you ever been playing Halo and realize you have no clue where the next objective is? You just killed the last Gold Elite or Promethean Knight and… now what? Just as you start thinking, “Where do I go now?” the watchful eye of your partner Cortana gives you the, “The door is this way, Chief,” nav point on your HUD. Of course, it was so obvious! How could you have missed that door? On the flip side, Cortana’s not nearly as good with an assault rifle–she’d be useless on the battlefield without you, despite all her snark. Both of you bring something to the universe-saving table.
Have you ever been stuck on a code problem you know you can solve given enough time and thought? You’re a great developer. You’re a genius! You’re good enough, smart enough, and… well, you know.
You get up and walk around, think about the problem,
check your email, think about the problem,
get coffee, think about the problem,
check Facebook, think about the problem,
go home, think about the problem,
go to sleep, dream about the problem.
Eureka! You’ve got it!
You’ve also got one less day until your deadline.
Sure, you could have poked your head over your cube asked a peer, your lead, or your manager for advice. But if you can solve the problem, why waste their time and make yourself look incompetent and needy? Besides, what do those jerks know that you don’t?
As a PM, I have seen this happen over and over. It’s why I’m a big advocate of Pair Programming to eliminate this social barrier and to add a host of other benefits.
How does it work? Two Developers, one workstation.
One assumes the role of the Driver, who is physically coding and focuses on the tactical aspect of the code. The other is the Observer / Navigator, who reviews the code in real time and has a higher level strategic view of where the code needs to go. These roles switch back and forth throughout the day and facilitate conversation within the pair.
One is focused on the big picture, the other is focused on headshots. Problem(s) solved.
It may seem counter-intuitive to burn two developers on a single task, but studies have shown that the end result is higher quality code, better productivity, and more code coverage. Pair Programming provides a systematic way to achieve unmatched knowledge sharing.
As a developer, you bring something unique to the table. Share that knowledge, become stronger, and maybe, just maybe, you might save the universe.*
*you will not save the universe.