Reclutar buenos desarrolladores de software es difícil. Un currículum puede ser sólido, una prueba técnica impecable, pero aun así la entrevista puede no revelar si la persona se integrará bien en tu equipo.
En HDWEBSOFT, consideramos las entrevistas con desarrolladores como una conversación, no como un examen. Si bien evaluamos cuidadosamente las habilidades técnicas, también prestamos mucha atención a cómo los candidatos explican, formulan preguntas, reciben sugerencias y transforman un problema vago en una solución práctica. Esto es fundamental, ya sea que estemos desarrollando un software a medida./services/custom-software-development-services) equipo o brindando soporte a un cliente a través de un modelo de ingeniería extendido.
En esta publicación, compartiré el enfoque de entrevista que utilizamos al contratar ingenieros de software. Está escrito principalmente para entrevistadores técnicos, pero los especialistas en recursos humanos, los líderes de equipo y los fundadores también pueden usarlo para comprender qué debe revelar una buena entrevista con un desarrollador de software.
También recomiendo leer La guía del ingeniero de software de Chuck Groom para entrevistar a ingenieros de software y Preguntas de entrevista de trabajo para desarrolladores Ambos comparten perspectivas útiles para hacer las entrevistas más efectivas y respetuosas.
El público
Este artículo es especialmente útil para entrevistadores técnicos que pueden mantener una conversación práctica con los candidatos. Algunos ejemplos pueden resultar difíciles para lectores no técnicos, pero la idea principal es simple: una buena entrevista debe revelar cómo piensa, se comunica y crece un desarrollador.
Define tus criterios primero
Antes de hacer preguntas, define qué quieres evaluar. Cada empresa tiene sus propios criterios de contratación, pero en nuestra experiencia, los más importantes son:
-
Comunicación: ¿Puede el candidato explicarse con claridad, hacer preguntas útiles y trabajar en equipo?
-
Nivel actual: ¿Qué puede hacer el candidato ahora mismo?
-
Potencial: ¿En qué puede convertirse el candidato el próximo mes, el próximo año y en los próximos cinco o diez años?
Para HDWEBSOFT, la comunicación es el primer criterio. Trabajamos como una empresa de desarrollo de software offshoreCon clientes en diferentes países, incluso un desarrollador experimentado tendrá dificultades si no puede comunicarse con claridad.
Comience con un enfoque abierto y tranquilo
Antes de comenzar la parte técnica, creamos un ambiente de entrevista claro. Les decimos a los candidatos algo como esto:
No se preocupen. Nadie lo sabe todo. El objetivo de esta entrevista no es demostrar que conocen todas las respuestas. Queremos ver si podemos colaborar, analizar problemas juntos y encontrar buenas soluciones.
Este sencillo mensaje ayuda a los candidatos a relajarse. También establece las expectativas correctas: no solo estamos evaluando su memoria; estamos observando cómo trabajan.
Evalúe la comunicación durante toda la entrevista
La mejor manera de entrevistar a desarrolladores de software es evaluar la comunicación durante toda la entrevista, no como una sección aparte.
La comunicación se manifiesta cuando los candidatos describen un proyecto anterior, aclaran requisitos, explican una decisión técnica o admiten lo que desconocen. Estos momentos suelen ser más valiosos que una respuesta perfecta de libro de texto.
¿Pueden explicar qué han hecho antes?
Una pregunta útil es pedirles a los candidatos que describan un proyecto en el que hayan trabajado. Por ejemplo:
-
¿Cuál es tu proyecto favorito?
-
¿Quiénes usaron el producto y qué valor les aportó?
-
¿Cuáles fueron los puntos técnicos más importantes de ese proyecto?
-
¿Cuál fue tu contribución real?
La respuesta esperada no es un discurso extenso con todos los detalles técnicos. Una buena respuesta es breve, clara y se centra en los puntos importantes.
Esto nos ayuda a evaluar dos cosas:
-
¿Puede el candidato comprender un proyecto en su conjunto?
-
¿Puede el candidato identificar los puntos clave en lugar de perderse en los detalles?
Si un desarrollador no tiene una idea clara de lo que construyó, es difícil confiar en que realmente haya comprendido el trabajo. Los desarrolladores que pueden resumir bien un proyecto anterior suelen tener mayor potencial para comprender también proyectos futuros.
¿Pueden convertir una explicación en especificaciones técnicas?
Otro método de entrevista útil es proporcionar a los candidatos un pequeño requisito y trabajar con ellos para encontrar una solución. La dificultad debe ajustarse al nivel y la experiencia del candidato.
El objetivo no siempre es ver si conocen la respuesta de inmediato. A veces, la mejor señal es si pueden hacer buenas preguntas, comprender las pistas y ajustar su razonamiento.
A continuación, algunos ejemplos.
Ejemplo 1: Una pregunta sencilla para un principiante
Pregunta: Son la 1 de la madrugada en Nueva York. ¿Qué hora es en Vietnam?
Si el candidato no puede responder de inmediato, le permito hacer preguntas. Una buena pregunta podría ser: “¿Cuál es la zona horaria de Nueva York?”.
Si no conocen la fórmula, puedo explicarles que Vietnam usa UTC+7 y que Nueva York tiene su propia zona horaria según la fecha. Luego observo si pueden usar esa explicación para calcular la respuesta.
Lo importante no es la geografía. Lo importante es si pueden hacer preguntas relevantes y usar la nueva información.
Ejemplo 2: Combinando la pregunta con un algoritmo común
Pregunta: Tengo un array ordenado con 1000 elementos. Quiero comprobar si un valor existe en ese array. En el peor de los casos de búsqueda binaria, ¿cuántas comprobaciones son necesarias?
Si el candidato olvida la búsqueda binaria, le explico cómo funciona. Si puede seguir la explicación y calcular la respuesta, sigue siendo una buena señal.
Esta pregunta evalúa más que la memoria. Evalúa si pueden comprender un concepto rápidamente y aplicarlo.
Ejemplo 3: Para un desarrollador PHP, desarrollador backend o desarrollador full-stack
Pregunta: Olvídese de PHP Session por un momento. Si tuviera que escribir su propia biblioteca para realizar la misma tarea, ¿qué construiría?
Esta pregunta puede ser difícil incluso para desarrolladores PHP con algunos años de experiencia. Si no están seguros, les explico cómo funciona PHP Session y veo si pueden razonar a partir de ahí.
Muchos desarrolladores trabajan principalmente con frameworks de alto nivel como CakePHP, Laravel, Symfony o herramientas similares. Eso está bien, pero a veces hace que subestimen fundamentos importantes. Esta pregunta ayuda a revelar si comprenden lo que sucede dentro del framework, lo cual es especialmente importante cuando se necesita contratar desarrolladores PHP para un producto de larga duración.
Ejemplo 4: Para un desarrollador full-stack
Pregunta: ¿Cómo construirías un [carrito de compras y proceso de pago de comercio electrónico] normal?/industries/e-commerce-software-development-services)?
Si el candidato maneja bien el flujo básico, le planteo la siguiente pregunta: Supongamos que un producto tiene un inventario limitado. ¿Cómo se aseguraría de que la cantidad comprada nunca supere ese límite?
Este es un buen tema al evaluar candidatos para trabajos con un alto componente de backend. Un desarrollador junior podría hablar sobre el comportamiento básico del carrito de compra. Un desarrollador más experimentado podría abordar la validación, las transacciones, el bloqueo, las condiciones de carrera, el estado del pago y la reversión de pedidos. Si su proyecto depende de estas decisiones, podría valer la pena trabajar con desarrolladores backend experimentados./hire-us/backend-developer).
La forma en que exploran el problema nos dice mucho sobre su verdadero nivel.
Ejemplo 5: Un problema técnico menos común pero interesante
Pregunta: Tengo una página de administración con una lista de productos. Cuando un usuario abre la página de edición de un producto, ¿cómo podemos asegurarnos de que nadie más pueda editar el mismo producto al mismo tiempo?
Esto se relaciona principalmente con el bloqueo de recursos. Algunos candidatos pueden responder directamente. Si no, los oriento hacia un caso más familiar: el registro de usuarios, donde el sistema debe impedir que se creen dos usuarios con el mismo correo electrónico simultáneamente.
Luego pregunto: “¿Se puede aplicar una práctica similar aquí?”
Esta pregunta es útil porque muestra si los candidatos pueden transferir conocimientos de un problema a otro.
Lo que revelan estas preguntas
Según los ejemplos anteriores, la entrevista suele conducir a dos situaciones:
-
El candidato responde con fluidez porque ya comprende bien el tema.
-
El candidato no sabe la respuesta de inmediato, así que la analizamos juntos.
El segundo caso suele ser más interesante. Durante este proceso, podemos observar si el candidato formula preguntas útiles, comprende las aclaraciones, razona lógicamente y avanza hacia una solución.
Esto nos permite evaluar varios aspectos simultáneamente:
-
Comunicación: ¿Puede preguntar y explicar con claridad?
-
Nivel actual: ¿Qué tipo de problemas ha resuelto hasta ahora?
-
Potencial: ¿Puede convertirse en un solucionador de problemas o solo se limita a tareas repetitivas?
Por eso, la discusión basada en escenarios es uno de los mejores enfoques para entrevistar a desarrolladores de software. Permite condensar muchas señales en una sola conversación.
Comprobar el nivel actual del candidato
No me extenderé demasiado en esta parte, ya que existen muchas listas de preguntas técnicas. Java tiene sus propias preguntas comunes. Lo mismo ocurre con .NET, Python, iOS, Android, React Native, Node.js, React, Vue, JavaScript, CSS y muchas otras áreas. Para los equipos de producto, esto suele estar directamente relacionado con el tipo de servicios de desarrollo de software que necesitan.
Esas preguntas siguen siendo útiles. Necesitas saber si el candidato puede desempeñar el trabajo hoy en día. Pero una lista de preguntas de referencia no debería ser toda la entrevista.
Úsalas para comprobar el nivel técnico actual del candidato y luego utiliza escenarios prácticos para comprender su forma de pensar. Para puestos centrados en la calidad, incluye preguntas sobre estrategia de pruebas y servicios de automatización de pruebas, no solo la sintaxis de codificación.
Evaluar el potencial del candidato
El nivel actual importa, pero el potencial importa aún más. Si el nivel actual tiene un peso de 1, el potencial puede tener un peso de 10.
¿Por qué? Porque el desarrollo de software cambia rápidamente. Un desarrollador que solo conoce las herramientas actuales puede estancarse. Un desarrollador con sólidos fundamentos, curiosidad y capacidad para resolver problemas puede seguir mejorando durante años.
Una mejor formación puede ayudar, pero no lo es todo
Un buen desarrollador de software no siempre proviene de una universidad prestigiosa. Muchos ingenieros excelentes son autodidactas o provienen de escuelas comunes.
Sin embargo, una buena formación puede proporcionar una base más sólida. Puede que no genere una ventaja visible hoy, pero a largo plazo, una base sólida puede ayudar a un desarrollador a aprender más rápido y llegar más lejos.
Mayor conocimiento previo significa mayor potencial
La formación es solo un indicador. El conocimiento previo es más importante. Valoramos a los candidatos que comprenden los fundamentos en profundidad.
Estructuras de datos y algoritmos
Para los fundamentos, estructuras de datos y algoritmos Las técnicas básicas de programación siguen siendo importantes.
Muchos desarrolladores de aplicaciones se centran únicamente en el desarrollo de aplicaciones de alto nivel: Java Spring, .NET Framework, Node.js, Python, PHP, React, Vue, etc. Esto es comprensible, ya que son las herramientas que utilizan a diario.
Sin embargo, los desarrolladores que comprenden las estructuras de datos y los algoritmos suelen tener una base más sólida para la resolución de problemas, el pensamiento orientado al rendimiento y el diseño de sistemas.
Técnicas de programación
Las técnicas básicas de programación también son importantes. En HDWEBSOFT, esperamos que los desarrolladores comprendan las prácticas de código limpio y los principios SOLID, y no solo que repitan sus definiciones.
POO, patrones de diseño y UML
La mayoría de los desarrolladores afirman utilizar la programación orientada a objetos. Sin embargo, sigue siendo difícil encontrar desarrolladores con un pensamiento POO verdaderamente sólido.
Muchas personas pueden explicar la abstracción, la herencia y el polimorfismo. Menos personas pueden señalar una línea de su propio código y explicar qué principio expresa.
También me impresiona cuando un desarrollador domina varios patrones de diseño y sabe cuándo no utilizarlos. Los patrones de diseño no son simples recetas. Son un lenguaje común para comprender la estructura, la intención y el código de otros.
Conclusión: la mejor manera de entrevistar a desarrolladores de software
Entonces, ¿cuál es la mejor manera de entrevistar a desarrolladores de software?
No existe una única pregunta mágica. Una buena entrevista combina diferentes tipos de preguntas. Utilice preguntas técnicas para evaluar las habilidades reales. Utilice preguntas fundamentales para verificar la experiencia. Utilice escenarios prácticos para evaluar la comunicación, la resolución de problemas, la adaptabilidad y el potencial.
En HDWEBSOFT, este enfoque nos ayuda a contratar ingenieros que pueden contribuir desde ahora y crecer con los desafíos futuros. Además, humaniza la entrevista: se asemeja menos a una prueba y más a una conversación laboral real.