Revisión de código en la contratación de IT - ¿por qué y cómo debe usarse?

21 de abril de 2016

Uno de los aspectos más importantes pero aún ignorados de la contratación de un desarrollador de software es verificar cómo el candidato está manejando el código y si es capaz de expresar sus pensamientos con un lenguaje de programación particular. Normalmente en la contratación de IT lo hacemos pidiendo al candidato que escriba algún código que resuelva un problema particular. El candidato puede hacerlo solo o en pareja programando con el reclutador (Dar en el blanco con pruebas de codificación en el entorno natural [estudio de caso]). Lo hacemos porque escribir código es una de las cosas más importantes que los desarrolladores hacen a diario. Sin embargo, también debemos recordar que los desarrolladores leen mucho más a menudo que escriben el código fuente. Así que no debemos olvidarnos de verificar si el candidato es capaz de analizar y comprender rápidamente algunos fragmentos de código. Podemos simplemente mostrar algunas impresiones de código o (incluso mejor) dar el IDE con algún proyecto y hacer preguntas relacionadas con lo que está sucediendo aquí. Ahí es donde el reto de revisión de código es realmente útil.

¿Cómo verificar las habilidades de programación de los candidatos durante la entrevista técnica?

En cuanto a lo que se ha dicho anteriormente, vemos que la mayor parte del tiempo durante la entrevista/evaluación técnica lo dedicamos a verificar si el candidato es capaz de resolver algunos retos o problemas de programación. El candidato se centra en comprender y analizar el problema y luego encontrar una solución adecuada. Sin embargo, podemos darnos cuenta de que el candidato se ve obligado a pensar más en "qué hacer" que en "cómo hacer". Cuando le pedimos al candidato que escriba un código que sea capaz de reservar un asiento para un vuelo en determinadas condiciones, el objetivo es enviar la funcionalidad correcta, y la mayoría de las veces, debido al estrés y a la limitación de tiempo, es todo lo que el candidato es capaz de hacer. ¿Hay alguna opción para revertir esta situación y dejar que el candidato se centre en el "cómo"? Sí. Durante los muchos años en los que participé activamente en el sourcing de TI y en la contratación de desarrolladores o arquitectos, utilicé las revisiones de código.

¿Qué es la revisión de código?

Revisión del código es un proceso en el que los programadores verifican el código de los demás para encontrar cualquier problema potencial, error o desviación de las mejores prácticas (si quiere saber más, vaya a Wikipedia). En los últimos años la revisión de código es un elemento imprescindible del proceso de entrega de software. Nos da una gran auditabilidad y una mejor calidad de código, pero también permite un increíble intercambio de conocimientos - la gente puede ahora enseñar y aprender al mismo tiempo, compartiendo experiencias. Pero no quiero convencerte de que hagas cumplir las revisiones de código en tu proceso de desarrollo (que por cierto deberías replantearte si aún no lo estás usando) sino que te muestre por qué y cómo usar las revisiones de código durante la entrevista técnica.

¿Cómo se puede utilizar la revisión de código en el proceso de contratación de TI?

Mostrando al candidato un código que ya está escrito y que funciona (en su mayor parte) como se esperaba, le permitimos centrarse en la calidad de la solución. Haciendo una simple pregunta "¿Qué opinas de este código?" hacemos que el candidato pase a modo de lectura. Lo que es importante mencionar es que algunos desarrolladores están acostumbrados a este tipo de tareas que realizan durante las certificaciones de exámenes, etc. y buscan algunos errores tontos e intencionados como la falta de punto y coma, parámetros incorrectos, clases equivocadas, etc. En mi opinión deberíamos usar un enfoque diferente. Yo siempre he utilizado código que compila correctamente. Yo enfatizo al principio que no hay errores "como los de la certificación" y el candidato debe centrarse en las mejores prácticas, algunos problemas comunes que son difíciles de notar por las herramientas automáticas y pueden causar graves problemas de producción.

Ejemplo de desafío de revisión de código

Por ejemplo en Java eso podría ser invocar thread.run() en lugar de thread.start() lo cual compila correctamente, las pruebas están pasando pero no estamos iniciando un nuevo hilo lo cual puede degradar el rendimiento final. También podemos comprobar si el candidato se da cuenta de que algún método transaccional es invocado fuera del aspecto transaccional, lo que puede causar graves problemas de consistencia en una base de datos.

¿Cómo evaluar los conocimientos de programación basados en la revisión de códigos?

Basándonos en la primera impresión del candidato podemos evaluar su enfoque de la calidad. Si para nosotros el código es realmente feo y está lleno de problemas y el candidato dice algo como "a mí me parece bien", podemos asumir que no ayudará a mejorar la calidad del código en nuestra empresa e incluso la degradará. También es bastante fácil evaluar la experiencia del candidato. Por ejemplo, en unas 60 líneas de código fuente, los desarrolladores junior fueron capaces de encontrar alrededor de 4-5 problemas. Los desarrolladores con más de 8 años de experiencia fueron capaces de encontrar 10. Y los mejores candidatos encontraron alrededor de 15-20 problemas. El mejor candidato me indicó 2 problemas de los que yo no era consciente, y cuando estaba escribiendo el código se incluían más de 30 problemas.

¿Qué debemos esperar que los candidatos comenten? Lo más importante son los temas mencionados anteriormente, problemas que son comunes para una tecnología en particular y que no son visibles a primera vista. Lo siguiente es la legibilidad. El código tiene que ser limpio, bien estructurado y bien nombrado para que cualquier otro desarrollador (no sólo el autor) sea capaz de entenderlo y cambiarlo. Así que los nombres de los métodos o variables - son significativos, no demasiado largos, etc. ¿Son métodos no demasiado grandes y no contienen demasiada lógica. ¿Son las tecnologías utilizadas en el fragmento una buena elección para resolver un problema particular (por ejemplo, si nuestro código está utilizando operaciones de cadena para construir un XML podemos esperar que el candidato señale que hay muchas bibliotecas que fueron creadas para hacerlo de una mejor manera).

Revisión del código en las campañas de evaluación de DevSkiller

En DevSkiller creemos que la revisión del código debe incluirse en la evaluación de las habilidades de programación. Por eso, la mayoría de nuestras campañas de evaluación contienen ese tipo de problema a resolver. También animamos a las empresas a construir sus propias pruebas de codificación que incluyan el desafío de revisión de código. Es bastante conveniente para la mayoría de las empresas, ya que puede utilizar su antigua base de código para preparar dicha tarea. Sólo tiene que hablar con su departamento de TI sobre esto e incluirlo en su proceso de contratación.

Compartir correo

Es más que un simple boletín de noticias

Reciba información útil directamente en su bandeja de entrada y aprenda más sobre la contratación de tecnología.

Verificar y desarrollar las habilidades de codificación sin problemas.

Vea los productos DevSkiller en acción.

Certificaciones de seguridad y cumplimiento. Nos aseguramos de que sus datos estén seguros y protegidos.