Friday, June 1, 2007

Some learning on successfully offshoring web development

My colleague, Gina Lijoi, recently commented in her blog on the challenges of outsourcing from a project management perspective. We have been using outsourcing for a number of years and most recently, have being offshoring work to India. While this has caused a paradigm shift for the project management team, it has also created a new set of challenges for the technical development. Our first forays into offshoring were less than smooth, but over time I've gained some learnings that make for successful offshore projects.

  1. Find a good partner – Just as with finding a local contractor, you need to know the people you work with offshore. The distance makes communication even for difficult, so you need to know that the people you are working with can understand what you need and do the job right. Miscommunication lead to incorrect work product which can wreak havoc with your timelines (if code needs to be re-written) and/or jeopardize you client deliverables. Good communication skills and a strong leadership team are essential to make sure your projects run smoothly. If possible, look for a company that will give you access to the same staff. This will allow you to get used to each other and will give your offshore team a sense of ownership with your projects.
  2. Planning and Documenting is key – I have great team in hours. We've worked closely together and I know that I could give any one of my guys a concept sketched on the back of a bar napkin and know with some certainty that they will deliver a solid product. You can't do this with an outsource partner, particularly one offshore. Your in-house staff knows your customers, they know the way you work and the kinds of projects you. Don't assume this will easily translate to your offshore partner. You need to provide full documentation. We include and a full System Architecture which includes a brief synopsis of the project, requirements document, flow charts, ERDs and all relevant UML models (class diagrams, activity diagrams, etc.). We also include a test plan. The test plan is useful because your offshore partner can use them as a vision of the finished product. The more detail you can provide up front, the better the outcome will be.
  3. Give yourself more planning, management and QA time – With proximity, your developers can ask questions as they work, you offshore team can't. Make sure you budget the time to create your documentation and extra time for QA on the back end. Also make sure that you budget time for regular status meetings. Which leads to the next point:
  4. Be prepared to shift your hours – The Indian partner that we work with is 10.5 hours off of us. This means that I often stay up to 11 or 12 at night to have conference calls, or get into the office at 7 or 8. The late night calls allow me to meet with the team before they start their workday, the morning calls allow me to get briefed on what they accomplished during the day and deal with any outstanding issues.
  5. Use communication technology to your advantage – Call to India are expensive. I try to use lower cost alternatives like Skype, email and MSN. MSN is particularly useful as I am a night owl and so is one of the team members in India that I work with. We often in the brief windows where we are both up, have running discussions on MSN that I review as part of my project tracking. For many this is the hard part, but I've found regular communications really do make for a better experience and better results.

1 comment:

Anonymous said...

Nice blog dear i have really learn a lot from this blog thanks. This

blog is very informative for me. I became very pleasre to read it.
Harrisburg Real Estate