Pregunta original
Ya hice algunas entrevistas para mi empresa, principalmente científicos informáticos para puestos de desarrollo, pero también algunos evaluadores y gerentes de proyectos. Ahora tengo que llenar una vacante en nuestro grupo de investigación dentro del departamento de I + D (nota al margen: "investigación" significa que tratamos de resolver problemas en nuestro dominio profesional / nicho de mercado utilizando software en proyectos de investigación junto con universidades, otras empresas, centros de investigación y organizaciones de usuarios finales. No es investigación en informática; no vamos a resolver el problema P = NP).
Ahora invitamos a un tipo con una maestría en química (con mucha física también en su CV), que nunca tuvo ninguna clase de informática. Ya hablé con él aproximadamente media hora en los días de carrera de una universidad local y no hay duda de que el tipo es inteligente. También sus notas son excelentes y se graduó con distinción. Para su licenciatura, necesitaba aprender a programar en Mathematica y me dijo creíblemente que le gustaba mucho programar. También resolvió un problema de química física que probablemente no entiendo usando su propio software, implementado en Mathematica, para su tesis de maestría. Incluye una GUI y un tamaño notable de 8,000 LoC. Parece estar muy atraído por lo que estamos haciendo en nuestro grupo de investigación y, para ser sincero, es bastante difícil para una PYME como nosotros conseguir buenas personas. También estoy muy interesado en contratarlo, ya que podría ayudarme a escribir propuestas de proyectos, informes, hacer presentaciones, etc. Probablemente también encajaría en nuestro equipo.
La única pregunta que queda es: ¿cómo puedo verificar si obtendrá las habilidades de programación que necesita para implementar software en nuestros proyectos, ya que esta será una parte importante del trabajo?
Por supuesto, le preguntaré qué es, eso es lo que lo fascina de la programación. También le preguntaré cómo procedió a escribir su software de ciencias naturales y cómo lo estructuró. Le preguntaré cómo logró obtener las habilidades y la información sobre el desarrollo de software que necesitaba. ¿Pero hay algo más que pueda preguntar? ¿Algo más concreto quizás? ¿Debo pedirle que explique su solución de Mathematica?
Para ser claros: no estoy buscando conocimiento en un idioma particular o una pila de tecnología. Somos una tienda .NET en desarrollo de productos, pero quiero tener una opción libre para nuestros proyectos de investigación. Así que estoy interesado en que la meta-competencia sea capaz de aprender lo que realmente se necesita.
Espero que esta pregunta sea respondible y no abierta, ya que realmente me gusta saber si hay una forma predeterminada de verificar la capacidad de obtener más habilidades de programación en el trabajo. Si algo no está claro para usted, por favor deme algunos comentarios y permítame mejorar mi pregunta.
Actualización para reflejar las respuestas dadas hasta 2011-12-01
Qué respuesta acepté y por qué
Gracias a todos por sus respuestas, la mayoría de ellas son bastante útiles, ¡así que voté mucho! Aunque la respuesta de Tom Squires obtuvo la mayor cantidad de votos, voy a aceptar la respuesta dada por el Príncipe Goulash . Por supuesto, Tom es objetivamente correcto, pero la respuesta de Prince es más útil para mí y revisé dos veces las preguntas frecuentes de que este es el criterio para aceptar una respuesta.
Lo que le voy a preguntar durante la entrevista.
Le dejaré explicar algunas tareas simples como el ejemplo en The Camel Has Two Humps mencionado por Chris Burt-Brown
Le pediré que explique algunos flujos de control más avanzados, tal vez en una notación gráfica.
Comprobaré su comprensión de la recursividad usando un ejemplo matemático.
Le dejaré explicar un algoritmo de su elección en lenguaje natural.
Le dejaré explicar su solución de Mathematica, en particular le preguntaré por su modelo de procedimiento, uso de herramientas, estructuración de código y software en general, así como diferentes capas de abstracción.
Para verificar su motivación, le preguntaré por su fascinación por el desarrollo de software.
Le preguntaré si está al tanto de lo que necesitará para aprender sobre el desarrollo de software empresarial. Especialmente quiero convertir la discusión en la dirección de trabajar en equipos, programación de pares, TDD, ya que espero que no sepa mucho sobre esto después de trabajar solo en su maestría.
Parece que va a ser una larga entrevista;)
Actualización después de la entrevista 2011-12-09
Nuevamente, gracias a todos por sus buenas respuestas. Pasó la entrevista con gran éxito. Nunca estuve más satisfecho con un solicitante. Su solución de Mathematica parece estar estructurada bastante bien. Pudo explicar dónde usaba las funciones de orden superior, aunque no sabía que se referían así. Él respondió a mis preguntas de recursión basadas en matemáticas, así como a tareas simples y cosas de control de The Camel Has Two Humps. Cuando estaba explicando algunos algoritmos, aprendí mucho sobre el ajuste no lineal;) También dijo honestamente que, por supuesto, no puede garantizar que podrá aprender cosas sobre el desarrollo de software profesional que no conoce hasta ahora. Pero él creía que siempre fue bueno aprendiendo nuevos conceptos, incluso solo, y que estaba realmente interesado en el desarrollo de software. También solicitó la pila de tecnología del proyecto, se le aplicaría primero, para echarle un vistazo en casa. También sentía curiosidad por la programación en pareja y el trabajo en equipo. Ahora espero que se concluya el contrato de trabajo.