Prevent An Offshore Disaster! What to Expect of Your Offshore Team in the First Four Weeks
With the right tools and the proper personnel complex offshoring challenges like communication and monitoring can be dealt with in a methodical way.
Working with an offshore staff augmentation vendor can be a challenge. When part or all of your team is thousands of miles away, things like communication, co-ordination of daily tasks and monitoring of the resources can pose some complex challenges. With the right tools and the proper personnel this can be done in a methodical way.
The first challenge of this entire process was to identify a vendor that fits your company and project. Once the vendor has been identified the next 2 to 4 weeks can make or break the relationship and the project. Here are some of my thoughts on what to expect in the first four weeks and how to minimize potential issues.
Week One: Orientation
Identify your team including the team leads, project managers, QA resources and any other resources working on your team. Get to know them well. In a retainer model (more in a later post about this) you need to make sure you know the resources assigned to your contract. In a very large team that can be a challenge, in which case identify and get to know the key resources.
Project Kick-off meeting:
The kick-off meeting is often under-rated but it’s a very important step and has to be done. Many projects launch without a proper kick-off. It’s important to establish some ground rules in the beginning of the project. The roles and responsibilities of each of the team members and the internal reporting structure have to be made crystal clear. The expectations of the project stakeholders have to be communicated to the entire team.
Infrastructure Setup and Code Repository:
“It works on my machine” is an oft repeated phrase among development teams. Predictable results are possible only when everyone is on the same set of tools, technologies and standards. It does not matter how standard your project development tools are, there is always something that will need installation or access or both. Make sure all the development tools are installed and ready to go on each developer’s machine.
At Augment we have a number of projects on many open source technologies (Magento, Joomla, etc.). On many of these projects we are using Vagrant to setup a development environment identical to the client machine. If you are unfamiliar with Vagrant, it’s a tool for building and distributing development environments. Vagrant provides the framework and configuration format to create and manage complete portable development environments. These development environments can live on your computer or in the cloud, and are portable between Windows, Mac OS X, and Linux. Say goodbye to “works on my machine”.
Also add the offshore resources to the Code repository GIT, Team Foundation Server, SVN or other version control software you might be using. Create a new code branch for the tasks that the offshore resources will be working on.
Here are some examples:
As a client, provide all the project documentation possible to the offshore team lead or project manager. Tools such as Confluence or SharePoint could be used to streamline the project documentation and communication. Project documentation should include design documents, software requirements specifications, coding standards, database design diagrams, technical specification documents, etc.
High Level Conceptual System Diagram
It’s also time well spent for the onshore resource to take the offshore team through the documentation.
Processes and Procedures:
As part of the kick-off meeting have the on-shore CTO/PM leading the project talk about internal processes. Most software development shops have certain processes and procedures they follow. For example Augment has a client whose internal process is a modified form of Agile. All of Augment’s developers went through a week of orientation on the client’s specific process. Things like Daily Scrums, periodic check-ins to report progress on tickets, a support rotation schedule, reporting time spent on open tickets, etc. ensures all team members follow the exact same process which in turn makes it easy to manage development, monitor progress and ensure quality.
Daily Standup Meetings:
Setup a daily standup meeting to connect with the team. GoToMeeting, join.me, Skype, Google Hangouts – any of them work. I use a combination of GoToMeeting and Skype. I use GoToMeeting primarily to share screens or take control of someone else’s machine (for example if I want to use a developer’s machine to demo a program). I use Skype mainly as an internal chat. Skype is also particularly useful to make quick calls and clarify things that take too long on chat. Chat programs can also help with monitoring who is available and who is away.
Week Two: Project Work Starts
2 Week Sprint:
Once the infrastructure is all set and everyone’s roles have been defined, it’s time to play ball. I always prefer to ease my team into the project by assigning some of the simpler tasks first. This completely depends on the type of project. On maintenance projects I assign some of the simpler tickets first. This enables the offshore resource to gain confidence and gives them a chance to evaluate the existing code and adapt to standards used. On development projects I also start with some of the simpler tasks or pages. Not only does this help the offshore resource gain confidence, it also gives the onshore PM or Team Lead a measure of the skill level of the offshore resources. A two week sprint with these smaller tasks and tickets is perfect to evaluate the quality and skills of the offshore resource.
All tasks need to be given a specific timeline. Again this depends on the project type. Sometimes it’s hard to estimate how much time it will take for a specific task. Nevertheless, always assign a timeline. The timeline can be revised based on the analysis/feedback provided by the resource as he/she starts working on the task and justifies the time needed.
Peer review of all the code written is a best practice that should be adopted by all software development shops. All code/tasks completed during this week should be reviewed onshore. It’s important to set the standards early on in the process. The Code Repo branch that was setup in Week 1 helps with this process. Once a task is complete the local code base can be checked in for review. The review should be timely and consistent based on the standards that were set.
Daily Standup Meeting:
Conduct the daily standup meetings that were set up in Week 1. It’s important to monitor the progress the resources are making. Any issues the resources might be having need to be discussed and resolved during these meetings. As a rule, at Augment we ask offshore resources to never spend too much time on a major blocking issue. We’ve found that most often solutions to such issues are easily solved by someone onshore and familiar with the application. The daily standup meeting is perfect for discussing such issues.
Week Three and Four: Tasks, feedback and finalize
Feedback, Feedback and more Feedback:
As more tasks of the initial sprint are done, peer review should be able to provide more feedback on the coding style, quality of the code and adherence to standards. Remember to emphasize the quality and standards during this time.
Daily Standup Meeting:
Continue with the daily standup meetings. Irrespective of the methodology followed (Agile vs. Waterfall) it’s important to check in on a daily basis with your offshore team. This might seem a bit over the top but is a necessary step for the offshore team to succeed. Once things are flowing more smoothly you can step back on the daily standup. However, with more and more organizations moving towards the Agile methodology (more on Agile in a later post) it might be a good time for your organization to start looking into it as well.
Once the first four weeks are completed, you can do a full review. The Sprint should be completed. All the feedback from the last 3 weeks should be in place. The quality of the code and timelines should be obvious. The onshore management now has enough data to assess the performance of the offshore team. If the past 3 weeks was run as tightly as recommended in this post then most likely the offshore team is doing well.
There is tremendous potential in India in terms of software development and BPO. In a previous post I talked about large companies like Microsoft, Oracle and IBM using this potential to their advantage. With a committed partner, like Augment, and their experience building development teams, small- and medium-sized companies can also build good productive teams that can help reduce the backlog of tickets on maintenance projects, work on new projects and in general help ease the load on the onshore team. The hybrid approach of Augment makes sure all the risks associated with communication and code quality are minimized right away in the initial 4 weeks.
Write more code. Get more done.