Svitla Systems is proud to share an article written by one of our long-term clients, Newsha Makooi, a Division Chief, Technology Services in Statline. Statline is a nonprofit organization that provides world-class technology and solutions for the organ transplantation fields. But for us, Statline is a group of amazing people behind the services and systems, who manage unbelievably hard, delicate and important work, and whose mission makes us proud to be a part of this amazing company.
Svitla Systems has been providing development services for Statline since 2015, helping to develop software for two key systems DonorTrac Plus and DonoRegistry. Svitla Team was responsible for various tasks connected to improving user experience, helping the client’s US team with the implementation of new features, improving workflow of registration systems, creating new reports and fixing bugs.
So this article is a result of our combined work and contains valuable experience and recommendations to those who want to employ outsourcing companies and have questions about how it works. Interested? Then read below and find out answers to all your questions.
You have a software delivery practice and want to add additional team members offshore, or let's say you want to start a software development project/practice offshore. For the purposes of this writing let's assume offshore refers to any team that's remote to your main team. Your remote team might be in a different state, country or across oceans. I'll refer to all these scenarios as offshore in this post.
So, what should you consider and how do you go about an offshore software delivery team?
With over 20+ years of experience in software development & delivery; and having been involved with a number of failed and successful solution delivery practices, here are my suggestions/recommendations - for your consideration.
1. Select the right partner & be involved.
Make sure you pick the right consulting and staffing partner. How do you select the 'right' partner? Evaluate them for the quality of the candidates they present to you. Yes, that means you'll have to interview and select your offshore team members. Don't rely on the staffing agency to do this selection... that's your responsibility. If you delegate that responsibility to the staffing agency, you'll end up with whomever is available. Availability is not a qualification.
Make sure your partner can address not just your staffing but also your billing, support and other needs. For example, the partner we currently work with has assigned a part-time PM to our offshore team. We also have access to our account manager anytime - she's very responsive as is our PM. These are all good signs of a good partner, in addition to several others.
We evaluated five potential partners over three months before we decided on our current partner and entered into our agreement/contract. Give yourself plenty of time for this evaluation because it will make all the difference.
2. Mind the time difference.
Working with offshore teams means you'll invariably have to deal with time differences. This can be a challenge and a good thing! Challenge in the timeliness of communication - especially when not managed well. When managed well, it can be a positive thing because you'll be making more consistent progress on your projects. Your projects will be progressing for 10-16 hours per day instead of 6-8 hours (on average).
Shoot for an overlap of 4 hours between your on-site and offshore teams. This will allow time for collaboration, troubleshooting, training, code reviews, peer programming and meetings. Depending on the time difference, you might need to negotiate a modified working schedule for your offshore team; for example our Ukranian offshore team works from 1 to 9 PM to accommodate our business day in Denver. The time difference of 9 hours between the two locations is addressed by our team in Ukraine working from 12PM to 8PM. This modified schedule allows our teams to have an overlap of 4 business hours.
Make sure you negotiate this arrangement ahead of time with your partner.
3. Tools and technologies matter.
Clearly the software development discipline requires technology. When working with an offshore team, you'll rely on a number of different technologies. Don't go cheap on your tools. You'll need stable VPN connections, good source code repository options, real-time web-meeting, screen-sharing, webcams & headsets, etc. Consider your Cloud services for different scenarios.
Again, don't go cheap on these tools or you’ll pay in other ways - such as a failed attempt at an offshore development team engagement.
4. Pay Fairly.
While you stand to realize great savings with an offshore model, don't get greedy! Pay fairly and treat your offshore development team members as if they are your full-time employees. Otherwise, be ready to consistently hire to back-fill for your offshore team as they resign for better opportunities.
5. Embed your offshore team members.
It is critical for your new offshore team to be embedded with your business workgroups. Being remote is hard enough and keeping offshore team members isolated will make things more difficult for them and you. Offshore team members should work as individual contributors on different teams; paired with other developers or QA on the team at your office. From time to time, the offshore team can focus on specific tasks and projects independently; for example, an R&D sprint for a specific new feature. Remember that while they might be working independently, your methodology must be followed in the same consistent manners.
The above approach also helps reduce the 'us' and 'them' thinking that could come up. Embed your team members and you'll be working on different projects with different team members regardless of where they are. Much better!
6. Baby Steps!
Exactly as you can imagine this being... start small. Start with simple bug fixes, unit test and automated test development, provisioning dev and test environments, etc. Let the team members go through the motions of software delivery with small units of work. The value of the process at the on-boarding stage is more important than what is being delivered until you have established successful deliveries consistently.
7. Apply your methodology and practices consistently.
What's your development and delivery methodology? Don't have one? Don't start an offshore team until you have a good, well-performing methodology. You have a good methodology now? Great! Use it consistently with your offshore team. Keep to your existing tempo and maintain your delivery cadence.
This ties back to item number one - Baby Steps - because you can implement and refine your methodology using small units of work. Don't get this wrong and don't move your offshore team to any critical or client-visible projects until you have this buttoned down.
These are big items for working with and managing offshore software development teams. Obvious topics such as communication are omitted on purpose. You already know how good communication is critical to your success; you don't need to read about it here again!
October 25, 2016