Freelancers and outsourced developers have become more regular parts of the team for many using Codacy. There are some best practices we learned to help turn a project into success when working with outside people.
Let’s start with the most common reasons behind outsourcing projects:
Why Outsource or hire Freelancers?
The three main arguments why firms turn to outside resources for development projects are:
- no in house technical capabilities coupled with the increased difficulty of talent acquisition;
- the financial argument as outside resources especially sourced in foreign countries tend to be cheaper;
- and the type of projects that require only short-term developers or very specialised programmers
Challenges in working with Freelancers and Outsourced Developers
These are some of the issues related to working with outside freelancers or outsourcing:
- Difficulty to choose the right qualified people to trust
- Low code quality and sometimes difficulty to assess its quality
- Difficulty of project management, progress tracking and time consumption
- Communication with developers that work outside the office can be difficult especially in foreign countries due to language and timezone differences
Having these in mind, here are my suggestions to help you guide your project:
7 Outsourcing Best Practices
1: Outsource the right projects
Outsourcing is most effective for very specific and non-core product related projects.
Make also sure than someone in your team or a trustful outside person understands the technology enough to be able to review its final version after freelancers finish.
2: Recruit the right people
This is supposed to be common sense, but it’s not for everyone. Often short-term monetary arguments takes over in the decision process instead of long-term monetary benefits. Spending weeks reviewing an incomprehensible buggy code will cost you more money in the long run.
But how to hire the right programmers?:
- Use reviews and recommendations: Wether you use marketplaces like Elance, or use recommended teams you should always make a background check. Check the reviews on the websites and don’t hesitate to ask for references. Don’t make the mistake of sloppy background checks.
- Review past project: Ask for an open Git URL and review code style using automated static analysis tools like ours: Codacy.
Code style will tell you a lot about how good and how serious an outsourcing provider is.
- Check if the developer(s) already worked on similar projects: Would you hire an inexperienced freelancer? No, so make sure you hire an outsourcing company that already worked on similar projects.
- Extensive Recruiting process: Similar to your recruiting process for inhouse developers, assess the technical capabilities of the programmers in technical interviews. As a project manager make sure there is a personality fit, and that the person in charge is really going to work on your project.
- Don’t save money on the wrong things: As already mentioned price shouldn’t be the main driver of choosing freelancers or your outsourcing partner. Good programmers know their value. Good surprises with cheaper options can happen. But would you really want to take that risk?
- Check the Operations and IP Management: Look at their operations and make sure IP management is implemented in the company.
3: Be a project manager
To ensure the success of an outsourcing project you will have to be a good client. A good client of outsourcing is a good project manager, that fixes clear and specific objectives and that tracks progress on a daily basis using agile methodologies tools like Jira. Responsibility of the success or the failure of an outsourcing project should be on the project manager.
Take time to learn what “scrum” means and what it means to be a product owner.
Being a good project manager takes time, but it will always be a good investment.
4: Require detailed documentation
Requiring detailed documentation can make a huge difference when reviewing the work. This documentation could be in form of code comments, api descriptions, How to or even Readmes.
Documentation helps to explain decisions and, most importantly, helps in the process of handing over the product to another team.
5: Monitor code quality/technical debt
Tracking the progress of the project is not enough. As a product manager you also have to make sure that you are provided with good quality code. But whether you’re a complete newbie or an advanced programmer in that language you don’t have the time to review the code on a daily basis.
This is again where automated code linting can help you save time. Our clients are using Codacy to see the overall health of the project and its evolution but also to track on a daily basis the different commits.
6: Communicate and anticipate quality issues
It is important to communicate on regular basis with your partner. Communicating quality issues and doubts right away to avoid technical debt or increased costs at the end of the project.
The onus of quality checking is on you. Hence you can set from the get go rules of engagement for how quality will be measured and checked in each delivery.
What are these rules? these could be from manual testing of the product in a early release to a full blown testing suit using tools. Communicating and setting these rules will guide you to success when receiving code.
7: Ask for help
Asking for outside opinions to judge the quality of the product is a necessity as a good project manager. Arm yourself with such help as soon as possible to make your outsourcing project a success. This could be in the form of a technical friend making sure the code is easy to deploy/test/read. This could also be in the form of a non technical person reviewing features.
As you gather experience, you’ll quickly be the one giving advice to more novice teams using outsourced development services.
Edit: We just published an ebook: “The Ultimate Guide to Code Review” based on a survey of 680+ developers. Enjoy!
Codacy is used by thousands of developers to analyze billions of lines of code every day!
Getting started is easy – and free! Just use your GitHub, Bitbucket or Google account to sign up.