We are frequently approached by friends who are new to software development and are looking to hire their first developer. They ask us: What do I ask them about? How do I know if they are any good? How do I keep them on track and make sure they don’t burn my money?
In response, we have come up with five questions that we encourage you to ask any developer that you are considering hiring. These questions are not comprehensive or complete, but they are a good starting point for you to have the conversation that you need to have with any developer you hire.
Before we tell you our five questions, we have to give credit where credit is due. Our list is largely inspired by a list published 12 years ago Joel Spolsky of the famed blog Joel on Software. In August of 2000, Joel came out with a 12 part test called “The Joel Test: 12 Steps to better code.” His test outlined 12 rules that if adhered to would lead to happy, healthy, productive development teams and excellent code. As he put it, “most software organizations are running with a score of 2 or 3, and they need serious help, because companies like Microsoft run at 12 full-time.”
12 years later, a lot has changed when it comes to software development. A handful of Joel’s rules relate to the specifics of building desktop software (such as #2 ‘Can you make a build in one step?’), but the test is still a great starting point to think about best practices when it comes to software development. Without further adieu…
The 5 Questions you must ask any developer you want to hire
1. Do you use version control?
Version control, as you might remember, is a way to track changes in your code. Any developer worth her weight in salt uses it and uses it constantly. There are a number of different types of version control, but the most popular kind is called Git.
We encourage you to buy a Github account and ask your new developer hire to push all of their changes at the end of each day to the Github repository. The added benefit is that you will be able to use Github to keep track of the developer’s progress, by looking at their commit history, which is where they write notes to themselves about what they have gotten done.
If you want to learn more about how Git works, we encourage you to check out Code School’s Try Git.
2. Do you have an established way to track bugs in your software? Do you have a bug database?
Bugs are problems or errors in software. Bugs are a fact of software development, so it’s not bad to have them but it’s super important to have a clear methodology for how to handle bugs. What you want to know is what process the developer uses to keep track of bugs and make sure that they are fixed in a timely manner before a small bug becomes a terrible infestation! (That’s right software bugs can work just like termites do and eat away at the foundation of your web app.)
There is no right answer to this question other than a clear answer. Ideally the developer has an established way that she keeps track of bugs and has a way in which you can plug into that process.
In our old company, Balance Media, we tried dozens of different bug tracking methods and softwares, and ended up using a simple Google Spreadsheet for bugs. Bug databases do not need to be fancy, just clear and easy-to-use.
3. Do you do user testing?
Software engineers are infamous for being really good at making completely confusing and impossible to use software. Luckily, there is a very simple solution to this: user testing, early and often.
If you are looking to hire an agency, they should have an established user testing practice where they bring in users for 30-60 minute user tests and walk them through the software to identify all the problem areas. If you are hiring an individual developer, the best you can probably expect is that she regularly shares projects with her friends or significant other to test for usability.
In general, what you want to see is that the developer understands and appreciates the value of user testing and will work with you to make it happen in a reasonable manner. If someone argues with you on this point, that’s your cue to show them the door.
4. Do you have an up-to-date schedule? Do you have an up-to-date spec?
One of the basic tenets of software development is that the project will always take longer and become more complicated (read: more expensive) than planned. This is because of something called scope creep, which is the process of incremental changes building up into a mountain of additional work.
The best antidote to scope creep is to keep diligent track of it, and the best way to do that is to keep up-to-date schedules and specifications. You might be really attached to the idea of having an extra feature, but when you see how much it pushes the schedule back…
The goal of this question is really to try to get a sense for the developer’s process when it comes to managing you, the client. Can the developer clearly and kindly communicate to you the consequences of the additional ask? Sure it will be a bitter pill to swallow, but it will save you hundreds if not thousands of dollars in the end.
5. What is your process for communicating with your client?
Believe it or not, this is the most important question that you will ask any developer you are considering hiring.
Again, there is no right answer to this question, except an answer that you feel good about. Ideally the developer has an established process for communicating with clients. Some developers write daily emails, others prefer phone calls, some do weekly check-ins. What you are looking for is a willingness to communicate regularly and the ability to clearly communicate to you the progress of the project.
Did we miss any key questions? Please tell us in the comments!