Sometimes we just want to invent stuff for ourselves. We often pay lip service to the idea of learning from the mistakes of others and profiting from lessons learned and work in the can; we might even believe it. But still we do our own thing, make our own mistakes and come to many of the same conclusions of those that have come before.
Over the last few weeks it has really come home to me how much I tend to think I am at least as smart as all those other guys, and that I can surely figure things out for myself. I still think it's true, but why would anybody want to live without delusions - especially delusions of grandeur?
Earlier in the year I wrote some articles on agile development and how great I think it is to be agile, with some examples of how things might be done. You can find them on my old blog if you care to.
The thing is though, I almost completely ignored extreme programming(XP) and Scrum.
XP because when Kent Beck's book first came out, the whole process just seemed kind of flaky and inappropriate for the kind of large organizations I was working in. I could see myself talking to an auditor and handing over stacks of 3x5 cards when asked for system requirements - as if. I was also somewhat turned off by the idea of pair programming - I do not want to sit shoulder to shoulder with anybody all day, not having to is one of the perks of IT work.
Scum because the name is asthetically unattractive, and at first glance it looks like a ripoff of XP without the good engineering practices. What's the point of that?
I was stupid. I should have been paying better attention because over the years while I've been thinking about process improvement, reducing the signal to noise ratio of system docs, and removing friction from people's lives; these guys have too. And they've been doing it in all sorts of settings as consultants and coaches. XP has matured, lessons have been learned, and practices have been improved. They've even done some studies showing gains from pair programming and TDD. It also turns out that Scrum is more than just a subset of XP - though the name still leaves a lot on the table of asthetics if you ask me.
A few weeks back I was invited to join a team of folks at work to explore moving to an iterative development process. We had bought a smaller company that had recently adopted Scrum and did not/does not want to go back. That gave me an opportunity to really look at Scrum which quickly led me to revisit XP as well.
I have been in a total immersion self study course - reading the websites, comparing the variations, joining the mailing lists to ask questions, and watching a bunch of video presentations on infoQ from many of the guys that started XP and Scrum. It turns out that I agree with almost everything with the possible exception of the sales pitch that includes things like 'add joy to the workplace.'
Not that I'm against creating a great place to work; but even I - raised mostly in the west by hippies - can see that the guys writing the checks are not all that concerned, even if they should be. I would rather see a sales pitch that talks about ROI and behaviors that lead to greater ROI in the long term. We all know that happy porogrammers will be productive so let's just talk about the corporate behaviors that lead to happy programmers in terms of the benefit to the bottom line, and leave the happiness argument out of it.
If, like me, you've been kinda ignoring XP and Scrum as something nice for small teams of folks that won't eat a good bar-b-que sandwich with a side of slaw; reconsider. Get out there and watch the videos, read the websites, subscribe to the mailing lists, and ask a lot of questions. I don't think we can tweak the old waterfall (dinosaur) method enough to survive the onslaught of the furry little XP critters.
Thanks for reading - Mike