I moved from Follett Digital Resources to Follett Software Company. This was not an easy transition – FDR was operated like a start up. Do whatever to get the job done, not much oversight, and lots of role switching. FSC is the exact opposite.
FSC is all about pair programming and XP. This is my first *real* long term experience with XP.
I think that it’s been long enough that I can finally say I’m a believer. I sure know Kent Beck is a lot smarter than I.
Random thoughts poorly put together:
- Pairing does not produce more code. In fact, I think after a day of pairing I’m left with probably half the code I would have cowboy style.
- Pairing produces better code after a while. I think the first week of pairing we didn’t get shit done. It was more figuring out how to pair and how to work together.
- It’s tiring. After 6 hours of pairing I’m done. Infact…
- Breaks are important. Do something besides check your email and Twitter.
- Use the Pomodorao Technique for breaks. It works well.
- XP + Pairing = TDD to the max
- True TDD = 3 to 1 test to code in most cases.
- XP and Agile won’t let you complicate things more than they have to be.
- I don’t do as much code bullshit because my pair won’t let me. And I won’t let him.
- You need to find a common editor. I use Emacs, he uses Vim… we use TextMate since we both can use it.
- Coding standards are good.
- Quick stand ups instead of long meetings.
- I’m getting some human interaction every day from my pair. There were days I’d go to work at FDR and not talk to a soul since I was in my cave coding away all day.
Some gotchas/Suggestions
- If you inherit a project with no tests and tons of bugs TDD/XP isn’t going to magically make it better. I think pairing still helps since you’re spreading the knowledge, but you’re still running the risk of breaking things without tests.
- So write tests if you can. If you have a really shitty app, even writing tests is hard to do. Good luck is all I can say.
- It’s fucking slow. But in a good way.
- Pairing doesn’t work if both people are not sold on it. One enthusiastic person and one who thinks it’s crap won’t work. I suggest the No Asshole Rule.
- Use two keyboards. Actually swapping keyboards is a pain in the ass and some people have gross keyboards.
- Have a pairing friendly environment. Large monitor, big tables, comfy chairs and enough room for two people to sit.
- Don’t be a back seat coder. Yes, your pair spelled that class name incorrectly, but don’t be a dick and immediately point it out. If your pair moves on with out noticing it, point it out, but don’t be a prick. It’s not a contest.
- Ask for ideas. That is what the pair is there for.
I didn’t really talk about XP much, but I’m digging it. Maybe another post.
