Agile Software Development Contracting 101

If you manage software development projects for your organization, then you’ve heard of agile software development. Until recently, software development was created in silos using the “waterfall method.” A product was defined, designed, built, checked for quality assurance, and then presented to the client.

This linear timeline causes many problems throughout the process as the design promised to clients is not always possible to develop, the quality assurance team finds many bugs at the end of the process that is time-consuming to locate and fix, and the final product does not always match what the client needs. All of these problems are mitigated with the more flexible and iterative agile software development process.

What is Agile Software Development?

In agile software development, smaller, more integrated teams of project managers, designers, developers, and quality assurance team members work together throughout the process to catch potential problems early in the process and keep the project on track. The project is completed in “sprints,” shorter bursts of work on specific elements of the product, which are presented to the client on a regular basis for feedback to ensure that the project is meeting the client’s needs and expectations.

The many different forms of agile software development are defined by the makeup of the teams, the timeline of the sprints, and the overall development process. Three of the most popular agile methods are Scrum, DevOps, and Extreme Programming. They differ in their development processes and teams, but the general principle of intermixing departments, quickly developing sections of the project, and getting feedback from the client on a regular basis are constant across all agile projects.

Agile software development is becoming the norm in the tech industry, so it is important to understand the differences between the various agile processes and the more linear process you may be familiar with. Not only will the different methods affect the project management of your IT projects, but it will also greatly affect the contracting process.

How Do I Contract for Agile Software Development?

Truly agile projects cannot be covered under traditional IT contracts with a defined timeline and product deliverable because the process is ongoing and ever-changing. Instead, agile IT projects are best managed under a Time and Materials contract, where the developer is paid for the number of hours they work rather than a fixed price for a completed product.

Many companies are concerned about developers dragging out the time spent on the project to earn more money, but there are ways to minimize this risk. One is to create fixed prices within the process, either for a minimal viable product or the completion of each sprint. Another is to set price caps on the project.

While these safeguards will protect the budget, they may also undermine a successful agile process as software development never has a completely predictable timeline. All agile projects rely on trust between the developer and the customer, so the best safeguard is to work with a well-respected company with whom you can build an equal working relationship.

In addition to pricing safeguards, there are other contract negotiations that can help your organization feel more comfortable with an agile development process.

Milestones

Every project starts with a project vision. The developer should then use this vision to create a list of items that need to be developed to build the product. Using this list, or “product backlog,” you can then define milestones in your contract by prioritizing items to be developed for the length of the contract. The developer should provide cost and time estimates for each item on the list, and both parties should define the iteration process including meeting schedules and the process to determine the completion of each iteration.

Termination

One benefit of agile contracting is the ability to end the contract at the end of each iteration without needing to pay termination charges. A termination clause is included in all standard agile software contracts since the code is paid for in stages on an hourly basis. This allows the client to pull the plug on the project if it is not proceeding as needed.

It is important to have a complete understanding of the stages in which the product is being built when deciding whether to terminate a contract. For an organization unused to the agile development process, it can be a challenging switch to make. Don’t let confusion with the process lead you to terminate a contract that is proceeding as planned.

Agile projects are often safer for clients as problems and misunderstandings about software needs are caught throughout the process rather than in the finished product. But it is also important to understand the needs of your organization and the vision for the product. If neither are being met, it’s best to cut your losses and regroup rather than continue with a project that will not result in the desired product.

Resources

Working on agile projects can be a risk for both the client and the developer. Because of the uncertainty behind the length of the project, payment, and the potential for termination at any stage, some developers might seek to move their best developers or project managers from a risky project to more stable ones.

To protect yourself from losing your key team (and their project knowledge), you can seek to add specific personnel to your contract with the understanding that they cannot be removed from your project without approval. Alternatively, you could simply add a clause that ensures the developer provides all the resources necessary to complete each stage of the project promptly. This way any short staffing that leads to extended sprints does not negatively affect your bottom line.

Warranties

Warranties are difficult to provide in an iterative process like agile development since the contract may be terminated before the final product is complete, but there are options to create a warranty on parts of the product. For instance, each separate section of code could be warrantied to meet all the specifications for that iteration. And barring any unforeseen problems, your agile software will likely result in a completed project, so the contract should also include a warranty on the final product to ensure all the pieces of code that have been developed will work together in the envisioned product.

 

This list of potential contract clauses is only a fraction of the changes you might make to your contracting process to meet the needs of an agile project. No matter what type of IT project you are undertaking, it is important to consult lawyers who specialize in IT projects as the contracts require knowledge of technology and technological processes to protect the client and the developer fully.

The emergence of agile software development has led to streamlined processes that are better for the developers and the clients. Though contracting for such a fluid process can be difficult, the superior products that can be developed through the more collaborative process of agile development are worth the extra work to get there.