One key thing to remember about most changes is this: someone liked the old way, and got value out of the old way. So when you want to get rid of the old way and put in the shiny new way, well, that value to that person goes away. Ouch!
How do we sell a change to someone who is losing value?
Simple. Make the change. Preserve the value.
I call this the "we're still gonna" method of change.
The idea is that we define the value in the old way and preserve it explicitly. We say, "we're still gonna have value X. We're gonna get at it by technique Y."
For example, we switched from CruiseControl to Jenkins for a build system:
- Threatened Value: chat notifications of failed builds. Solution: Jenkins knows how to chat. We'll set it up.
- Threatened Value: builds three branches (including two older ones we've shipped and still have to support). Solution: Leave cruisecontrol up for older branches.
- Threatened Value: error logs available on main build page for easy access. Solution: link to error in build log on main page.
The idea is to ensure that we preserve the value even if the method of getting that value changes a bit. This helps make the change more palatable, and it also helps us make sure we're not giving up more than we want to just so that we can have something new and shiny.