by Uwe B. Meding
I have been involved in software development and information technology for many (many) years. There has never been a time when I felt we had enough resources to complete what we had set out to do. Granted, we have seen many improvements in the tools and systems we are using. Powerful integrated development environments (IDE), continuous integration and delivery, cloud computing etc. have allowed us to automate and improve much of the development processes. However, the people aspects of these processes have always been very tight and almost intractable. Outsourcing is (and has been) a very attractive alternative to finding and building a product development staff locally.
Long term projects are a particularly great target. Interestingly, outsourcing is not just of interest to big companies. Small and medium sized companies, that have limited IT capacity in-house, can profit from external service offerings: You are buying specialized IT knowledge and it saves time and money and promises to leverage intricate knowledge that may not be available to you. Sounds simple enough — but — don’t underestimate the human aspect: the chemistry has to be right; the best way is the personal contact. You cannot simply fire off a requirements specification to a supplier and wait for them to ship the perfect product back to you. Solid requirements and project management practices, coupled with effective communications and collaboration, are the keys to enjoy continued success.
Communication plays an important role when working with an outsourcing service partner: Clear milestones and goals are required to recognize problems and delays such that they can be managed appropriately. Users and service provider must understand each others expectations, otherwise misunderstandings and disappointments are liable to happen.
These are some of the things I have learned over time:
Goals: The service provider needs to understand your goals. They may already be serving customers in the same or similar niche as yours. Try and compare how competent they are. The service providers web site usually has information about reference customers and projects. Another good quality indicator is how long the service provider has been in the market.
Outsourcing agreements: The outsourcing agreement must be detailed and spell out exactly what services at what cost will be provided. Don’t forget that your needs can, and probably will change as the projects are realized. The service level agreements (SLA) need to implement a change request rule such that it is flexible enough and can be modified easily. Developing a good outsourcing agreement requires both technical and business personnel.
Duration and termination: Remember to spell out sensible termination terms: moving to another provider should be possible without much problem in the designated time frame. 6 to 12 weeks seem customary as far as I have seen, however if your projects are larger you may need more time. Also, ensure the agreement has a passage that governs the level of support expected from the service provider during the transition period.
Certifications: The prospective service provider should have appropriate qualifications and certifications showing that they are using up-to-date technologies. However, certifications alone are not a guarantee for reliability or good service. They are only an indication of technical competence.
Service offerings: The service offerings of the prospective outsourcing partner must match your needs and goals. Develop a detailed project plan and define the particular areas you need help with.
Security: Outsourcing tasks to an external service provider must include security from the start. Encryption and clearly defined access policies to the network and data is paramount.
Measurable performance: The services of a prospective service partner must be measurable. Well defined processes ensure that your performance goals are met. Partnerships often fail because of unclear expectations.
Support and location are important: If you are outsourcing important parts of your company’s business processes, you need to ensure a high level of support from the service provider. How is support managed? How can you reach a service provider? A solid service level agreement typically defines all the details.
Plan for the long term: Obviously you are not tied to a particular service provider. Nonetheless, it makes sense to plan for a long term relationship. It takes valuable time until a customer and service provider work seamlessly together. Changing service providers costs a lot of time.