This article was contributed by Daniel Boterhoven.
As more and more businesses make the move into the online domain, there is an increasing demand for cost effective web and mobile app development services. A quality developer must spend hundreds if not thousands of hours honing in their skills and this often means they are in short supply. This is why it is natural that the cost of hiring local coders is outside the budget of many businesses and so outsourcing becomes the best option.
But like any project, as soon as you have delegated responsibility of it to a third party, you are immediately dependent on their competency, punctuality and ongoing support.
In my role as the tech lead of a software consultancy that outsources, I’ve learnt some invaluable lessons on running these types of projects. Although there will always be a level of risk when outsourcing anything, I find the following strategy to be the most reliable in mitigating the risk for any non-tech project owner.
But first, why outsource?
I think it’s worthwhile to first understand the reasons why businesses outsource development work to begin with.
- It’s usually a more cost-effective option. In a lot of developed countries, the cost of hiring local developers would mean a business will need to pay between three and five times what they would compared to hiring a remote worker.
- There is a far greater talent pool to choose from. Relative to the skilled developers available in the local community, internationally there are more options and a much greater variety.
- Most businesses don’t have any knowledge of what web or mobile app development entails, and so handing the responsibility over to a third party frees the team up from having to manage this themselves.
- Lastly, with the increased prevalence of online freelancer platforms, it’s relatively easy to find developers with seemingly good ratings and reviews.
So, given that a business can easily find cheaper developers, in a greater talent pool all without having to tie up their team with the nitty gritty of the project implementation, who wouldn’t want to outsource?
What can go wrong
I think the reason that causes many outsourced projects to fail is the delegation of the responsibility. For a project to thrive you must be pro-active, persistent and you must take ownership. When you hand full and unabetted control of the project to just one party who may not have been vetted properly, you are going out on a whim and not covering your bases.
Outsourced projects can often go off the rails due to ineffective or patchy communication, gaps in the understanding of the project scope and badly vetted service providers who don’t have the ability to get the work done. A report by The Standish Group states that 31.1% of software projects do not even make it to completion.
If and when the project does go off the rails, you will usually be left with an incomplete or poorly architected solution that does not do the job you need it to. It will probably be difficult to maintain and there won’t be many other developers who are keen to take over without starting from scratch.
A path to outsourcing success
If you’re going to outsource, my belief is that there are two fundamental rules you should adhere to. The first and most important is that you will need to take the time to properly vet your team and also be prepared to manage them throughout the process. For the process to be successful you do need to keep tabs on progress and act if necessary.
The second rule is that you should hedge your bets as much as possible and try and avoid handing over all the power to just one party. With these rules in mind, here is how I see usually see the most successful outsourced projects play out.
Document what you want in detail
For any developer to implement your solution successfully you will both need to understand what is needed. I see many project owners who are yet to understand the project specification themselves, ask an outsourced developer to start coding.
I think it’s important to first write at least a one-page document describing what’s needed. In addition to this one-pager, it’s just as important to:
- Include some basic sketches of any layouts and user interfaces.
- Ask for feedback and ideas from colleges and/or friends.
- Consider what other systems and third-party platforms your solution might interact with.
All this should happen before you even make contact with a developer. Like when hiring any freelancer, it pays to be prepared. By doing so you will refine your understanding of what’s needed first, and the developer will immediately have a clearer picture of what you’re looking for.
Spend time finding quality candidates
It’s great to see so many effective online platforms that connect us to talented international freelancers. However, it’s important that you search these thoroughly and weigh up the cost/quality balance properly.
You might get lucky, but it’s probably better to pay for the developer with a higher rate and better reviews than the cheaper one with patchy work history. I’m not saying the ratings and reviews tell the truth, but they are definitely useful for curating your shortlisting.
In my opinion platforms such as Upwork and Freelancer usually serve their purpose well. However, depending on your budget, platforms such as Crew, Gigster, CodementorX and even TopTal can offer higher level candidates.
Figure 1. Upwork candidate review
At the end of the candidate search phase you should have a carefully compiled shortlist of potential candidates. There is however still a way to go before making your first hire.
Vet your team thoroughly
Review your shortlist several times and try and narrow it down to a select few. Once you’re comfortable with it you can begin the interview process. I will usually start the interview process off with a chat over Skype or Zoom. First impressions matter and you will soon get an idea of weather you will be able to work with someone – irrespective of the skill level.
For the candidates that you’re happy with, it’s time to validate their skills. Platforms such as TestDome or Codility offer non-tech minded people the ability to run technical interviews online. Asking your candidates to sit these tests will give you both confidence in their abilities and will screen out any developer whose skills are not up to scratch.
It’s important to note that it takes time to sit these tests and so paying your candidates for their effort will both compensate them appropriately and show good will.
On the completion of these test you will be able to review the competency level of each candidate and make an intelligent decision on your first hire – your lead developer.
Figure 2 TestDome candidate results https://www.testdome.com/tour
Small and large projects
There are typically two types of projects, the smaller ones which only require one developer and the larger ones where you may need a team. Both types will require your lead developer to spend some initial time designing the architecture of the solution, breaking down the implementation into smaller chunks and defining the order that the tasks should be worked on.
After this there are two pathways…
For smaller projects, you can delegate the implementation of the solution to your lead developer. Although I am an advocate of not putting all your eggs in one basket, the overheads of managing more than one developer for smaller projects will be too great to make spreading the responsibility worthwhile.
Given that you have vetted this developer properly, you have done a lot to mitigate the risk of something going wrong anyway. You will probably have even set yourself up for better chances of success than if you hired a poorly vetted local developer.
In larger projects that require additional developers, the process will be significantly different. The first step will be identifying the other candidates to bring on board.
Although vetting is important and these new candidates should go through a similar process, having your independent lead developer on board will help ensure any inadequately skilled or unreliable team members are soon identified.
In this scenario I opt to have the lead developer focus on managing the other developers and less on the low-level coding. I will pay the lead developer for one or two hours work a day at a higher rate. By doing so, the lead can focus on the project at a higher level, can keep better track of schedules and they can keep you up-to-date with the roadblocks or developments when they come along.
Given that the lead developer is independent to the rest of the team you can be relatively confident that the solution is being built properly and with no conflicts of interest.
Keeping on top of progress
Resourcing and starting the project is about equally as important as keeping on top of the progress and making sure everything is running smoothly.
I always aim for a brief daily catch up in the mornings (or afternoons depending on time zones) where each developer will have one minute to report on three things – what they worked on yesterday, what they will work on today and if there is any issue affecting their progress.
Outsourcing is here to stay and with advances in technology will get easier as time goes by. Allocating enough time to both setting up and maintaining your project means you will be able to leverage the benefits of a capable and more cost-effective labour force than you might have access to locally. Not only that but once you have built a relationship with your team in your first project, you will have built a trusting relationship that could span many projects.
So, if you’re going to go down the outsourced development route, do a little initial groundwork and don’t become complacent. It is much more difficult to recover from an outsource development project gone wrong than it is to get it right in the first place.