Guidelines for successful project execution - the 3Rs:
- Requirements
- Risk Management
- Reporting
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.