I am working on developing best practices for outsourcing projects.
Outsourcing provides some major challenges. The solution is to formalize the processes.
This might look cold and stiff, but it will provide a framework for more human person to person contact.
Instructions for outsourcing projects - Draft.
Instructions For Outsourcing Projects:
Quality Quality Quality
In general:
Welcome to project XXXXX.
The main reason we do outsourcing is the cost advantage of going offshore. The cost difference is usually more than 1:10 between the offshore and onshore cost. We therefore want to outsource as much of the job as possible. Most of the cost in most outsourcing projects are actually the onshore project management cost. A major aim is therefore to reduce the project management cost.
Key points that should be cleared when starting any offshoring project:
- How much USD will the client cover and reimburse for miscellaneous petty cost?
A small amount like USD 20-100 is usually a good idea to cover small incurring cost to buy needed licences, services etc.
- State what time zone the client is in. Use this time zone in the communication.
Major points:
- Think long term. Build quality into everything you do.
- Make it possible for someone else to continue upon and build upon your work.
- Use as little of your clients time as possible.
- Use standard components, standard protocols, standard interfaces.
Instructions:
- Plan your work well and show a clear plan for the procedure you intent to follow.
- Structure your work well.
- Document what you do well. In the code and in reporting.
- Preferably use Open Source code.
- Preferably use Open Source components that are live and supported.
- Research the software components you would like to use and compare them with alternatives.
Show why you have chosen to use one component over another.
- Write as little custom code and custom solutions as possible.
- If you need outside help for something. Suggest who and how this will be done.
- Provide links to the Wikipedia article whenever you introduce concepts that might be unfamiliar to your client.
- Provide examples with URLs.
- Show don’t tell how you suggest it.
You are not allowed to represent client XXX in any way. Do not contact any third party without prior agreement with you client.
- Work to use as little of your clients time as possible.
Try to answer any questions yourself.
Ask around in forums etc for answers instead of asking your client.
Suggest solutions to your client.
Have alternatives when suggesting things.
- Do not ask your client to do something you can do yourself.
Example: If you need a webhosting account to upload a sample, find it and set it up yourself, do not ask your client to "get you a webhosting account".
- At last: Before you send off an email, status report etc.
Have you gone over these communication instructions?
Did you follow all the instructions?
- If you see that the project will be delayed communicate this immediately.
- Clearly state at the end of the communication:
# Are we on target
# Who is working on this project, provide the names of the individuals.
Do not assume that someone is good enough, always clearly state who and how much time.
# How much time are they devoting to this project
# Will there be delays
# What is the next action to be taken and by who:
Preferably state a clear progress that you will make without further instructions from the client.
Examples:
"I am working full time on this now. I will research these four suggested alternatives and report back to you within four days."
"I and the two new Java coders (Andrew Giilupra and Tony Perez) will be working full time both Saturday and Sunday here in the office and will send a workable prototype back to you Monday morning your time"
"I am awaiting your answer." (Not a very good message but sometimes necessary of course.)