(originally written for Daitan blog)
In the past decade or so the software industry has moved from waterfall to Agile Software Development methods.
In waterfall development, marketing and engineering signed a “contract” based on a fixed scope of work (the “Product Requirements Document”) and embarked in a long project based on engineering estimates of execution complexity. That provided a false sense of predictability and risk management. The problem is that requirements change and estimates are proved wrong as soon as developers start writing code, resulting in delays, budget overruns, and mismatch between product capabilities and user needs.
The idea behind Agile is that both marketing and engineering teams develop a relationship of trust and share common goals and responsibilities. Both sides agree that plans are subject to change and work collaboratively, managing schedule, scope and cost, continuously making plan adjustments often. The result is more efficiency and better products.
Is Your Software Development Agile? Think again
Another trend in software development that has only increased in the past decade is the use of external development teams (outsourcing). It is about cost and risk management and accessing skills where they are readily available.
If you do or plan to use external teams for software development, you must transform your thinking on the relationship with them to materialize the efficiency advantages of Agile development. The interface between product developers and traditional outsourcing providers has not yet caught up with the level of transparency and collaboration required for Agile methods to work.
So, what do you need to look for when working with a software development partner?
Here are the top 3 Requirements for Agile Outsourcing:
- Cost Efficiency. Yes, there are other good reasons to outsource, but managing development costs is still an important driver. The common mistake is to focus in hourly cost per developer. You need to think cost of results and development organizations working in Agile with more capable developers should be able to deliver a lot more than just low cost per head.
- Technical Capabilities. In an Agile development team, every member must interact with others and contribute their ideas. If external developers are seen as second-class contributors, you are on the wrong path. They should be as capable as the internal team and bring their previous technical and process experience in similar projects to add value to the relationship.
- Collaboration and Communication. Since outsourcing often involves teams in different countries, factors such as language, time zone, cultural differences can be a challenge. Before starting a project make sure you can trust your partner and that the communication infrastructure is adequate and that there is a good match of culture, language and capabilities to communicate in real time. Joint development is not a transaction, it needs to be a trusted relationship between teams.