Friday, September 4, 2015

Tips for a Successful Project With Offshore

There are as many different ways to use offshore resources as there are people who engage offshore resources.  Over the years I have developed techniques that work well for me in my situation.  Here are some things that I do to ensure project success.

Use Offshore Resources for Isolated "Heavy Lifting" Tasks

The project I'm working on is MY project.  I stay knee-deep in key activities and retain the intellectual capital.  I use my offshore resources to perform isolated technical "heavy lifting" tasks of developing specific design and code deliverables based on the very detailed design I have provided them.

I do not rely on my offshore resources to provide project management, requirements gathering, systems analysis or quality assurance tasks. Those tasks are mine.  They are crucial to ensuring the overall success of the project, which is, ultimately, my responsibility.

By keeping my supplemental resources to the isolated technical tasks, I minimize the risk of the loss of intellectual capital if/when my resources move on.  I therefore provide the crucial continuity to my clients and minimize risks associated with having to replace a resource.

By performing the project management myself, I remain the key point of contact for my client and I always know the exact state of the project.

Through extensive requirements gathering and design activities, I come to understand my client's needs very thoroughly.  Unlike many of my resources, I have the same first language as my client and I have a basic familiarity with their business and the culture in which it operates.  I guide my offshore resource(s) through comprehensive quality assurance activities to ensure that the requirements are met.  I confirm that the software behaves as expected before my client ever sees it.

See the Work Early, See the Work Often

This is, of course, very important for all software projects, but it is particularly important when
relying on offshore resources to interpret a design and develop what it describes.

The sooner I start looking at the system, the earlier I can catch and correct any miscommunications and get development headed in the right direction.  A demo or picture isn't good enough.  I expect to get my hands on it to start testing as soon as possible in a project.

I set the expectation right from the start that I will expect to see the software early and often.  I establish a plan for having a test environment available ASAP.  I communicate that I realize the system won't be finished or perfect when I start looking at it to minimize resistance to letting me see it soon after it starts, rather than waiting until my provider thinks it's finished.  Thanks to agile methodologies, developers are becoming less resistant to showing their work unfinished.

Time Overlap

Working with offshore resources means that a lot of the work happens overnight.  I find it key to a successful project to have as much time overlap as possible to:
  1. Prevents unnecessary delays when my resources have questions
  2. Minimizes mistakes from my resources going too far down a wrong path before I provide feedback
The bulk of my offshore resources are from India. India has one time zone, which is approximately
12 hours off of where I am (Mountain Time). I say approximately because my time changes twice a year with Daylight Savings Time and theirs does not. Half the year we're 11.5 hours different and the other half we're 12.5 hours different.

Indian resources work a lot with North American clients and are used to adjusting their schedules to accommodate ours. Many offshore people begin their work day in late morning or afternoon and work into the night in order to overlap with the North American morning business hours.

I am an early riser by nature, and the more I work with offshore resources, the more I run with my nature rather than trying to fight against it. I start work by 6AM each day, and sometimes I start as early as 5AM or 4AM, depending on a project's need for me to collaborate with my offshore resources.

It is not necessary for me to begin my work day so early, but it certainly is helpful and gives me the maximum overlap possible with my offshore resources. The expected time overlap should be established early - find out what your resource's working hours will be and negotiate an agreed upon overlap window for work days.  You don't have to be a crazy early morning person like me, but it does help.

Stick to What you Know

I know software and web site development, and it is software and web site development projects that I undertake.

To have a successful project utilizing offshore resources, you need to have a thorough understanding of the processes and tools which will be needed for completing the project, even though you won't personally create every deliverable.

For example, I do not have any experience with "app" development. Occasionally I am asked to bid on an app development project, which I always turn down or refer to another provider. I do not have any understanding of the technologies used for app development and deployment, nor any concept of how long development takes or how complicated specific features might be to develop.  It would be foolhardy for me to take on a project that I know so little about. I would not be providing value - I would be a hindrance. My own inexperience would be the biggest risk factor in my own project.

Other kinds of projects that I shy completely away from are:
  1. Pure web design projects with no database or programming. I have a colleague in Toronto to refer.
  2. Template-based web development. Projects involving creating web sites using Drupal, Joomla, Magento and the like are outside of my skill-set. I have a colleague in Edmonton to refer.
I know what my skills and strengths are.  I supplement projects that I would do anyway, strategically, using offshore resources only to fill in the gaps of my own skills.