I never really understood the big benefit of outsourcing as there are serious drawbacks on the other hand like
- Know-How is pulled away from the company.
- Communication channels get inefficient (e.g. several people involved while nobody is communicating in mother tongue, physical distance, different time zones, ...).
- The cheaper employees often do have less qualifications.
- Cultural differences may introduce additional obstacles during the collaboration.
Outsourcing can make sense under the following circumstances:
- There is a clear and compact technical specification of what to implement.
- The project is smaller and/or not to be tightly integrated into a lot of other projects.
- Few dynamic adjusting of the application at the customer necessary (so the far away from the customer the better suited for outsourcing).
- For a developer that is in close contact with the customer there are more qualifications needed than just being a good coder and being a good software designer: There are communication skills, project management skills, understanding for the business point of view etc. necessary.
- The biggest mistake that is made often at this point is to act faster than to think! What I mean is, that both sides should think double before ordering and implementing a change request.
Related posts: IT project costs explosion, The features, The small software vendors.