Tips for Outsourcing Software Projects
When you first begin outsourcing:
Outsourcing non-critical projects such as maintenance (including for legacy systems) or product enhancements gives you a chance to adjust to this new development model, gives the outsourcing supplier the opportunity to learn your business requirements and technology, and most of all, it frees up knowledgeable in-house staff to focus on strategically critical projects.
"Bleeding edge" projects require a high degree of recoding and retesting. This would become costly both in time and effort due to the need for more intensive collaboration and iterative design and development cycles.
When estimating the duration of the project, take into account around-the-clock effort (which includes that of your company) when outsourcing to countries on other continents.
Bring the outsourcer's chief architect and project manager to your offices for the planning and design phase. Planning and designing requires a good understanding of your business and is better done in close collaboration.
If your design is fixed and you can explicitly sign off on requirements, then try for a fixed price. In this event, any feature-creep will be costly since changes might be costed at a higher rate. Ensure that your team understands the budget and schedule impacts of any change.
Before you begin to outsource, you must ensure that you have sound development and project management practices in place to ensure a successful project, otherwise you're in for costly challenges. In our experience, most companies do not have a defined process for their in-house development. In this case it is wise to rely on process-experienced consultants to mitigate your risk.
Keep in mind cultural differences between different countries since they can lead to misunderstandings. For example, shaking the head in some cultures means "yes", while in the West it means "no". Some cultures save face and do not admit that something is not right. You may consider working through someone who has experience dealing with these cultural differences.
Until the outsourcing supplier knows your technology and business requirements, it is more cost-effective to outsource a mid-sized project. If the project is too small the overhead commitment on your end becomes expensive and the learning opportunity for the outsourcer may be insufficient.
Documentation provides an important audit trail of a project. Before signing up an outsourcing supplier, investigate their documentation policies and processes. Future maintenance is difficult if aspects of development were not adequately documented. Request samples.