Many companies today feel that they are facing a dilemma that cannot be resolved. They want to outsource much of their work, but at the same time, they want to adopt the agile method of development. Because one of the cornerstones of agile methodology involves collaboration, the myth is that outsourced projects can only succeed if the waterfall method of development is used.
In reality, outsourced projects can successfully employ agile methodology. However, it will require effort from both the client and the development team. In some cases, one or both of the parties may need to make certain changes to traditional “business as normal” policies. Those seeking to combine the advantages of outsourcing with agile methodologies might find the following tips helpful.
Some software development firms view clients as little more than a set of specs. If the client’s specs call for a particular feature or order of development, the team will execute the client’s orders exactly as stated. Often, the developers do not advise clients on a more efficient or less costly solution, and frequently, the development team does not understand the nature of the client’s business well enough to make such suggestions even if so inclined.
A true software partner, on the other hand, is interested in the client’s long-term success. Software partners take the time to learn all they can about their client’s business philosophy and goals. They view the project as a means of helping clients achieve goals while maintaining the company’s culture.
Agile projects require excellent communication between the client and the development team. Each needs to communicate honestly with the other. Sometimes, outsourcers tell clients what they think the client wants to hear and refrain from offering suggestions lest the client become offended. Both sides sometimes misunderstand the other, or they “fill in the gaps” with erroneous information.
Outsourced projects need at least one individual on the team who is fluent in the client’s native language and who can make any translations needed. In most cases, this person will be the project manager, but this is not universal. However, the individual must be reliable, responsible and detail-oriented.
Clients also need a dedicated representative. This person needs to be familiar with all aspects of the project and be able to communicate information to the development team. Ideally, the client’s representative will be available for phone calls, emails or online chats during at least some of the hours that the development team will be working. It is also important that the client empower this representative with the ability to authorize changes or approve work that has been done. If the project must be delayed while additional authorizations are obtained, the development schedule can be negatively affected.
Agile development works best when it is fully implemented. Trying to combine just one or two agile concepts with waterfall development is a recipe for failure. Both clients and development teams must full embrace agile methodology. This means that both sides need to completely understand the advantages and restrictions of agile development as well as what is — and is not — possible, the commitments that each side must make and what changes each must make to achieve the maximum benefit. Typically, it is the outsourcer who must make the greatest number of adjustments, but clients must also have a good grasp of the agile methodology to avoid conflicts.
Clients seeking to outsource a project will have no trouble finding individual programmers with exceptional skills. However, the agile method requires a team effort. Every team member plays a critical role in the success of the project, and each member must be comfortable collaborating with others. Therefore, the track record of the programmers in a team environment is more important than their individual successes.
More and more outsourcers are learning how to harness the power of agile development to deliver projects at an economical cost that are also of high quality. Clients are able to deploy projects faster and choose the features that are most critical to their business. It is not necessary to choose between outsourcing and agile technology — it is entirely possible to combine them if both partners are willing to commit to making it work.