Today's consumer and business environments no longer allow for waterfall software development. You can't take years between each product release. In fact, in some cases, you can't even afford to take months. At least, not if you want to maintain a competitive advantage.
Precisely because of the need to deliver to market faster, the agile software development methodology was developed. It's also the reason that software outsourcing has become so popular. Unfortunately, offshore outsourcing makes it far more difficult to take an agile approach to software development. Let's take a look at some of the principles of agile software development and how offshore outsourcing makes it very difficult to apply said principles.
One of the most important principles of agile software development is that individuals and interactions matter most. They should always be placed above processes and tools. It's a simple but important principle.
After all, people drive the development process. They're the ones who respond to business requirements and have the creative ability to adapt when necessary. If you put tools and processes first, you'll have a far less engaged team and they'll be less likely to meet customer needs. One example is communication. When individuals come first, communication takes place as necessary. When processes come first, communication is scheduled and must follow a specific agenda.
With offshore outsourcing, invariably communication becomes scheduled and tends to include specific content because of time differences. It's virtually impossible to stick to this agile principle when your team is asleep during your workday and vice versa. So, if you were working with an internal team or a nearshore outsourcing team with no time difference, they'd communicate any issues immediately. They wouldn't have to wait for a scheduled time because they'd have immediate access to you, whether in person or via a platform like Skype.
Conversely, if you're working with a team in India, this communication becomes far more difficult. If the team is in Mumbai and you are in Chicago, for example, they are 10 hours and 30 minutes ahead of you. In other words, when it's 9AM in Chicago, your Mumbai team is probably getting ready to sit down for dinner since it's 7:30PM in Mumbai. Likewise, when it's 9AM in Mumbai, you're winding down, or might even already be in bed, considering it's 10:30 PM in Chicago. There is literally no point in the workday when you have overlap with your offshore outsourcing team. So, communication will be limited. It will be done via emails with delayed responses and, therefore, delayed action. You'll also likely have a meeting scheduled every now and then at a time that is outside office hours for one of the parties. In other words, there is absolutely nothing flexible or immediate about communication when you are working with an offshore software development outsourcing company.
This is one reason PSL recommends working with nearshore outsourcing companies. In most cases, the time differences are negligible. There's also the fact that cultural differences are far less pronounced, reducing the likelihood of miscommunication.
Once upon a time, companies would spend inordinate amounts of time creating documentation on the product for development purposes. Technical specifications and requirements, design documents, test plans, and so much more. Plus, everything had to be approved.
While documentation is still important, agile streamlines the process so that the developer gets only what is really needed to deliver the work without getting lost in all the small details. After all, the minutiae aren't necessary because agile is all about communication.
However, with offshore outsourcing, that quick and effective communication isn't possible. So, if a developer comes up with some obscure scenario that wasn't detailed in the documentation, they basically have to wait a full day to get the answer. In some cases, that can delay the whole project significantly.
The one way you can try to reduce the risk of this situation arising is by doing exactly what agile says you shouldn't do, namely spending more time trying to create more comprehensive documentation. Even if you spend months on it, though, you won't be able to cover absolutely every possible scenario. And you're certainly not employing an agile software development model anymore.
Traditionally, in software development, changes were considered an expense and were, therefore, avoided at all costs. The idea was to develop a highly detailed plan for the software that would include all the features and everything. Any deviation from the plan was not acceptable. The shorter times to market nowadays mean that multiple iterations are released, and agile advocates for adopting necessary changes from one iteration to the next instead of sticking to the plan. In essence, agile software development advocates flexibility. Unfortunately, flexibility is very difficult to achieve when you are working with a team with whom you rarely interact due to time zone differences.
The cultural differences also tend to be significant. For example, straying from a plan and adopting change might not seem significant to you. However, other cultures tend to be far less flexible and less open to change. In fact, in some cultures, innovation and creative thinking is frowned upon, especially if it contradicts the plan because it's seen as a lack of respect for the person with authority. So, when you combine communication issues with cultural differences, you end up with a system that is anything but agile. Thus, the only way to really ensure you stay agile is through nearshore outsourcing.
Nearshore outsourcing usually has negligible time differences, which makes communicating easier. For example, there is only a time difference between Bogota, Colombia and Chicago for half of the year and even then, it's only an hour. So, you'll have a whole workday of overlap and will be able to communicate easily with your IT outsourcing team.
Furthermore, the proximity of a nearshore vendor means that cultural issues are far less pronounced. At the very least, you and your team will know what to expect from each other, and miscommunication resulting from cultural issues won't be a factor.
Start building your outsourced team with highly-qualified engineers! Let's talk.