Selling the Vision, not the practices
Submitted by Antony Marcano on Fri, 17/03/2006 - 15:59.
agile
[textile]Selling Agile Development to sceptics isn't always easy. Sometimes management are trying to "sell top down":http://www.xprogramming.com/xpmag/AgileTopDown.htm , other times the troops are selling bottom-up and other times you are selling laterally to peers.
One of the things that I have learned over the years is that one of the best ways to move people towards anything is by selling a vision. Not necessarily the vision of Test Driven Development (TDD) or of Continuous Integration or even automated acceptance tests. I am talking about the vision that will inspire the group or individual you are selling to. In fact, in some cases, I wouldn't even mention 'Agility' until I can see that they have bought into the vision...
What do I mean by a vision?
For some people, they just want to do TDD, something they want to do because it's cool (whether they need it or not) or adds to their CV. So, selling the practices to this individual is easy but still needs to be backed up with the right metrics to ensure they deliver on their promises.
For others, the sceptics, you will need to sell a completely different vision.
For example, you are talking to the testers (a.k.a. QA team for some)… "So, we have this plan that will get you involved earlier in the development, where you will be able to help drive the development of the system and help us to avoid the 'usual types of bugs' you said you got frustrated with when you found them again and again. We'll give you software incrementally and regularly for you to explore but you won't spend your whole day finding bugs. All the easy testing will have been automated under your guidance and run before the system is deployed for you to use. You'll even know when any of these tests fail, just monitor the build with this little system tray utility and it will flash red when the build fails for any reason… in fact we were thinking of this big red lamp in the middle of the office. What do you think?
"When the system is on the Test Environment, you'll enjoy flushing out harder to find, more interesting 'bugs' not the usual ones that probably could be avoided just by getting you involved from the beginning… although, these will be fed back in as Acceptance Tests that will be automated for a future release collaboratively between you and the developers… so you won’t need to repeat the steps again. Your involvement will be a collaboration with the developers and the customers so we can improve the quality of the code we deliver into the System Test Environment and eventually to our end users. What do you think? Like it? Good..."
So, you are talking to developers? "You know how it is, early on, your doing interesting code for new features, towards the end of the project you feel like you are just fixing bug after bug! Boy! Those testers do find a lot towards the end. It gets laborious huh?!?!
"So, we have this idea... we don't want you getting bored out of your brain fixing bug after bug towards the end of a release cycle... who wants to be doing that. We want you to spend more of your time consistently writing new code, for new features and new behaviours in the system! Making it better and faster, being able to easily change the architecture any time if we realise we want it to work differently. OK, OK, bugs won't dissappear but we want you to have less to work on. Oh, and when something does stop working after you check in some code, we want you to be notified within minutes, not weeks or months later in lists of bugs from the System Testers (or QA or whatever you prefer). Don't believe it's possible? Well, there are a whole bunch of people doing this already and it's working... we want your working day to be more interesting and fun, so, you in?"
Ok, so these are just two simplistic and grossly generalised examples (sorry not time to go into visions for managers, analysts etc) but you get the idea... it isn't about the practices but the differences that these practices make to the working day of the people... what pains are there... what pains will go away... what interesting things will people spend more of their time on?
That is the sort of vision that inspires people, not threats of changes to working practices that they have grown accustomed to over years and years.
You get people excited about how their new working day might look in a years time and, in my experience, they will be much less likely to resist change and much more likely to want to move closer to applying Agile Methods.
One of the things that I have learned over the years is that one of the best ways to move people towards anything is by selling a vision. Not necessarily the vision of Test Driven Development (TDD) or of Continuous Integration or even automated acceptance tests. I am talking about the vision that will inspire the group or individual you are selling to. In fact, in some cases, I wouldn't even mention 'Agility' until I can see that they have bought into the vision...
What do I mean by a vision?
For some people, they just want to do TDD, something they want to do because it's cool (whether they need it or not) or adds to their CV. So, selling the practices to this individual is easy but still needs to be backed up with the right metrics to ensure they deliver on their promises.
For others, the sceptics, you will need to sell a completely different vision.
For example, you are talking to the testers (a.k.a. QA team for some)… "So, we have this plan that will get you involved earlier in the development, where you will be able to help drive the development of the system and help us to avoid the 'usual types of bugs' you said you got frustrated with when you found them again and again. We'll give you software incrementally and regularly for you to explore but you won't spend your whole day finding bugs. All the easy testing will have been automated under your guidance and run before the system is deployed for you to use. You'll even know when any of these tests fail, just monitor the build with this little system tray utility and it will flash red when the build fails for any reason… in fact we were thinking of this big red lamp in the middle of the office. What do you think?
"When the system is on the Test Environment, you'll enjoy flushing out harder to find, more interesting 'bugs' not the usual ones that probably could be avoided just by getting you involved from the beginning… although, these will be fed back in as Acceptance Tests that will be automated for a future release collaboratively between you and the developers… so you won’t need to repeat the steps again. Your involvement will be a collaboration with the developers and the customers so we can improve the quality of the code we deliver into the System Test Environment and eventually to our end users. What do you think? Like it? Good..."
So, you are talking to developers? "You know how it is, early on, your doing interesting code for new features, towards the end of the project you feel like you are just fixing bug after bug! Boy! Those testers do find a lot towards the end. It gets laborious huh?!?!
"So, we have this idea... we don't want you getting bored out of your brain fixing bug after bug towards the end of a release cycle... who wants to be doing that. We want you to spend more of your time consistently writing new code, for new features and new behaviours in the system! Making it better and faster, being able to easily change the architecture any time if we realise we want it to work differently. OK, OK, bugs won't dissappear but we want you to have less to work on. Oh, and when something does stop working after you check in some code, we want you to be notified within minutes, not weeks or months later in lists of bugs from the System Testers (or QA or whatever you prefer). Don't believe it's possible? Well, there are a whole bunch of people doing this already and it's working... we want your working day to be more interesting and fun, so, you in?"
Ok, so these are just two simplistic and grossly generalised examples (sorry not time to go into visions for managers, analysts etc) but you get the idea... it isn't about the practices but the differences that these practices make to the working day of the people... what pains are there... what pains will go away... what interesting things will people spend more of their time on?
That is the sort of vision that inspires people, not threats of changes to working practices that they have grown accustomed to over years and years.
You get people excited about how their new working day might look in a years time and, in my experience, they will be much less likely to resist change and much more likely to want to move closer to applying Agile Methods.
