Day Two: Enter the Code!
I can't decide whether the title to this post reminds me more of old Bruce Lee movies or of classic Metallica tracks. This is going to be a shorter post as it's been a fairly long and intense day, and I need to learn to write more concisely anyway.
As the title suggests, this was my first day of actually looking at code. I paired with Jeremy, Market7's senior software engineer, today. What, you ask? I flew to San Francisco and back for a paired programming session? But no, developer friends, I am going to tell you glorious things about iChat screen sharing. While a bit jittery at times, it actually works great for paired programming, especially with the dual monitor setup that I have at home. I was able to dedicate one entire screen to Jeremy's computer as I took notes, etc. on my local computer on the other screen. Every so often, I got to take the reins (I'm pretty sure this phrase is used outside of Alberta, but come to think of it, it sounds like a very Albertan thing to say), and type code on Jeremy's machine while he gave pointers on what to do. Combined with the audio chat, it didn't feel much different than a live pair programming session to me. And that's just scratching the surface on some of the tools out there. One of these days, I'd like to try something like SubEtha while pair programming, where both people can type at the same time.
What else was great about this session? Well, I was introduced to a lot of new ideas and tools. I also got to see how Market7 handles task management with PivotalTracker, which was much different than my initial attempts to track a project with this tool. Their philosophy boils down to breaking a story down into very small pieces that can be done iteratively with a test-first approach so that you get a real feeling of momentum with checking one off and going to the next. The other thing I liked is that I saw a few places that I thought I might be able to bring in previous experience to improve the code base, and Jeremy encouraged me to do so. Though not all at once, of course!
Finally, I seem to have fallen prey already to some of the pitfalls of mobile work. One is knowing when to call it a day. It's harder to do when you're working from home. The other is feeling guilty if someone tries to contact you when you're away from your desk (which happens all the time at an office, but you're especially sensitive about when you're working at home). I'll have to find more of a balance there, but for now, I justify this with the other piece of advice I got about working from home, which was to be extra disciplined about it in the beginning. If you don't set that pattern to start out with, it can be difficult to adopt it later on. Plus, things are normally a bit more stressful and longer when you're starting out on a new code base, so I'm not going to worry for a while about burn out.
One thing that's totally awesome, though? The zero commute. I only had to walk three blocks to my last job, but being able to just roll out of bed is where it's at. As Jeremy can attest to, though, I at least wore clothes. He can't really say for sure whether I was wearing pants (I've heard of people who have actually done the no pants thing!) but you're all just going to have to trust me on that one.
So this post was only slightly shorter... I think I cut off around 300 words. Baby steps, everyone! Baby steps.