Well, my personal 2009 Pair Programming Tour has kicked off with a bang! After my recent plea for pairing, my friend @jeremymcanally hooked me up with the guys at OG Consulting, who agreed to take me in for a day.
I drove up Thursday morning and got to @vinbarnes‘ house around 10. From there it was a whirlwind of new info for me til around 5 (with a lunch break for excellent burritos).
I think we were working on some kind of Doomsday web app with which they will soon take over the world. While I don’t get to be part of the New Ruling Order, I do get a pretty low MindlessPeon number thanks for my pre-alpha invite. So that should at least give me some additional social standing among the other Mindless Peons. So that rocks.
Seriously, there was so much to learn it was amazing. The glimmer has begun glimming in my head about how this BDD stuff works. And I’m very taken with RSpec, whereas before I had no clue what the big deal was, and I couldn’t even figure out where the spec files went.
The most important things were unexpected little things, though. I paired with Yossef in the morning, and Rick after lunch. (When I say “paired”, what I mean is really “huffed along trying to keep up as best I could while they tried to go slow on my account”.)
And I learned so much stuff.
I have made the mistake of seeing competing tools and strategies for testing or development as more or less complete solutions. And if I looked at one, and couldn’t see how it made some edge case easier, that made me think I was missing something. But as Yossef pointed out, there are things about RSpec, or BDD, that can be frustrating or limiting once in a while. That doesn’t make them bad, it just means they’re not perfect. But neither are any of the alternatives. The key is finding methods — and tools — that offer the right mix for you, and your current projects, at your current stage of development.
When prominent people in a community advocate this or that methodology, it’s easy to assume their personal practices sprang from their heads like Athena from Zeus, full-grown and already armed. While it never worked like that with me, I thought perhaps it was so for some people. But the craft of programming is an ongoing thing: Yossef mentioned more than once how he used to do this or that, but that “right now” he did it this way. It seemed clear to me that none of these guys had settled on the One True Way, but had found “the Best Way We Know Right Now”. A small thing, perhaps, but still helpful in reminding me there are no permanent “always do it this way” solutions to everything.
There was much more, though. A couple of times during the day, somebody would ask, “What’s the incantation to make X do Y?” The first time it happened, I thought, “Why not just Google it?” But for several things, just asking was faster than Google would have found it. But here’s the much more important thing: by not stopping to go Google it, nobody lost context — not the asker, not the answerer, not the hearer. I hadn’t expected that, but it’s true: it was a better way to find it out without losing context.
This whole “not losing context” thing leads me to the single most amazing part of the experience: I didn’t want to go check my email all the time. I can’t tell you how profound a difference this is for me, personally. I have the attention span of a hyperactive fruit fly. On crack. Normally it’s pretty much impossible for me to sit in front of a single project, working on one thing, for more than a few minutes at a time. But yesterday, it wasn’t even a problem. It’s not that I felt embarrassed, so I just resisted the urge. No, it’s that it was easy to keep focused, because we were doing it together. I didn’t want to miss anything, and I was enjoying it, so why would I want to do something else?
There was so much more: Yossef does an enormous amount without having very much code on-screen at any given time; Rick seems to group his stories differently than Yossef; a good team leapfrogs through the process by borrowing code almost in real-time, giving them a great multiplier on their efforts; after using emacs for almost 20 years, I learned new emacs tricks just by watching; the flaming bird of failure; the 80s-rock < => coding velocity equation; hack and ship; tool-building for speed. It just goes on an on.
While I hope this doesn’t come across as flattery, I’m willing to take the chance. Yossef, Kevin, and Rick were unfailingly gracious and patient and friendly hosts. I’m telling you, these guys are not only extremely smart, they’re really nice guys. It was great just getting a chance to hang out and get to know them.
And man, do they know their stuff. It’s a testament to how good they are at what they do that even with my vigorous and frequent application of the Dumb Question Stick, I was unable to prevent them from getting work done. I did all I could, but they still made it happen.
I’ll stop for now; the #nashdl meetup was great, too, and I met some “old” Twitter friends (hi, @levicole!) and made some new ones.
p.s. – I was kidding about the Doomsday app. I think. Though they did open Pandora’s box and just leave the lid off most of the day.