[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
A particular technology or methodology (the “TOM”) is wonderful. At least, you think it is, based on anything from a breathless magazine article to years of experience with solid, successful software development using this TOM. Or you may not think it’s wonderful, but you do think it may offer advantages and benefits to your development efforts. And, of course, what’s obvious to you should be obvious—or, at least, understandable—to everyone else.
So you blithely push ahead…until people start pushing back. And before you know it, you’re engaged in a political battle, fighting resistance to the TOM that may range from guerrilla sniping to a full frontal assault.
Why might people resist accepting a new technology or methodology? The reasons are varied and may range from the well-founded to the completely irrational to the deliberately obstructionist. Here are examples:
- They don’t understand the TOM.
- They don’t want to understand the TOM.
- They’re afraid they won’t be able to understand the TOM (and thus will have less value to the company).
- They know they won’t be able to understand the TOM, because they’ve been just skating by for the last ten years–taking advantage of the IT job shortage–and know that this will expose them for what they are.
- They have very strong feelings about the language and/or programming methodology, or tools or all three that they currently use.
- They really detest the TOM and/or the associated language and/or tools that you’re proposing they use.
- They’re worried that the reasons for adopting the TOM aren’t well thought through.
- They’re worried that the plan for adopting the TOM has significant problems or flaws.
- They want to adopt the TOM, but they want to do it their way.
- They want you to fail so that they (or someone they like better) can get your job.
- They read this book.
Compounding the situation is the fact that you may face several of the reasons simultaneously, possibly from different sources.
Delays in getting approval or support. Rumors circulating behind your back. Objections constantly brought up in meetings. Former supporters distancing themselves from you. Reduction in project priority and resources.
Significant project delays or project failure. Loss of influence. Loss of job.
If you suspect that resistance is deeper or more entrenched than you thought, you need to find out the sources of resistance and the reasons behind it. This can be hard, because the people resisting you may not be honest about what they’re doing, or why they’re doing it.
Furthermore, if the resistance is coming from above, your boss(es) may feel no obligation to explain their reasons.
You have four choices, not necessarily mutually exclusive, based on the nature, depth, and source of the resistance:
- Push ahead in spite of it.
- Mollify or enlist those who resist.
- Redirect the project to quell the objections.
- Abandon the project gracefully and (maybe) try again later.
Make a list of everyone who might have any input or influence and judge where they stand. If possible, meet with each one privately to sound out her or him—but recognize that you may not get an honest answer. Offer each person a chance to make criticisms and recommendations; let everyone feel a part of the project and the process. Build enthusiasm, pointing out specific benefits, particularly those of interest to each individual. Use each source to cross-check others. This process is known as “getting your ducks in a row,” and you’d better do that before you start. This process may be more critical for those below you than those above you; don’t underestimate the power of developers to make your life wonderful or miserable.
Having done that, assess the costs and risks in pushing this project forward compared to the possible benefits and rewards. Factor that with the probability of success and make your call. If it looks too dangerous, scale back or redirect. If it looks impossible, find somewhere else to work.
Webster, from Pitfalls of Object-Oriented Development (1995).