The decision has been made – you’re going to hire a nearshore software development company. You’ve overcome your potential fears (what fears exactly, you’ll find out here) and you want to draw benefits from the cooperation with the company that is located in a nearby country, such as, needless to say, cost-effectiveness and access to a larger talent pool.
For more benefits go to our previous article on nearshoring.
The next step is to choose the very nearshoring company. Better safe than sorry, so it makes good sense to take all steps necessary to minimize the risk of choosing an inadequate subcontractor.
Examples of such measures include:
- looking for personal recommendations – online and offline
- conducting your own Google search
- checking company’s reviews online and independent rankings, e.g. on Clutch
- scanning their team (on the website and LinkedIn), case studies, portfolio, social media profiles
- last but not least, holding the meetings with the chosen nearshore development companies. It’s worth mentioning here that some companies may offer small-scale activities that allow you to get to know the company better beforehand, such as trials, consultations, or test sprints. Make use of them.
The first 4 points will allow you to shortlist a couple of candidates to arrange interviews with. Today, we will focus on the last point and what to ask your potential business partner about before signing a contract. What insightful questions you can ask to get to know your development company in terms of its quality, punctuality, reliability – and how to assess the answers. We’ve prepared a list of eight topics to discuss that will help you to choose the right nearshoring partner.
1. How long will the project take?
That’s the tricky question to ask at the beginning. If your product is kind of a bog-standard one and the development company has something similar in their portfolio – they can estimate it roughly, based on the previous projects. But when the project belongs to the domain of research, such as machine learning, it might be far more complex and erratic.
If you’re interested in how to start a machine learning project – here’s a blog post for you.
The answer to the question will show you if a nearshoring company can identify parallel tasks, estimate costs and time needed, allocate resources, predict risks, and ensure an optimal timeline. And tell you bluntly if a precise estimation isn’t feasible at this very stage.
That’s why we often offer our clients – and prefer ourselves – to work in sprints. In the first phase we identify the scope of a complete, long-term solution, but then divide it into subprojects. Each such subproject takes 1-2 sprints and delivers a small but fully functional feature. Thus, you gain more control over the tasks and can react when some external factors come into play, that might change your initial assumptions and plans – which allows us to move smoothly to the second question.
2. Can I change deliverables underway?
Building a web application, you always need to be prepared for adjustments. Sudden changes in the market concerning demand, lifestyles, unexpected moves of your competition, investment acquired, new features that become crucial, unanticipated increase in traffic, legislation changes, not to mention COVID-19 – you can’t plan it all years in advance.
Some of the more common changes that you may experience are:
- the development team upscaling (or downscaling) – that may be motivated by the points below
- shifting priorities – companies operating based on fixed-price contracts usually are not eager to make any significant changes to the project. Thus, it would be desirable if your nearshoring company declared readiness to dynamically change priorities and support you in the face of changing needs.
- changes in business requirements or acceptance criteria for a particular functionality – you can come up with a brilliant idea at the last minute or your end users may ask you for something extra
- changing deadlines – which in practice most often means the product/functionality has to be delivered sooner. Whenever it’s justified, there are ways to handle such a situation by simplifying the scope of functionalities that should be provided at a given date, upscaling the team, or working overtime for a short while.
Your nearshore software development company should be eager to respond to these changes dynamically and your contract should allow it as well. How much time will they need to do that? Are they agile and will be flexible enough to change deliverables reasonably quickly? Will they try to entrap you with an annual (or longer) contract? You need to know that ahead of time.
3. Why have you chosen this particular tech stack?
It’s important to know that your subcontractor has your good in mind in the first place. When they put forward their offer and development plan you need to make sure they’ve chosen the solutions tailored to your needs (and not their free resources) and technologies that aren’t niche, which would make you dependent upon the very IT company.
Right now, the sound choice includes:
- Node.js, .NET, PHP, Java, React.js, Angular.js for web applications
- Java, Objective C, React Native for mobile development
- Unity for AR/VR applications
- Python for artificial intelligence and machine learning solutions.
However, keep in mind that it might change in time, so you need to have your finger on the pulse constantly.
The outsourcing company has to be able to explain the choice of technologies and solutions, its benefits and downsides, what precisely you will gain, and so on. If they don’t have clear answers, you might suspect that the choice had been dictated by personal interests.
4. How will I know what’s going on in the project?
Cooperation with a nearshore development company won’t be feasible without transparency, actually on both sides. You have to know what’s going on right at the moment, what tasks take more time than estimated, and finally – what you’re paying for.
Most of the project management tools, such as Jira, Redmine, and YouTrack, allow you to track the progress of the entire project and every single issue. And you, as a client, should simply have access to them. Your development team ought to offer you training in how to use the tools to track progress, enabling efficient cooperation.
Also, a professional contractor will propose to you a set of reports with the time span suited to your needs. Even more, you should be allowed to take part in all team meetings: planning meetings, daily meetings, sprint reviews, and retros. If you want to, of course. If you can’t or are advised not to, that should ring a bell. Communication is yet another factor of great importance when it comes to project transparency. More on this topic you’ll find in the next section.
5. With whom will I be in touch and via what tools?
Communication is key to any successful cooperation, not only when it comes to nearshoring. Thus, you have to make sure who will be responsible for regular, daily communication with you.
- Will there be established a single point of contact?
- What is the response time?
- What tools will you use to get in touch? Will you get to know your contact person before you sign the contract?
- Will you be able to communicate directly with the development team?
The answers to these questions will definitely help you understand how the cooperation might look like – and if it’s your cup of tea.
From our point of view, establishing a single point of contact at your and your contractor’s side is crucial to limit excessive communication, communication channels, and avoid misunderstandings. The person has to be present whenever any arrangements, verbal or written, take place. A common problem with not having a single point of contact is receiving contradictory/residual information or making decisions from which someone else later withdraws.
Second, when choosing your communication channels specify their purpose concurrently, such as ad hoc communication tools. It will help you avoid communication hodgepodge and looking for specific project information in a variety of places, which might be pretty aggravating. Whenever you agree on multiple communication channels (such as Teams, phone calls, Google Meet, e-mail, task comments), it is worth setting one for formal communication to inform about deadlines, estimations, personal changes, and escalations.
As a side note, for many software houses, it’s pretty ordinary that you don’t have contact with a development team or scrum master/PM on a daily basis. The only opportunity to have a chat is some weekly meeting or sprint planning. However, in NeuroSYS we believe that everyday contact with our clients is possible and crucial for successful cooperation – and we encourage you to take advantage of it.
6. How do you ensure software quality?
There are as many possible answers to the question as there are tools, methods, and procedures that uphold the software quality. You should expect your IT nearshoring partner to present you with a detailed Quality Assurance strategy for your product. Thus, before the project starts, ask for an Architecture Decision Record that documents all architectural decisions made and a software test plan, including unit tests, automated tests, regression tests, vulnerability tests, performance tests, and actually many, many more. By the way, ADRs should be created at every stage of the project when there’s a need to choose an architectural solution or at the implementation stage.
Don’t forget particularly about code review, so every single line of code is verified in terms of code clarity, the use of good programming practices, optimization, and following design guidelines, by at least one developer that didn’t write the code. If you still have doubts, ask your nearshore development company if they agree for you to hire an external consultant to verify software quality – and the possible consequences of such an audit. And never ever trust when a company just declares that your application will be tested. Only a test plan and reports from it will allow you to ensure that it’s not just promises.
7. Who’ll be the owner of the source code?
The only possible answer to this question is you. Before starting cooperation, you have to make sure that you (your company) will be the sole owner of the source code, along with the transfer of copyright – and this will be written explicitly in the contract. This clause will help you minimize the risk of developing a long-lasting, undesirable relationship with your nearshoring partner. Owning the source code you can change the supplier in the meantime or work with a different one down the road, developing the product further on or just maintaining it.
8. What happens if I’m not satisfied with the cooperation? When can I end it?
No matter how deep research you conduct, whether you do double and triple checks, get to know answers to all the above questions, it can always happen that the cooperation turns out to be a fiasco and you want to get out of it earlier than you thought. Or, in a second scenario, you have to finish the project earlier due to e.g. external factors. The future is unpredictable and you should be prepared for a change of plans, the need to cut costs, etc. If the company insists on signing annual contracts and wants to force you to pay costly penalties, it should raise a red flag. Choose the company that is sure of their skills and has a clause that lets you out of the contract easily, without further ado. As an example, in NeuroSYS we usually allow finishing cooperation with a month’s notice.
These are eight questions that we’re convinced you should ask your potential nearshore software development company. The answers will help you get to know them better but foremostly minimize your own risk – and choose the right nearshoring company with flying colors. If you have any questions on nearshoring or just wanna talk, drop us a line.