Once, outsourcing software development was about “Let’s replace my guys with your guys and save some money”. But that is changing, at the local and global level.
The old strategy doesn’t acknowledge the investment that a software house, or any organisation that uses software to leverage its market position, has already made in its own intellectual property.
Now the sentiment is: “Let’s outsource the software development and move my guys into client-facing and strategic roles that add more value to the organisation.”
This leverages the experience of those who develop the software, either as a product for sale or as part of an overall solution, such as providing financial advice. It also simplifies getting their buy-in, since they don’t feel threatened and their jobs get richer and more interesting. By preserving the intellectual capital – its staff – the business enhances its intellectual property.
Outsourced software development is not really too different from insourcing, except that the challenges can be magnified by physical distance. Essentially, however, it’s about the need to balance the triangle of people, technology and process.
A key ingredient for successful project execution is solid development and management processes. These reduce fear, uncertainty and doubt by codifying strategy and providing transparency to the company outsourcing the software development at every stage.
A substantial investment in accreditation of its processes against the industry standard, the Software Engineering Institute’s Capability Maturity Model (or CMMi) is an essential qualification for any provider of outsourced software development services. CMMi is the global gold standard of software engineering processes and its adoption typically yields great improvements in any outsourcer’s ability to exectute and deliver quality projects, on time and on budget.
The guidelines for successful project execution can be summarised as the 3Rs:
- Risk Management
Requirements analysis involves gathering and agreeing with the client the aim of the work and the outcomes of the project at the outset. Everyone involved in the project must have a clear understanding on what is being done and how it is being done, to ensure its success.
Risk management is about understanding and acknowledging what might go wrong before it happens. Like other types of engineering, software engineering has risks, but taking the time to assess their likelihood, impact and mitigation strategies minimises surprises.
The risk may be owned by the outsource provider in a fixed price engagement, shared between outsourcer and client in a time and materials project or shouldered entirely by the client in a seat outsource or captive team arrangement.
The degree of risk assumed by the client will directly influence the price the client pays for the service – lower risk comes at a premium.
Undoubtedly, the most important factor in a remote development scenario is effective reporting and communications between the outsource team and the client team. The single greatest difference that clients note with outsourcing over internal development is the sense that they are disconnected from the team.
It is unusual not being able to walk next door to the development team and see what it is doing. The informal, unstructured methods of checking on project progress are not as easily available.
The best outsource clients manage their teams as though they were in the same building, using the spectrum of communications tools. Email, messaging, video and VOIP telephony mean that a remote team can be almost completely integrated into the onsite team.
Formal project reporting is a must to keep everyone on the same page and ensure that expectations remain aligned across the entire team.
Mike Page is vice president of software development for Mitrais, a multi-cultural company headquartered in Bali that provides software development for Australian companies.
Photo: stallio (Flickr)