12 best practices to build a successful nearshore software development partnership
For today’s post, we asked Setapp’s Service Delivery Managers (SDMs) Michał and Arek, what are the best practices for making a software development project successful as a nearshore team? These guys know what they’re talking about, having facilitated many projects for clients from all over the world.
The tips they have come up with form a great guide for anyone looking for a digital partner to learn what should be expected from a great software development team. But these tips can also be definitely useful for anyone aspiring to become a SDM or a Project Manager. So let’s dive in and take a look at 12 best practices to build a successful nearshore software development partnership.
1. Be prepared
2. Define the toolbox
3. Set core hours
4. Make roles and responsibilities clear
5. Share the expertise
6. Make financial agreements clear
7. Create a culture of regular feedback
8. Arrange face-to-face integration
9. Be flexible
10. Be transparent
11. Put yourself in the shoes of your client
12. Work as a one team (no Us v Them)
1. Be prepared
First off, let’s start with things that need to be done before any substantial work can kick off. It is crucial for a nearshore team to be perfectly prepared and that responsibility lies with Project Owners (POs) and SMDs.
It is up to SDMs and POs to evaluate the project and make sure that the team can produce the highest quality of work from Day 1 of the partnership.
No substantial planning should be left for later on – it’s the pre-project phase when it’s easy and cheap to learn the product’s domain and confirm the high-level scope of the project. It’s impossible to completely erase uncertainty, but the more assumptions you can clarify at the beginning of the work (e.g. problem statement, types of personas, users needs) the better you can choose the tools and architecture for the proposed solution.
Any major changes later on would prove much more difficult and expensive so don’t waste your time and use the pre-project phase to the maximum!
2. Define the toolbox
Look, in this post we will constantly remind you of the importance of communication. We do it because we know that it’s the key to the success of any project. And defining the right toolbox for communication is a huge part of that process.
Of course we all have our preferred tool and methods of professional communication. The most common ones are Slack for everyday’s chats, Jira for keeping track of tasks and video calls for crucial communication. But the key is to be open to suggestions – the set of tools used for communication should make the communication smooth and pleasant for both sides of the project.
If a client for some reason absolutely hates some communication platform – fine! SDM should find another tool that works just as well and makes the communication effective. At the end of the day, all we want from the communication toolbox is to make everyone feel comfortable and confident that both sides are always on the same page and the project is going smoothly into the right direction – just as Setapp’s clients feel, according to Clutch reviews:
“Setapp managed the project excellently. Their use of Jira and Slack gave us the confidence that we could sit halfway across the world and still communicate and deliver effectively.”
Armaan Talreja, Head of Sales & Marketing
Just remember one thing – being flexible doesn’t mean that communication can become messy and unorganized. Everything should be kept as predictable as possible – using the same links for video calls, naming meetings clearly, if possible using the same time slots etc. Always keep in mind that all sides of the project are busy with other tasks and activities. The last thing anyone needs is to deal with the unpredictability on software development team’s side.
3. Set core hours of communication
As you might have learned from our previous article, nearshore teams (as opposed to offshore teams) are usually located in the same time zones as their clients, or at least the time difference between them is rather small (up to 2 hours). This allows to easily set core hours for a whole cooperation period.
Why is it so crucial though? Shouldn’t be a development team available to the client at all times? In a way, it should – best teams are always responsive and flexible. However, it is important to set the core hours to provide predictability and increase the sense of regularity for a project. It’s also a way of respecting everyone’s time.
It doesn’t have to be a lot. Let’s plan two or three slots a week for teamwork. You wouldn’t believe how much this time slot can improve. It encourages both sides to give valuable feedback, boosts team spirit and makes sure that you’re all on the same page at all times.
It’s also important to point out that different organizations have different sets of good practices for their way of working. For example, asynchronous communication might work just fine for some, while may be completely unacceptable for the others. Good software development team should keep these differences in mind while planning their work.
4. Make roles and responsibilities clear
Making sure that everyone knows who is responsible for what and what are the roles in the team is absolutely essential to keep things running smoothly. Not doing that might get you into different problems, depending on the culture of your team and your client.
In some cultures, this lack of clarity might lead to conflicts over who is in charge. And obviously, the last thing you want is team members fighting over responsibilities in the project. On the other hand, in some cultures not setting clear roles can lead to no one taking the responsibility at all and everyone choosing to procrastinate on the task. It’s just as bad as people fighting for responsibility.
Setting clear roles and responsibilities makes the work environment better for everyone – clients feel more confident when they can see this kind of clarity and a development team will be working much better with this kind of approach. Working this way gives every team member a clarity of what they can & should expect from their colleges, but also what the others can expect from them.
5. Share the expertise
Look, at Setapp we understand that our clients don’t have to be digital experts. That’s why we are here! It’s our job to make scary technical things look more appealing and understandable. That’s why we are always proud to get this kind of reviews:
“They provide great insight; they excel at deciphering technical concepts and reducing them to basic ideas”
Lora Jakobsen, Maersk Tankers
It’s important for a whole software development team to never assume that something is obvious just because in their little bubble everyone think it is. Clients might not have had the experience of working with and creating digital products before. It’s SDMs job to make them feel confident that they understand the details of the project. Clients also might’ve never worked with Scrum – we know that in the software development world it’s a new normal, but not all industries use it as widely. Making sure that a client knows the concept and understands why we are using it is a must.
But education works both ways. While development team has to educate a client on the technical side of the project and the processes that will be used, the team also has a lot to learn – mostly about the business environment on a client’s side. Development team needs to understand the key processes and business relations inside of a client’s organization. Only with that full understanding, it’s possible to start to build a project that will give a real business value to a client.
6. Make the financial agreements clear
It’s important to keep in mind that building a digital product is an investment – the investment with a set budget and other financial constraints. That’s why it’s so crucial to provide clear rules of approval for every stage of the project so that a client feels confident where his money is going.
Most of the time, the decision maker in a project is someone who has to report to and acquire acceptance from a superior at their company. The financial clarity and transparency of the payment process makes it easier for them to present the project to the superiors and explain how your cooperation works – with clear stages and finish line on the horizon, if fixed priced model has been chosen.
If a project is developed under the time and material model, there’s no fixed price and detailed specification in the contract. Under this model of financing, clients pay exactly for the time spent by the development team on the project and the real effects. But no matter what kind of contract a client chooses, it is essential that the payment process is understandable and transparent for everyone involved.
7. Create a culture of regular feedback
The importance of feedback is hard to overestimate and we’re sure you know it already. But what’s even more important is to get (and give) feedback almost instantly. If a client or a development team wait and save feedback for a couple of weeks and then open up, it is a massive problem. Changes that could’ve been done before easily, with no additional costs, are now much harder to implement. That’s why it’s absolutely crucial for all the stakeholders to speak up openly and regularly about their feelings, opinions and doubts.
And a role of SDMs and POs is to encourage these ideals of Scrum to create the culture of regular feedback. Making sure that feedback is appreciated. Encouraging everyone to speak up, even if they feel like their opinion might not be popular. Letting a team know that negative feedback is absolutely necessary and no one should take it personally.
At Setapp, our way of working forces us to provide (and get) regular feedback in a form of review and retrospection meetings. Review is all focused on the product that we are building, while retro(spection) is a meeting where we discuss our way of working. We are holding these meetings regularly, usually every 2 weeks, so that all sides of a project have a space to talk about their opinions and doubts. But we also keep the feedback flowing at all times – by talking to our clients, performing UX tests, checking the quality internally etc.
8. Arrange face-to-face integration
Now look, you might think that nearshoring means that a development team and a client never meet in person. And it might work like this. But the geographical proximity of a nearshore team gives a chance to arrange in-person meetings between both sides, which are extremely valuable.
As one of our clients says:
“In-person meetings with Setapp are excellent. (They allow you to) explain your needs and be clear about the results you want.”
Lora Jakobsen, Maersk Tankers
At Setapp, we have arranged all kinds of different meetings with our clients. Our spacious office allows us to hold workshops, business meetings, as well as team building games. These kinds of face-to-face interactions can truly boost communication, build confidence among team members and make the exchange of ideas much easier. We cannot overestimate the usefulness of these in-person meetings.
9. Be flexible
Build a process and choose methods of cooperation that fit the particular project and your client. Don’t use the one size fits all approach. Individuals and interactions over processes and tools – always! Don’t fixate on one particular framework that you’d love to apply to all your projects.
It’s important to accept and appreciate the fact that all clients and projects are different. They have different needs, they are at different levels of understanding of the process of software development, they represent different industries. It’s a development team’s job to make sure that every client feels comfortable with a partnership created. It’s all worth it when you get this kind of feedback afterwards:
“Their flexibility and project management are definitely the two most impressive aspects of the partnership”
Marcin Molski, Katana Studios
10. Be transparent
This tip is probably the most important one, but also the one that’s the hardest to implement. It’s not always easy to be transparent when it comes to failures and challenges that we’re facing. Sometimes it feels easier to cover things up.
But we firmly believe that honesty and transparency is the only way to go. It manifests itself in a lot of different ways. Honesty and transparency about everyday’s work of team members, transparency when it comes to client’s actions, which can have all kinds of impact on the project, and honesty about difficulties faced during the process.
Because let’s be clear – not a single great project was built without its own set of challenges and difficulties. But there’s no way you can sweep things under the rug. It will make things worse in the long run. That’s why facing challenges with courage and character, learning from previous mistakes and having a ‘can-do’ attitude is so important. And our belief in openness and transparency seems to resonate with our clients, who appreciate this approach:
“We were impressed by how open the team was about challenges. Because our tracking system was so comprehensive, we could always see if there were delays on certain tasks. That allowed us to check in and see what was causing those delays, and how we could support the team to overcome them.
They were always honest and upfront about whether the problem had to do with capabilities or if it was just an oversight. That line of communication was really comforting to us.”
Armaan Talreja, Head of Sales & Marketing
11. Put yourself in the shoes of your client
We know that sometimes the workload, time pressure and other factors can make us forget that there’s a real human-being on the other side of the project. Clients are also facing deadlines, they also do have managers or superiors waiting for results. Thus, it’s always a good idea to put yourself in the shoes of your clients to understand the motivations behind their moves.
A little bit of empathy can truly make the partnership work! Reflecting on clients’ worries, doubts and motivations can truly improve the quality of work. This way the development team can get to understand the pressures the other side of the project is facing and how they can make things easier for their clients and their teams.
12. Work as one team
The greatest (and regular) feedback that we get at Setapp is that our teams blend in with our clients’ internal teams! It’s not always easy but it should always be an aim for a partnership. There should never be an ‘us versus them’ scenario.
From Day 1 of a project, all parts involved should feel like they form one team, with one clear goal. As Arek, our Service Delivery Manager says “working with a client is like a relay-race – we all achieve the results we want only when we work together”. There’s no room for competition or rivalry. We either succeed or fail together.
That’s why it’s so important to create a personal connection with all team members. It’s not always easy when hundreds of kilometres divide you but it’s definitely doable!
Final thoughts
Obviously, there are tons of other things that a great SDM or PM has to focus on to make sure that a project is going to achieve the results that all sides are hoping for. We hope that our list of 12 best practices is a good starting point to think about the priorities of any development project.
As you might have noticed, there are things that connect all the practices in this post. It’s the openness, respect and transparency that a team needs to show to all clients. We believe that it’s the only way to ensure that every client is happy with the way we worked together.
If you found this post interesting or useful, want to share your own thoughts on the subject or need further information on how we at Setapp are making sure that every project achieves its goals – feel free to contact Arek and Michał on Linkedin, or contact us directly.