Following my last post about nearshore software development remaining popular, I thought that some people might be questioning whether either offshore or nearshore development remain an option when it comes to agile. And if not, does the rise and rise of agile mean that offshore software development now has a rather limited future?
Resounding yeses are my answers to both these questions!
Why? Well the long answer is that the agile development framework is all about the quality and regularity of communication and therefore information sharing. This has several effects:
- The communication forces the customer to become more involved in his development team (be it on site or offshore). This means the customer is more likely to be able to pick up straight away when things aren’t going quite right and equally if he wants to alter something in someway, he can also do that more easily and at an earlier stage in the development cycle.
- The increased sharing of information leads to greater transparency. This is clearly better for the customer. It also gives the whole team a clearer idea of what they are trying to achieve with the project and can help to engage and motivate them.
- Greater communication brings with it more regular reviews of the work done to date. This in turn drives the project in the right direction, more quickly and with minimal waste.
- Part of communication is also giving and receiving feedback. If this continual feedback loop is incorporated into the planning and development it will ensure that new and better information is always taken into account for planning, estimations and adaptations.
- Regular communication and information sharing also gives team members the chance to learn from experience: mistakes and successes will help to improve process and product by innovation.
How does this explain why agile works offshore? It doesn’t, except that the point is that none of the effects that agile has (as listed above) are location dependent.
Similarly, neither is regular, quality communication. Stand-ups can be done via video-conference or even virtually over group IM. For example, with one of our customers we use their company IM system so that we can always be in communication. With another customer the team leaders have daily Skype calls. There are so many ways to communicate in our modern business world that, for the most part, distance can be overcome, providing that customer and development partner are in similar time zones. Agile development with a large time distance is possible but it does mean that one party will have to work non-standard hours. It is also harder to hop on a plane and meet face-to-face at very short notice. In this instance agile nearshoring definitely comes out on top. Similarly if you to have a co-located team, where for each development cycle developers and project owners can sit together and communicate face-to-face, a nearshore partner is easier to work with than an offshore partner as their developers can easily go home for the weekend.
So in conclusion, I think that agile really should be the preferred option for outsourced software development, whether it be on site or abroad. The agile work we have done with our clients has proven that not only does it work successfully but it usually delivers much better, faster results than waterfall methods.