Thursday, 8 September 2011

The XP Essentials

Arguments about whether or not a given project is actually "doing XP" aren't
productive. All of the practices reinforce each other, so they all are important. But
we like to take a more practical stance here. As heretical as it might sound, there are
certain things you must be doing before other things matter at all. That means certain
XP practices are more important than others when you start. If you don't have these
essentials, the rest of the practices don't matter because you'll probably be hurting in
a way that they won't heal:
1. Planning and estimating
2. Small releases (and iterations)
3. Testing First
4. Pair Programming
5. Refactoring
6. Continuous Integration
You may not get the rest of the project moving with you, but doing these things
on even a subset of your project will get you going in a positive way and soon
people will start noticing the difference.
If you are going to add any of the other XP practices when you get started, fine.
We strongly suggest fasting from any other non-XP practices for at least a month,
and being incredibly cheerful and friendly (which won't be hard if you are really
doing nothing but XP).
Maybe you're saying, "surely, you can't mean every other practice". We still
need to attend the XYZ meetings. And, of course, Sam needs to finish the design
document he has been writing since he is already 70% complete. We also have
gotten pretty good at Microsoft Project for doing our project tracking, so there is no
reason to change direction there. And our team is already divided quite nicely into
the client group and the server group. And, Joe is already the "database king" and
has that part of the system well under control. It wouldn't make sense to have him
start writing tests or pairing with anyone. And…
Nope. We mean everything. Tell whoever you can that you are going to put
everything but the essentials necessary to meet your boss's goals on hold for a while
because of your tight schedule. (We're sure you have one… then there is a lot less
risk in experimenting with XP because you won't be under a microscope). After a
month, if missing something really hurt you, it is not like you left it 50 miles back on
the ice and you can't get it back. But, how will you know how fast you can travel if
you don't unload everything else.
If doing this will get you fired before the month is out, do just enough to not get
fired. You will probably be so productive, that people will start noticing the
productivity and start following your lead.
Remember that project we told you about earlier where Ken took over for
another developer who had a family emergency? Well, when the emergency was
over, Ken and the other developer, Joe (not his real name), overlapped a week in
order to make a smooth transition as he handed back over the reins. On day one of
his return, Joe spent most of the day with Ken to find out what he had done in the
previous five weeks. By mid-day, Joe was quite impressed. "You sure have been
busy while I've been gone." Two days later, Ken hadn't seen Joe other than in
fleeting moments. They had arranged to have dinner together that night. Shortly
into the evening, Ken started the conversation.
"Joe, where have you been the last few days?"
"You know, all those meetings."
"What meetings? You've just been back for a couple of days. What are you
doing in meetings."
"Come to think of it, I've noticed that you don't seem to be in any of those
meetings. How have you managed to avoid them."
"It's simple. Whenever Ralph (the manager, not his real name) asked me if I
could attend a meeting, I'd say, 'Sure, I can attend if you think that's the best use of
my time. You had previously asked me to get [something] done, but if you want me
to push that out, it's your call.'. Most of the time, Ralph would say, 'Ya know, I'm not
really sure if you'll be needed at that meeting. Tell you what. Could you be by the
phone during the time of the meeting? That way, in case I think you're needed, I
could just call you in.'. I'd say, 'I'll be right here, working on [something]. And I'll
be happy to drop it when you call.' He just had never thought about the impact of

those meetings. Every once in a while, he'd say, 'Yeah, I hate to take you away from
that, but I really think you need to be at this one.' So, I'd say, 'Sure thing. If you need
me there, I'll be there.' I think I've attended three formal meetings since I've been
here and I think Ralph likes the results."
"Are you kidding me. He loves you. You've made it hard for me to come back.
I've got some pretty big shoes to fill."
"Nah. You can do it. Just learn how to say, 'I'll be there, if you think it's the best
use of my time.' And make sure your getting good work done in between meetings."
Ken likes to drum a basic software development mantra into people's heads.
"Make it run, make it right, make it fast." These core practices are what it takes to
make XP "run" in your organization. Once you have these in place, you can make it
right by adding the others to get the full, synergistic XP experience. Maybe you will
even find a good reason to add something else you used to do (or some variation of
it). Once all the practices are reinforcing each other, you can refine XP within your
particular context. That's making it fast.
If you make it run first, you will be better equipped to overcome resistance that
you are likely to face when you're trying to make it right and fast.
You can probably get away with "acting weird and being into that XP stuff" for
about a month without getting too much resistance as long as you don't try force it
on everyone else or break commitments to others without permission.
At the end of a month, you should have enough results to begin defending
yourself if attacks come. But more likely, you will find others being interested in
joining you and still others spending their time defending themselves…
Picture this. After asking your manager what he wants most out of you, you are
successfully tackling it with XP and seeing good results. You have a great attitude
toward your boss and your morale is going up and its starting to get contagious.
Your boss has heard about some of the cool side-benefits of having the tests. You
are moving faster than ever (partially because XP is helping you and partially
because you are not doing a lot of other things that are less productive). One of your
resistant colleagues seeks out your boss to complain. You figure it out… he's
complaining that you're playing to win!

No comments:

Post a Comment

Your comments are welcome!