6 Tips to Make Software Outsourcing Work With Agile Development
It's increasingly popular for software companies to outsource work, however, it's always important for agile methodology to be utilized. Ultimately, software businesses want to make the best use of all the benefits of outsourcing, which include cost reductions and access to a much larger pool of talent, but still retain all the flexibility offered by agile methods.
It is true that agile methodology requires far greater levels of collaboration, which is the reason the myth has developed that nearshore outsourcing for agile developments is much more difficult than with waterfall developments. But, this is not really the case nearshore outsourced projects can be just as successful for agile methodology, however, they will require a different approach from clients and nearshore teams.
It could be the case that both parties will need to make some changes to traditional patterns of work.
If you're looking to combine outsourcing with agile methodology, the following tips may assist:
1. Opt for an agile partner
It's critical for outsourcing clients to opt for an agile software development company that is not just prepared to follow all specifications to the letter. Outsource software companies need to think outside of the box and offer clients the suggestions needed to cut time and effort and increase the intrinsic value of products.
When you're looking around at vendors, you need to select a software development company with all essential technical capability as well as familiarity and expertise in agile methodology. It's also important that providers have experience within the business sector in which software is to be developed.
When conducting vendor evaluations, take the following criteria into account:
- Business culture is important. Does your vendor have the agile-minded and flexible mindset to offer the continuous improvement that's needed. Any potential software partners should learn everything needed about their client's business and objectives.
- Appropriate experience which can be referenced by other clients.
2. Look at teams and not individuals
Many outsourcing clients can easily source exceptional individual programmers, but agile development needs high levels of team collaboration. Each team member will be integral to a successful project and should be at ease when it comes to collaborating with others, whether they are in nearshore locations or located in their own country. It's vital to research the team work history of programmers rather than their individual success rates. One way to find the best team to suit your needs is to use behavioral interviewing techniques in much the same way as used for hiring people for your own business.
3. Communications
Although software outsourcing and agile development may not be considered complementary, adaptations to the development process and communications channels between the vendor and client will make it easier to work together. It's important to adopt honest and sincere communications between the nearshore team and the vendor, to minimize any chance of misunderstandings. Where possible over communication is key to highest levels of success and clear contact points and communications channels need to be specified. It's also essential that the project lead is fluent or native in the language of the client and that a dedicated client representative is appointed to handle all communications to the nearshore team. Some useful communication tools include TFS and JIRA, while use of a shared wiki for all project content is also recommended.
4. Automation
Every step in the project process should be automated to ensure working software is delivered at the appropriate times. When test automation is developed it needs to be understood by client stakeholders and should be easy to maintain and execute. Building an automated acceptance framework allows a more rapid turnaround of software releases. All team members, including the nearshore team, should be able to access the automated test infrastructure, to ensure maximum ease for testing pieces of code.
It's normal practice in agile development to conduct continuous integration for checking code in smaller increments and testing it against the larger coding base. All these tools should be provided in collaboration to ensure the quickest results and feedback.
5. Frequent visits
Physical meets are one of the best ways to build trust and levels of cooperation. It's important to factor a budget for face-to-face meetings between clients and nearshore software developers. Ideally, these visits should take place every 3 to 4 months, so that any problems can be resolved speedily and relationship building is maximized.
6. Start small to mitigate risk levels
It's likely that most software companies will state they are agile, so awarding a smaller sprint/iteration project at the outset is a good tip to bear in mind. This way you achieve a better understanding of the software provider and can ensure delivery times and success criteria meet all your specifications.
About the Author: Christopher Neil Santana, Development Director at FusionHit Costa Rica, you can find him on Linkedin
Software production Management, Ph.D.
5 年Very good observations and very practical hints.? I have similar experience.?