How to hire a great software developer for your project
I’ve probably hired over 1000 remote / freelance developers in the last 17+ years. Some for small one-off projects, others for large infrastructure projects. I have hired from India, Pakistan, Ukraine, Romania, Poland, Canada, Uruguay, Belarus, China, Mexico, Africa, and nearly every state in the union. Most of the hiring that I have done has been via online freelance sites like oDesk, Elance, and Freelancer.com. Some of it has been a result of guys who just hit me up in Skype looking for work. I honestly have no idea how they find me, but it is usually when I have no work at all when they do. One of the questions that I am frequently asked is, ‘How do you know they are going to do a good job?’. I hope to answer that here.
- Know up-front what you are looking for
I feel that one of the biggest and most expensive mistakes that you can make when hiring an outsourced developer is going into the project not knowing the platform you want to use, the type of developer you are looking for, or how you want your project built. Platform agnosticism is really an advanced move and should only be used if you are already experienced in managing projects. As an example, do not list your project as ‘I need someone to build me a website’ if you are also wanting to manage that website. Be specific… ‘I am looking for a WordPress Designer to build me a website’. If you are not specific about the platform that you want to use, you will wind up with developers deciding for you, which can lead into more costs both now and in the future. If you are not sure about what your needs are, be specific about that … but realize that the education is likely going to cost you something. - Know the difference between a front end designer and a back end developer
This is pretty basic, but is something that you should clarify with your developer before hiring. Developers are usually stronger in one of the two. If you find one who is strong in both, keep them around, as they are twice as valuable! Some people will hire a back-end developer expecting that they are going to be able to build a fancy user interface for them… and are usually disappointed with the results. In most cases, if you want it to look good and work well, you’re probably going to need 2 different roles, especially if you are working with folks overseas. - Set your expectations clearly on the front end
Unless you are specifically hiring with the goal of having a developer help you plan your project, make sure to have very clear requirements for what you expect them to do before you begin the recruitment process. Anyone who gives you a fixed cost bid on a description that says ‘I need a .NET guru to build an application’ is just fishing. A good rule to follow is ‘What’ not ‘How’. You don’t need to be specific about ‘How’ your project gets done, but you do need to be specific about ‘What’ you want it to do. - Pay attention to good ratings
But give developers with no ratings a chance. There are a lot of folks who have been coding for a long time but only just recently started freelancing and so they have not had the opportunity to develop their profiles yet. Sometimes these guys are the hardest working and smartest ones! - Test Test Test
Make them build a specific easy application for you while you watch from remote before you hire. This will quickly weed out the guys you don’t want, especially when you mention in the description for the project that they will need to do this before being hired. When you do hire them, start them on something small and non-critical as a first project. Have them fix a few bugs before implementing a new feature. - Pick up the phone
This is another obvious one, but I think that it is often neglected. Get into Skype with them and pay attention to how they communicate in chat. Have them call you via Skype. Are they easy to understand? Ask them about the project to make sure they have an understanding of what you are wanting to do. Can they explain it to you? Are they friendly? Courteous? If not, this might be a sign that things will not work out in the future. - Let your team evaluate them
If you have a team, this is a must do for any new hire, outsourced or not. Your team members will catch things that you didn’t, and they are ultimately the ones who will need to work with ‘the new guy’ … so it is best to make sure that everyone agrees on the hire on the front end. - Take your time
Make sure to leave yourself enough time to go through the process. I’ve hired people for small projects within an hour of posting a request, but for larger projects, Â you need to be more picky about who you have on your team. - Go to your network first
Remember to think first about the people who you have had success with in the past, and invite them first to bid on projects. The more frequently you work with someone, the better you are able to work together, and the less time it takes to ramp up into a new project. - Notice the personal touches
There is a lot of competition on freelancer sites, and so in order to make things easy… many freelancers will develop canned responses for bids that include templated information about them or their company along with a list of links. This is fine, but the ones that attract my attention are the ones who specifically mention the project that I’m hiring for, the technology I am hiring for, and the ones who are able to explain to me specifically how they think that they can help. I’m happy that they are excited to work on my project… I am excited too… but to set themselves above the 100 other freelancers who applied in the last hour, I would like to know exactly why they think they are a good fit. - Â Research the candidate
Do they have a gitHub account? What kind of stuff have they worked on and published there? What about LinkedIn? Do they have a website / profile outside of the freelancer site that you’re reviewing them on? Who have they done work for in the past? Do they have a portfolio of previous work? Is it current? Have they taken any Brainbench tests? oDesk tests? How did they score? - Make sure that you are comfortable with their timezone / availability
If you are working with an outsourced developer from overseas, make sure that you are able to at least overlap some time with them when you are both awake so that you can meet with them on a daily basis. If you are unable to do this, your project will have limited success. - Ask the right questions
Do they fix bugs or add new features first? (The right answer is ‘bugs’). Do they use SVN, Git or any other repository? (They should answer ‘Yes’). Do they make new code releases daily? (The right answer is ‘Yes’), Are they able to meet with you daily to discuss project status? (The correct answer is ‘Yes’).
Hopefully these suggestions help you along the way as you hire your next developer! This list is by no means complete… I’ll likely keep adding to it as I think of other things. If there is anything else that you can think of, Please feel free to leave comments! If you are looking for someone to help lead a team for your next project, let me know!