5. Internal process consistency. Does your organization follow a standardized development and maintenance process? If the answer is yes, it will be easier for an outsourcer to understand and accommodate your process -- even if it's sloppy or suboptimal. Challenges in outsourcing arrangements arise when the outsourcer has to learn and accommodate many different processes across a single organization -- ultimately leading to a tremendous amount of room for error and misinterpretation.
6. Software development process maturity. Does your organization invest in software development process disciplines like the Software Engineering Institute's Capability Maturity Model? While not required to make a relationship work, Forrester sees better results, particularly in the early days of an engagement, if the client and vendor follow a standard and consistent model.
7. Requirements definitions and management capability. Does your organization use a standardized and formal requirements definition and review process that introduces a structure in the way that business users can request new requirements or change them? Getting the requirements phase of the software development life cycle right is a critical success factor. If you can't get this right, outsourcing can provide little value -- regardless of low unit costs.
8. Managing to SLAs. Does your organization rely on service-level agreements (SLAs) to establish a meaningful level of mutual responsibility between IT and business sponsors of internal projects? SLAs are critical to ensuring that outsourcing vendors meet their obligations and service commitments. Clients who already use SLAs will have a much easier time establishing SLA parameters and managing third-party vendors. Companies that are new to SLA performance requirements may be inclined to monitor individual developer performance or level of effort as opposed to an overall service level or outcome.
9. User acceptance testing rigor. Does your organization follow a formal sign-off process between business and IT for final delivery? Do users participate in user acceptance testing? In an outsourced relationship, this is critical. Clients need to accept the system or the change in order for the vendor (or the client) to move into production. Delays can cause cost overruns as outsourcing staff members wait for users to accept their code.