There is a widespread conviction that offshore cooperation is either difficult or even downright ineffective. I’ve heard such opinions both from people directly involved in offshore projects, and from those on the side of sales. I disagree, and I will demonstrate how we managed to turn offshore cooperation into an efficient mode of work – both for the team, and the client alike. My experiences come from working for financial institutions with teams functioning in different time zones and across five different locations globally.
Before I describe methods and approaches, as well as good and bad practices, let me define my understanding of effective offshore cooperation. Effective means that the team can deliver business value through expert knowledge despite any logistical barriers, providing the client with high quality solutions – and all on time. A necessary part of the equation is that this is achieved while keeping your team’s work-life balance under control, and maintaining the morale on a very high level.
Let’s begin with methodology. What is the appropriate approach to delivering high quality software for the financial sector? Maybe it is enough to receive documentation, create architecture, plan everything, implement features, test them and, finally, deliver? We must remember that the financial sector is a constantly changing, dynamic environment. An easy definition of requirements is rarely possible, but even if you manage to prepare it, they will change quickly. In order to deliver and maintain productivity, you need a framework designed with constant changes in mind.
The natural solution is Agile, which we like to call “the framework for changing your mind in a controlled manner”. This is our foundation for effective offshore cooperation. For a detailed look at some good practices in Agile development, check out the series by my colleague Piotr Gwiazda – 90 Sprints for Capital Markets. In this article, I will focus on the offshore part of the puzzle and its three key elements: Communication, Time and Trust.
Before we start thinking about process improvements on the side of the client, we should concentrate on our own team – its communication paths and responsibilities. Do you need to prepare your
team for your absence every time you leave for vacation? If the answer is yes, consider the following ideas:
- Every team member is responsible for communicating with the client. A team with a single person responsible for communication is inefficient and cannot deliver beyond what one person can master and plan
- Knowledge is shared across all team members. If there is no single responsibility for communication, there should be no single responsibility for knowledge
- Practice transparent communication. If you write emails, always include all team members. If you organise a meeting, invite at least one additional person from your team
- No second-line developers. Make sure that in case of your absence, someone else can take over from you
- Share responsibilities. Let the team make decisions and take responsibility for their work
If you want to practice efficient offshore cooperation, you must remember that time is of the essence. A typical situation in a new project is that you have never ending “status” or “just in case” meetings, which are usually quite pointless. Maintaining very long email conversations about “progress” is even worse. The key thing is to make the most of limited time. A set of simple principles and tools can make a world of difference in this area:
- No agenda – no meeting! Meetings are useful only when all participants know what will be discussed and what results are expected
- Short stand-up meetings. 15 minutes is usually enough for 8 to 10 team members
- Prepare yourself and others for the meeting. Ask questions in advance and let others prepare
- Use the scrum board. A perfect tool available 24 hours a day that can easily replace status meetings
- Use the issue tracker to store discussions. Replace long email chains with comments under issues. This way you obtain a structured and well-organized history of conversations, as well as automatic documentation
Cooperation means relations and trust. Without either of them, it simply won’t happen.
- Build direct relations. Try to establish contact with the people responsible for requirements, such as business users
- Engage the client in everyday tasks, such as requirement analysis or Agile ceremonies
- Understand the client. Business users do not know how to create software. but they do know how to make money on the market
- Obtain domain knowledge. Do not try to teach business users about software architecture. Use their language during conversations
- Do not make promises. It is easier to negotiate changes in the scope than to explain an unfinished task
- Allow the client to change their mind. As mentioned earlier, Agile lets you do that in a controlled manner – leverage this in everyday work
- Take care of the client’s reputation. Show that their success and image truly matter to you
- Take care of your company’s reputation – and your own. Be assertive if you see a risk
A natural question comes to mind: as a newcomer, how do you build trust from scratch? The answer is quite simple: your initial trust will come from working for a highly-acclaimed brand, such as GFT. But the rest you will need to work for yourself.
How do you do that, then? In general terms – be productive. Start from building a proper solution, which can be used by the client to run their business, and finish with a proper waste log.
- Fail fast and cheap. Ensure that the team is working on the proper issue by using early UAT testing and a short feedback loop
- Categorize and log waste. It is more important to show the client how expensive it is when the team is not doing proper work than how much time is spent on proper tasks
- Improve processes with the client. Utilize retrospectives to go through the waste log
- Invest in automation. Replace all manual tasks with proper automated processes. It will be one of the best long-term investments in your project
Effective offshore cooperation is not a fable – it really works. Make no mistake: (re)building your and your clients’ methods and mind-sets will be difficult and time-consuming. But it certainly can be done, as our experiences at GFT have shown. Good luck!
What do you think about these methods? What are your experiences with offshore work? If you have any comments or questions, feel free to drop a line below – I’ll gladly get back to you!