During the sales process, it’s really easy to spend all of your time talking with clients about their software needs while ignoring questions of process. But so often it’s organizational differences that causes all of the headaches. Clients often lack the authority to make quick decisions, have competing priorities, or are blocked by IT policies. This can present real challenges and perhaps some unpleasant surprises for agile teams once development starts.
So what do we do about it? We need to negotiate the development process up front.
I use the word “negotiate” very deliberately since, just like any other negotiation, there are certain things that you would never compromise, some things you care very little about, and still others that fall somewhere in between. Before heading into a negotiation on process, you should clearly understand what each portion of the development process means to you. For instance, do you insist on weekly sprints, or is that simply a preference? Is a co-located team a must? A detailed review of your ideal development process along with reflecting on past projects will help you understand where you need to hold strong and where you can bend. Be sure you are able to effectively discuss and defend the points you consider to be non-negotiable.
Armed with this information, it’s now time to start understanding what the client’s constraints and areas of flexibility are. Common client constraints include project management tools, team composition, and the lack of authority. As you discuss the constraints with the client, you can begin discussing plans on how you might be able to work around them. For instance, if the client is not going to be able to make decisions in a timely fashion, perhaps reworking your standard Scrum process to make room for blocked stories could mitigate some of the risk. Another option may be to appoint a person whose sole purpose is to unblock stories. Whatever the process turns out to be, it’s important that both you and the client have worked to together to identify it.
As you are negotiating, keep in mind that the goal is to come up with a mutually satisfying conclusion. If you simply try to push your client into adopting your process, there’s an excellent chance that the process will be quickly abandoned. Therefore, spend some time really understanding the pressures your client experiences before beginning the negotiation. In the end, maybe the best answer is to part ways. Remember, if your client can’t agree with the most important aspects of your organization’s development process, there’s an excellent chance that the project will end in failure. Don’t be afraid to walk away.
Once you have agreed to a process, be sure to document it and share it with the entire team. At the end of every sprint, don’t forget to review the document with the team during the retrospective to determine what’s working well and what isn’t. This small bit of ceremony reinforces the process to the entire team.
The time spent agreeing to a process with a client can save you headaches and money down the road. There will be fewer misunderstandings and you will create a higher quality product. So take the extra time up front to negotiate the development process. Your development team will thank you for it.