sdg BLOG

Successful Offshore Development Practices

By: Jeff Ortman

Offshore development has become a standard practice in many organizations. There has been much written about how to successfully initiate and manage offshore development. Detailed process models have been developed both by onshore and offshore companies to guide organizations implementing offshore development. Most of these process models detail a rigorous approach to software development with the production of lots of requirement, architecture and design documentation. These processes are all designed to make sure that the offshore group knows what to develop.

Agile software development processes were not thought to be able to work with offshore development because of the extremely high level of communication required in agile practices and the emphasis on physical proximity and face-to-face communication. Martin Fowler wrote one of the early articles on making agile and offshore development work together, and it can be found here. He stresses practices that can be followed to make agile and offshore development work instead of processes. This article has become a classic and many others have added to his original thoughts.

I have worked on multiple teams where most of the software is developed and maintained offshore. I have been on both successful and unsuccessful projects, but I will not address here the advantages and disadvantages of offshore development and whether or not a company should decide to invest in it. Instead it is assumed that a company has already implemented, or is thinking about implementing, offshore development.

I have provided some ideas on specific practices to follow that can help increase the likelihood of a successful offshore development project. These practices can be used in both agile and non-agile environments. It should be noted that these practices have a precondition that the offshore team has knowledgeable and talented developers. If an offshore team is filled with junior and not very talented developers, offshore development will fail, plain and simple.

1. Full-time onshore technical team lead:

The biggest mistake that companies make is assuming that someone can manage offshore development in their “free time” between their other responsibilities. This is a recipe for disaster. There must be a full-time onshore technical team lead whose sole job is to work with the offshore team. This team lead should explain the business priorities and motivations for each project or enhancement, help give technical direction, establish coding standards and practices, help solve difficult technical challenges, review code and help train and mentor the offshore team. This is a full-time job, no different than a team lead working with an onshore team.

 2. Corresponding offshore technical team lead:

The onshore team lead should work with a corresponding offshore team lead. The offshore team lead should be empowered to make technical decisions. This prevents the onshore team lead from becoming a bottleneck. Offshore developers, especially more junior developers, can go to the offshore team lead with technical questions. If the offshore team lead doesn’t know the answer, he/she should ask the onshore team lead. It also gives the onshore team lead one primary point of contact for status and all other communication.

 3. Daily meetings using videoconferencing:

The onshore and offshore team leads should have a quick status meeting every day. Other meetings should occur as necessary, and all should be done using web videoconferencing software. Using video conferencing allows an onshore team lead to see the body language of the offshore team lead. Confusion or frustration can be sensed on a videoconference but might be missed by e-mail or on a chat session.

4. Get to know all offshore developers:

The onshore team lead should talk to all offshore developers, not just the offshore team lead. This communication is more infrequent, probably about once a week instead of every day, and should also occur using videoconferencing. This practice assumes that all developers speak adequate English, which may not be the case on every offshore development team (although it should be for effective communication). Often times, talking directly to a developer offshore can reveal issues earlier rather than later. The offshore team lead may inadvertently or intentionally downplay a potential problem that can be discovered by talking to individual offshore developers.

5. Small, highly skilled teams:

A small team of very highly skilled offshore developers will be more effective than a larger team of average developers. If the offshore team becomes more than 6 or 7 in size, the offshore team should be split into multiple teams and each team should have a different onshore team lead.

6. Everyone participates in architecture and design:

The offshore team should participate in architecture and design discussions, although ultimately the architecture and design decisions should rest with the onshore team. The architecture and design should not just be thrown “over the wall” to the offshore team. In an agile environment, this will likely involve many team members. In a more traditional software development environment, just the onshore and offshore technical leaders may meet. It will help the offshore developers to understand the decisions that are made if they are part of the design process. It will also help the offshore team grow in their experience, increase retention and job satisfaction and ultimately lead to better code and a better product.

7. Challenge offshore developers:

All developers like to be challenged, and offshore developers are no different. I have had ideas for designs in my head, but have asked the offshore team to come up with their own design or ideas on how to solve a problem. Many times they have come up with a better solution. Offshore developers should also be encouraged to push back and present their own ideas for a design or how to solve a specific problem. You know you have a good offshore team when they look at your idea and are able to come up with a better one. In addition, offshore developers will tend to want to stay on the project and contribute more if they are challenged and feel like they are helping with the difficult and key technical problems faced by the organization.

Developing software with a team half a world away and in a different time zone is very challenging. There are many problems to overcome to have a successful offshore development team, and not all problems are addressed by these practices. In addition, not all of the practices outlined above will be feasible to implement in every company. If you are currently doing offshore development, then hopefully some, if not all, of the practices outlined here can help make offshore development a little easier to manage and lead to more successful projects.

Share Button

5 Responses to Successful Offshore Development Practices

  1. Great article! All of those are things I’ve used to have success with this in the past. The only item I’d argue may be missing is, budget allowing, face to face time via travel. (And, budget not allowing, attempt to get the budget). When I worked with a team in Belarus, we had an understanding that I’d fly there at least once a year, and we’d bring their team lead and one or two people to our domestic office once a year. Those were invaluable common times of being in the same room.

  2. Thanks Jeff. I totally agree that face to face time is critical and if at all possible team members should travel to each other’s offices. This really helps establish interpersonal relationships between team members. In lieu of face to face time, chatting about local sports teams, weather, culture, food/restaurants etc. between work conversations should be encouraged and can help strengthen relationships and help onshore and offshore team members get to know one another better.

  3. The biggest mistake that companies make is assuming that someone can manage offshore development in their free time between their other responsibilities.thanks for sharing worth information.

  4. Hi Jeff,
    Great post!
    I have observed all these points from this side in Bangalore.
    One point I would like to add is customer involvement in identification and screening of members.
    Wherever (at least 4 engagements) we applied this process step, project has not faced issues of assumptions and perceptions related to communication and quality of resources.

  5. Something interesting I came across the other day pertaining to offshore development.

    In this competitive, dynamic and ever evolving commercial environment enterprises constantly need to recruit offshore staff to reduce fixed costs, overheads, associated risks and their costs to stay profitable.
    However effective off-shoring has it’s shortcoming which can be removed by ensuring effective communication between client and their offshore software development teams. The following tips are likely to help you in maintaining a healthy relationship with your offshore resources:

    Open Lines of Communication

    Your off-shoring arrangement is doomed without open lines of communication between you and your offshore resources. Software development requires extensive and constant communication. Your offshore software developers must be required to submit work and report on daily basis to ensure that the product is as per client’s requirements and all timelines are being met. Studies have concluded that 25% of

    Optimum Resource Allocation

    You must make sure your offshore resources are right for the job and their individual capabilities which will enable the client to assess and estimate the quantity of resources that are required to meet your requirements while staying within deadlines.

    Extensive Planning and Documentation

    Requirement gathering must be extensive and meticulous. Your software should be carefully planned out and documented with functional and non-functional use cases while ensuring scalability issues. Clearly defined requirements, features and functionality will ensure speed to market while meeting budgets and deadlines. The project should be divided into tasks with deliverables pegged to achievable timelines

    Prototyping & Software Quality Assurance

    Your offshore software developers should be able to constantly run the prototypes and first iterations through SQA. Test cases are likely to increase your software development timelines however will ensure a bug-free and solid product. Without proper SQA your project is the next nightmare of offshoring street.

    Milestones and Deliverables

    Make sure every project’s development lifecycle is fragmented into realistic time-pegged milestones set in view of the deliverables. The milestones should be further broken down into tasks and targets to be achieved on a daily basis. Regular performance appraisal should be done to make sure every offshore resource is going to meet the deadlines while delivering a quality software product.

    Optimum Project Management

    Make sure your Project Manager and Team Lead are people with whom you can effectively communicate. Interview them rigorously to make sure they are the right people for the job. Also make sure you have clear and open lines of communication with your Project Manager. Daily conference calls should be executed to discuss daily progress.


Leave a Reply

Your email address will not be published. Required fields are marked *