I already did some interviews for my company, mostly computer scientists for dev positions but also some testers and project managers. Now I have to fill a vacancy in our research group within the R&D department (side note: “research” means that we try to solve problems in our professional domain/market niche using software in research projects together with universities, other companies, research centres and end user organisations. It’s not computer science research; we’re not going to solve the P=NP problem).
Now we invited a guy holding an MSc in chemistry (with a lot of physics in his CV, too), who never had any computer science lesson. I already talked with him about half an hour at a local university’s career days and there’s no doubt the guy is smart. Also his marks are excellent and he graduated with distinction. For his BSc he needed to teach himself programming in Mathematica and told me believably that he liked programming a lot. Also he solved some physical chemistry problem that I probably don’t understand using his own software, implemented in Mathematica, for his MSc thesis. It includes a GUI and a notable size of 8,000 LoC. He seems to be very attracted by what we’re doing in our research group and to be honest it’s quite difficult for an SME like us to get good people. I also am very interested in hiring him since he could assist me in writing project proposals, reports, doing presentations and so on. He would probably fit to our team, too.
The only question left is: How can I check if he will get the programming skills he needs to do software implementation in our projects since this will be a significant part of the job?
Of course I will ask him what it is, that is fascinating him about programming. I’ll also ask how he proceeded to write his natural science software and how he structured it. I’ll ask about how he managed to obtain the skills and information about software development he needed. But is there something more I could ask? Something more concrete perhaps? Should I ask him to explain his Mathematica solution?
To be clear: I’m not looking for knowledge in a particular language or technology stack. We’re a .NET shop in product development but I want to have a free choice for our research projects. So I’m interested in the meta-competence being able to learn whatever is actually needed.
I hope this question is answerable and not open-ended since I really like to know if there is a default way to check for the ability to get further programming skills on the job. If something is not clear to you please give me some comments and let me improve my question.
Update to reflect the answers given until 2011-12-01
What answer I accepted and why
Thank you all for your answers, most of them are quite helpful, so I upvoted a lot! Although Tom Squires' answer got the most votes, I'm going to accept the answer given by Prince Goulash. Of course Tom is objectively correct, but Prince's answer is just more helpful for me and I double-checked the FAQ that this is the criterion to accept an answer.
What I am going to ask him during the interview
I'll ask him to explain some more advanced control flows maybe in a graphical notation.
I'll check his understanding of recursion using a math example.
I'll let him explain an algorithm of his choice in natural language.
I'll let him explain his Mathematica solution, in particular I'll ask for his procedure model, usage of tools, structuring of code and software in general as well as different abstraction layers.
To check his motivation I will ask for his software development fascination.
I'll ask him if he is aware of what he will need to learn about enterprise software development. Especially I want to turn the discussion into the direction of working in teams, pair programming, TDD since I expect him not to know a lot about this after working on his MSc alone.
Sounds like it's going to be a long interview ;)
Update after the interview 2011-12-09
Again thank you all for your good answers. He passed the interview with flying colours. I never was more satisfied with an applicant. His Mathematica solution seems to be structured quite well. He was able to explain where he used higher-order functions, although he didn't know that these are referred like this. He answered my math-based recursion questions as well as simple assignments and control flow things from The Camel Has Two Humps. When he was explaining some algorithms I learned a lot about non-linear fitting ;) Also he honestly said that of course he can't guarantee that he will be able to learn things about professional software development that he doesn't know so far. But he believably statet that he was always good in learning new concepts -- even by himself -- and is really interested in software development. He also asked for the technology stack of the project, he would be applied to first, to have a look at it at home. He was curious about pair programming and team work, too. Now I hope that the employment contract will be concluded.