A project manager in my department (software development) wants us to interview a non-programmer for a programming job. He has experience in technical support for an international software company. What kind of questions can we ask to determine that he would be suitable for learning on the job?
When I interview a candidate for an entry level position, I expect that they will have at least done some home work. I expect they can at least answer these questions:
- What languages have you worked with at home?
- What was your most challenging bug you have run into?
- Tell me about a program/website you have written. (what language? did it connect with any services or databases? what did you want to do that you did not know how to complete? How did you overcome that?)
To me these questions should elicit enough information to tell if the applicant is passionate about programming or if he/she saw the giant salaries that programmers make in some magazine and said I want to do that. You can teach the programming but if the passion is not there then it is harder and the likelihood of success is much lower.
I would not ask exactly the same questions for this candidate as one who is strictly a programmer.
Presumably, the reason you're considering bringing this person on-board is because they have some deep domain knowledge in an area that is valuable for the project. I would probe that domain knowledge deeply to be sure that this person can pull their weight as part of the team knowing that the programming part is going to be a bit of a risk. Of course, you'll also have to make the difficult assessment of whether or not this individual can eventually come up to speed on the programming tasks.
Generally, it is better to have a well-rounded team than to have each individual be well-rounded. If this person can do the job, your team will be stronger for it even if they have to tutor the new guy more than usual in the beginning.
To assess whether he has the capability of learning while on the job (presuming you've already decided he in fact does have excellent domain knowledge that would make him valuable after coming up to speed):
- Has he done any hobbyist programming or tried to learn programming to any degree before? What languages did he use? Did he find it rewarding? Fun? Challenging? In what ways?
- If not, has he ever done anything remotely like programming? (Web pages, shell scripts, batch files, word macros, excel formula, encountered a bug in software, etc)
- What did he find enjoyable and/or difficult about his most programming-like experience? Did he feel a sense of pride or excitement when he got his project to work? Did he have to overcome any hurdles of knowledge he didn't already have?
- Does he have a batchelors or associates degree in an of sciences discipline? What is the highest level of math or physics he ever completed? Did he enjoy high-school math, especially algebra? Was that one of his favorite subjects in school? (while loving math is not a requirement per se, having an analytical mindset is most beneficial to having an aptitude for programming) Did he prefer classes where you could just write some "bs" and there wasn't right/wrong answers?
- Has he ever learned a new skill from reading a book? How does he learn best?
- If you hired him, what would he come up to speed on programming? What sort of training would he want to have?
- Show him some some fairly simple code (loop, conditionals, etc, maybe not all at once) and ask him what he thinks it might do...if he's totally stumped, ask him to give his best guess (even if it's way off) about a single line of the code. Maybe have a harder one handy if the fundamental stuff he totally knows, or move into questions you'd ask a junior programmer.
- ask him problem-solving skills questions. What would he do if he realized he didn't know what a piece of existing code does? Does he enjoy being a problem solver?
- ask him questions about his exposure in his previous role to software developers and software development processes, was he fascinated with what they do? Converse with them about their jobs to learn more about what programmers do? Does he know something about the stages of development? Used version control? etc.