La compañía para la que estoy trabajando está buscando contratar a un desarrollador senior con más experiencia que yo, y esperan que haga la parte técnica de la entrevista. Solo he estado programando unos años y no estoy seguro de tener el conocimiento necesario para evaluar las habilidades de codificación de alguien que tiene una mayor comprensión / experiencia que yo.
¿Alguien puede recomendar algunas preguntas de la entrevista técnica para hacer que sean un buen medio para evaluar las habilidades de programación de alto nivel, pero que sean las que pueda entender?
Yo diría que he pasado el jr. nivel de programador, pero nada cerca de senior. La mayor parte de lo que he hecho es crear pequeñas aplicaciones (web y de escritorio), algunas de ellas bastante complicadas, pero todas han sido diseñadas para ser utilizadas por no más de un puñado de usuarios. Siento que tengo una comprensión decente de la mayoría de los conceptos de programación y soy capaz de aprender / enseñarme casi cualquier cosa, sin embargo, me falta experiencia. Como a mi jefe le gusta decirme: "No sabes lo que no sabes".
En particular, las cosas con las que nos gustaría que la persona que contratamos tenga experiencia (que yo no tengo) es: desarrollo de múltiples niveles, entorno de múltiples usuarios, desarrollo de aplicaciones a gran escala, mensajería bidireccional, sesiones compartidas, y Multi-threading / BackgroundWorkers.
ACTUALIZAR:
En respuesta al comentario de Thor a continuación, contratamos a alguien hace unos meses y creo que ha estado funcionando muy bien. Estoy aprendiendo mucho, no solo sobre codificación, sino también sobre cosas como patrones de diseño, arquitectura de software, documentación y cómo otros equipos de programación más grandes hacen las cosas. No siempre es fácil que alguien entre y señale mejores formas de hacer las cosas que ha hecho, pero si puede tragarse su orgullo y estar dispuesto a probar cosas nuevas, puede aprender mucho.
El proceso de la entrevista fue mejor de lo que esperaba. Comencé a hacer preguntas sobre cosas con las que estaba familiarizado, luego hice algunas preguntas sobre algunas cosas con las que estaba luchando. Cada vez que el entrevistado decía algo que no entendía, les pedía que me lo explicaran y luego lo escribían para poder buscarlo más tarde. En general, sentí que podía tener una idea bastante buena del nivel de habilidad, la inteligencia y la forma en que trabajarían del solicitante.
Respuestas:
No puedes
En cambio, te sugiero que vengas en la entrevista con una lista de problemas que tienes hoy y le preguntes cómo los resolvería .
Este es un método muy interesante por las siguientes dos razones:
Es consultoría gratuita . Incluso si no contratas al tipo, él puede sugerirte buenas soluciones a tus problemas .
Si viene con soluciones interesantes , es un solucionador de problemas . El tipo de chico que quieres contratar.
fuente
Usa tu edad como una ventaja.
He entrevistado a un montón de personas que son mayores que yo. Cojo una tecnología que yo no conozco bastante bien y les digo que he escuchado de Tecnología X, pero nunca lo utilizó. Le pido al candidato que me brinde una visión general de la tecnología y cómo la han utilizado en un proyecto.
Esto funciona sorprendentemente bien. En primer lugar, si el candidato solo usa esa Tecnología X como una palabra de moda en su currículum, entonces su explicación será una mierda / no tendrá sentido. Además, si no pueden darle un buen ejemplo concreto de cómo utilizaron esa tecnología en sus proyectos anteriores, tiene una gran bandera roja allí mismo.
Entrevisté a alguien que tenía experiencia en Java Spring. Había usado Spring en mi trabajo anterior, y una de las principales características de Spring es la inyección de dependencia. Le dije al candidato que entrevisté que había oído hablar de Spring y que nunca la había usado. Comenzó a parlotear una y otra vez, pero no podía decirme dónde había usado Spring AOP y no podía explicarme la inyección de dependencia, incluso después de preguntar explícitamente después de ver esas cosas en su currículum. Simplemente me dijo que eran realmente geniales, y que hay mucho que aprender, etc., etc. Resulta que él no conocía a Jack ... y yo fui el único en descubrir que b / c estaba Un miembro más joven del equipo de desarrollo.
¡Aproveche su edad como ventaja! Entre, tenga confianza y haga algunas preguntas sobre la tecnología que conoce bien.
fuente
Recuerde que solo porque tienen más experiencia que usted, es posible que no sean mejores desarrolladores que usted. La frase "Un año de experiencia repetido n veces". surge porque ves que esto sucede en la industria. Por lo tanto, su primera tarea durante la entrevista debe ser establecer que realmente tienen la experiencia relevante y que pueden presentarse como alguien que sabe lo que está haciendo. Del mismo modo, el hecho de que alguien haya tenido n años de experiencia en la industria, no significa que tenga mucha experiencia en un idioma, biblioteca o marco de trabajo determinados, por lo que es posible que de vez en cuando vengan a hacerte preguntas mientras están aprendiendo algo
A continuación, recuerde que un buen desarrollador senior es alguien a quien debería poder acercarse y preguntar sobre algo con lo que tiene problemas. Este es un buen momento para hacerles algunas preguntas de diseño que hayan tenido problemas y ver cómo responden y cuál es su razonamiento en su explicación. ¿Han visto algo similar antes en otro lugar, están haciendo una suposición educada basada en la experiencia, leyeron un artículo en línea o en una revista?
Finalmente, otra cosa a tener en cuenta es cómo abordan el código de depuración. En mi propia experiencia, he descubierto que, independientemente del idioma, ciertas técnicas de depuración tienden a aplicarse universalmente. Ofrezca al candidato un ejemplo de uno de los errores más esotéricos que haya encontrado y haga que lo guíen a través de cómo abordarían el error. ¿Tienen alguna idea del problema que no es inmediatamente obvia?
En resumen, entrevistar a un candidato con una entrevista impresionante puede ser intimidante, pero hay algo que debe cubrir independientemente de su nivel (es decir, ¿saben realmente lo que está haciendo?) Y una vez que esté completo, puede comenzar a investigar ellos para ver cómo están aplicando su experiencia. La forma en que los candidatos están aplicando su experiencia laboral previa será lo que hará que un candidato se destaque más que otro.
fuente
Me gusta mucho la respuesta Use su edad como ventaja , y sugeriría algo similar:
Use su nivel inferior de experiencia como ventaja
Esta persona probablemente será tu jefe o mentor, así que haz preguntas de una manera que te permita saber si esa persona realmente puede ser tu mentor.
Haga preguntas complicadas que podrían hacerse mucho más fáciles o que incluyan problemas demasiado complicados. Si él / ella es bueno, él / ella no solo resolverá el intento de responder la pregunta / resolver el problema, sino que realmente resolverá el problema real, mostrándole los defectos en su pregunta. Si él / ella logra hacer eso de una manera educada sin intimidarlo, él / ella es un guardián.
fuente
Lo realmente significativo es que te aseguras de que sea el tipo de desarrollador experimentado adecuado para lo que necesitas.
A medida que las personas avanzan en sus carreras, tienden a ir en diferentes direcciones en términos de lo que hacen. Es posible que esté entrevistando a personas que son expertas en dirigir grandes equipos de programadores o que trabajan con código heredado complicado y bastante brillante en lo que hacen sin que sean la persona adecuada para su papel. Así que trate de tener una idea de lo que está buscando exactamente de antemano y piense en preguntas que diferencien exactamente el tipo de desarrollador para su trabajo de otras personas.
fuente
He tenido que hacer esto varias veces. Aprendí a hacerlo en un proceso paso a paso.
Mi mayor problema al entrevistar a candidatos de alto rango fue que a menudo se ponían muy nerviosos de ser entrevistados por una persona menor, especialmente aquellos que no podían manejar mis pruebas básicas de codificación. Esfuérzate por no parecer amenazante en las habilidades que muestres a lo largo de la entrevista; concéntrate en ellas, incluso si no pueden responder bien tus preguntas. Trate de sesgar la entrevista con preguntas que puedan responder si fallan en lo básico.
fuente
En términos del proceso de entrevista real, fundamentalmente los trata de la misma manera que a cualquier otra persona que esté contratando. Debería haber un proceso de contratación similar:
Hay muchas otras publicaciones en este sitio que cubren temas generales de discusión que debe cubrir en el proceso de la entrevista. Aquí está mi respuesta a una de ellas .
En todos los puntos del proceso de la entrevista, una persona con experiencia debe demostrar una excelente comprensión de sus especialidades anunciadas. Puede investigarlos, con mucha profundidad, sobre cualquier tema que cubra durante las discusiones. Lleve las preguntas al límite de su nivel de experiencia / comodidad y vea si pueden continuar sin preocupaciones. Si necesita salir del fondo con algo con lo que no tiene mucha experiencia, busque en la web algunas preguntas de muestra (obtenga una selección de ellas), lea y comprenda las respuestas antes de la entrevista , y luego pregunte candidato cualquiera de estas preguntas. No espere que sepan todas las respuestas, así que tenga una selección de preguntas.
Hay dos tipos de ingenieros experimentados que podrías contratar:
1) Experiencia relevante en la industria
Esta es la persona a la que puede llevar su lista de problemas actuales y hablar sobre cómo podrían abordar esos problemas. Debería medir su nivel de comprensión de cada uno de los temas específicos del dominio en su industria. Como se encuentra en esa industria, puede distinguir una respuesta "tonta" de una respuesta "buena" y probablemente también pueda detectar una respuesta "experimentada". A diferencia de otras respuestas, no esperaría que realmente resuelvan sus problemas actuales, eso sucederá cuando los contrate, pero necesita que lo convenzan de que podrían hacerlo una vez que comiencen.
2) Sin experiencia relevante en la industria
Por lo tanto, este candidato posiblemente está cambiando la industria, pero tiene una buena experiencia en las tecnologías / plataformas / habilidades básicas que necesita. Profundice en esos elementos, pero no espere que puedan encontrar soluciones para problemas específicos de dominio, aunque podría hablar de ellos. Por ejemplo, si su empresa es Facebook, y la persona que está entrevistando está interesada en PHP y C ++, no sería realista esperar que conozcan todas las trampas de las granjas de servidores masivas (a menos que lo reclamen en su CV).
fuente
Una cosa que no vi explícitamente señalada es: "Conoces muy bien la tecnología X y suena muy interesante. ¿Podrías explicarme en cinco minutos?"
Como lo más probable es que se espere que pueda mantener el código que finalmente sale de la nueva persona, es crucial que él o ella sea capaz de explicárselo a otros programadores de manera eficiente y bien. Considéralo como habilidades de comunicación.
Se necesita una comprensión profunda para poder conocer a cualquier otro desarrollador en su nivel de habilidad y comunicar pensamientos e ideas a su nivel.
Si la persona no puede comunicarse verbalmente, lo más probable es que solo escriba el código para el compilador, no para el mantenedor.
fuente
Estoy de acuerdo con Steven sobre la tutoría de parte. De hecho, diría que puede hacerle preguntas sobre cuáles son sus puntos de vista sobre la tutoría y cómo lo hace en diferentes escenarios. Luego evalúe en función de la respuesta (puede obtener comentarios de su jefe si lo desea o discutir las respuestas reales en el informe).
También puede hacer preguntas que le haría a un compañero, ya que el candidato probablemente debería ser capaz de resolver o al menos comprender su trabajo.
fuente
definitivamente escoja su cerebro en la entrevista sobre problemas reales y tecnologías que actualmente tiene o tiene la intención de usar
asumiendo que él / ella es un desarrollador senior competente e imaginativo, decida contratar o no basándose en si cree que puede aprender de él / ella y trabajar bien con él / ella
no estás entrevistando a tu futuro jefe, estás entrevistando a tu futuro mentor. No elijas a alguien que sepa todas las respuestas pero no pueda enseñar
fuente
Tome un montón de los problemas que ya ha resuelto. Describa a él lo que se hizo para resolver el problema (manténgalo en tercera persona; no quiere poner en juego su ego personal aquí). Pregúntele qué habría hecho "de manera diferente". De acuerdo con lo que sugiere, debería poder averiguar si eso hubiera sido mejor o peor, conceptualmente, que lo que usted hizo.
fuente
Le recomiendo que lea el libro "Inteligente y hace las cosas: Guía concisa de Joel Spolsky para encontrar el mejor talento técnico" .
Nunca contraté a nadie, pero a veces, cuando era el entrevistado, deseaba que algunos idiotas que solo sabían sobre palabras de moda y me entrevistaban, tuvieran la línea de razonamiento expuesta en ese libro. El texto es muy fluido y es un placer leerlo.
Y no, no estoy haciendo un anuncio solo porque este sitio es del autor del libro. El libro es realmente genial y lo recomendaré a cualquiera que esté en condiciones de contratar personal de TI, especialmente a quienes no entienden la tecnología. Hoy en día es muy común tener un gerente o jefe de proyecto no técnico.
fuente