«« The XP Leaps Channel 9 »»
blog header image
Ruining the Fun of Traditional Software Development

James (and I'm not sure which one) had an interesting comment:

Just a thought. You commented on having to unlearn a lot to grasp the utility of XP. So it may be picked up "easier" by a freshman developer. Can you think of any problems a XP developer would have transitioning to another technique or would they just pick up the aspects of development that would normally have to be unlearned?

I'm thinking the more you get used to a system the less likely you are to want to get out of it. It depends on your personality. I think that's why Kent Beck's first book is subtitled Embrace change. The "freshmen" developers are usually more open minded to new techniques (though they might not understand the drawbacks of the old way and realise the advantages of the new one). Of course the other side of the argument is that an old-hat might be so familiar with the bad sides of traditional development he may be thirsty for change. Generalizations are bad. :)

Sure, there are many problems that someone familiar with XP might have in a more traditional environment. Personally I feel uncomfortable NOT unit testing my code (and I think Andrew agrees with me), which is status quo on 'old school' projects. Developers pass the testing buck to QA and don't learn from their own coding mistakes. Where's the feedback? I would probably I insist that I do unit test, even though my manager might see it as a waste of my precious development time. Once you get used to test-driven and unit testing and you really honestly drink the kool-aid, it's very hard to go back. You'll wonder how anyone could trust untested code.

Refactoring support in IDEs is another thing I can't live without now. How did people ever develop code when they had to hand-edit name refactorings/renamings in multiple files, keeping track of context, etc etc? It just seems like a complete waste of time: TYPING. It's pretty silly, developers should be making great software not learning how to touch type. These are things IDEs should be doing for us. It's the reason why I feel far more comfortable in Eclipse than Visual Studio .NET ... but I hear refactoring support is coming in new versions of VS.NET, so that's good.

Yes, a freshman developer that drinks the XP kool aid may never be able to go back to traditional development -- or may do so reluctantly and awkwardly. Learn XP at your own risk. I'm serious, it will make traditional development much less fun.

Two of the main shifts I personally had when I learned XP was thinking more about risk management (which managers do all the time, so they should be able to relate to it) and ironically enough: long term thinking.

XP doesn't tell you to think long term, but you actually are. Enabling refactoring: quick changes, agility at any time in the future. High quality code for the next guy that has to edit it. Unit testing, customer acceptance testing as core ideas. These are things that traditional development projects shrug off. Get the code out the door! Worry about the bugs at the end in our slack time! Once it's out, we sign off and get the heck outta there! They're your bugs now! Heehee ho ho! XP brings bugs right up front and center and fails your tests. The project literally shuts down until you are running 100% pass again. That's an amazing commitment to quality.

The biggest barrier I see to XP is the advocation of pair programming. People are really worried about collaborating with other people. What if your co-worker thinks you're a bumbling idiot and tells the manager? XP doesn't let people hide at all and hack away by themselves. If you're having a conversation with someone, chances are half the team can hear you talking and jump in at any time. Seeing this as a bad thing is strange -- I see it as a great learning opportunity and a communication tool.

We don't have to be cordoned off into cublicles and isolated from our co-workers. We should be colaborating and being creative. Showing off our coding and design skills! XP is a really great chance to be creative and no be limited by an architecture passed down from above. No code owndership gives you carte-blanche and a lot of responsibility, but also the ability to be a team player. You can't be a team player isolated in a box off by yourself.

Anyway, that's enough ranting. If you're comfortable where you are, don't read about XP -- it will ruin it for you! As for James' question about change: people don't like it. Do you really want to have to learn a new programming language and be retrained every 5 years? No you don't. Unless you do it on your own time out of interest -- that's another story altogether. There will probably be XP zealots in 10 years that don't want to move onto the next thing. They're either just disinterested or lazy. Leave 'em in your dust.

Posted at April 06, 2004 at 12:51 AM EST
Last updated April 06, 2004 at 12:51 AM EST
Comments
Google
 
Search scope: Web ryanlowe.ca