hiring
When I hire a developer online, I get a lot of applications. Of course, most of them have a good cover letter and his previous work which looks good. So I always ask some questions for the developer to answer when applying. I’m curious there are good questions to understand or judge the developer
If you’re a small startup owner, and you have to hire a developer for section you don’t know well, what questions would you ask?
(You’re not technical, so I’d gather this won’t speak much to you, but I’ll mention them for reference in the event someone technical ends up googling this.)
Have him show a few code samples to get a feel of how the developer codes.
Have him solve a trivial problem such as coding a FizzBuzz, to eliminate chaff immediately.
Have him explain how he’d solve a complex problem such as programming the game of Monopoly, to get a feel of his ability to manipulate abstract concepts and data structures.
Ask which source control software he works with. If the answer is “none” or has any hint of “I sometimes use” in it, you most definitely do NOT want to be working with him – he will deliver a steaming pile of unmaintainable spaghetti.
Ask whether he uses tools to check his coding style. I’m fine with an answer like “none, but I follow [this or that] standard(s)” but I do eliminate those who don’t seem to be following any. Each language has some standards, and any half decent programmer will have run into them.
Ask how much he uses automated or unit testing. “What’s unit testing?” types of answers are a big no no because they’re a sign that you’re dealing with a beginner. At the other extreme, “I aim for 100% coverage” or “test-driven development” types of answers are good or bad depending on who you ask. (I tend to view them as a sign that the programmer wastes a lot of time on things that provide little marginal benefit in comparison with the extra maintenance costs. YMMV.)
Ask what tools he generally uses when he works in a team: project management, ticketing system, etc. No tools at all means he’s coding in his ivory tower and has yet to learn tips, tricks, and best practices at the side of more seasoned peers.
Last but not least, ask the candidate to describe the past projects he’s worked on that he is most proud of. I do so because the way a developer talks about his portfolio speaks mountains about whether you want to be working with him or not.
Some are so oblivious to what they’re coding that they’ll blabber about how they wrote functions without the slightest clue of what the functions were then being used for. You don’t want those.
Most speak in more or less jargon about this or that cool app or language or what have you that got them really excited. Cool stuff.
A rare few are able to clearly articulate the benefits they brought to their former clients. These are the developers you most want to be working with, because they’ll have your ROI in mind and will seek to offset their costs. (But they’re rare, and usually expensive.)
I want to add two things to the accepted answer:
I disagree with most answers here.
and what kind of technical questions, would you ask if you know well about the technology?
I’ll make it simple: there’s no such thing. Always keep in mind that there’s no way you’re going to know if someone is a good developer, unless you are one yourself and know how to ask questions. There can be reasons (either good or bad) to do or not to do just about anything, and you won’t be able to judge them on value. There isn’t a surrogate or ‘quick checklist’ available.
Do note that you need a company match as well as a technical match. You can ask about the person in question, and see if he’s a match on a personal level. In fact, I would strongly encourage that.
There is however an easy solution for that: hire a fantastic developer you trust as an external consultant, explain him the business/context, what you need and let him/her do the technical interviews. No strings attached, you just want to know how good he is on an arbitrary scale of 1-10. There’s really is no surrogate for that.
Why
What I’m worried about is -if I may be so blunt- either the implicit arrogance or the implicit ignorance. It tells me that you assume that ‘computer science’ is as simple as screwing bolts in a car. It’s not. It’s more like deciding where to put a bolt, then deciding what the screwdriver looks like, finding yourself a good screwdriver, trying a few different pieces to figure out what tool is best, drilling a few holes to figure out what will probably get the best result, screwing the bolt, and then solving the issues that arise from the process.
You have to realize that good software developers spend decades on learning a the proper skills, much like a good painter. Those skills influence quality, speed of production and maintainability in ways a layman cannot comprehend, but with serious impact. Sure, we can all argue how good or how bad a website looks, and we can all learn how to create a ‘functional design’ or setup source control; that’s just tricks that any professional will know (you can just as easily ask for a diploma). But one thing good developers won’t argue about is how well a piece of technology is made. That and only that tells about the quality of a software engineer.
Asking the right questions on this point is where you have the opportunity to learn how good a software developer really is, basically by asking for the ‘why’. Making the distinction between ‘facts’ and ‘assumptions’ here tells about the quality of a software developer. A layman won’t be able to make the distinction.
So, bottom line: the solution is to hire a good software developer as consultant and let him do the technical interview.
Learn the basics with Codecademy etc. and have a strong sense of what you really need first of all. You will save way more time than trying to define what you need from a developer if you wouldn’t know enough to describe what ‘exactly’ you need.
All content is licensed under CC BY-SA 3.0.