Tuve una docena de entrevistas en mi vida (estoy a punto de graduarme) y me pregunto por qué solo una vez me pidieron que leyera y explicara algún código. Aproximadamente, el 90% de los trabajos se trata principalmente de mantener los sistemas existentes. La capacidad de la OMI para leer el código de otra persona es una habilidad importante.
¿Por qué los entrevistadores no lo verifican? *
* Entre mis amigos, soy el único al que se le pidió que revisara algún código.
interview
code-reviews
Lukasz Madon
fuente
fuente
Respuestas:
Cuando estaba haciendo preguntas para la entrevista, lo hice al principio, pero poco a poco lo fui eliminando. Los solicitantes que podrían escribir bien el código en la entrevista podrían leer el código bien en la entrevista. Los solicitantes que no podían leer el código tampoco podían escribirlo. Las preguntas involucradas en la lectura del código realmente no diferenciaban a ningún solicitante.
fuente
Version corta
Si el trabajo consiste en mantener una aplicación, las habilidades que necesita probar durante las entrevistas son:
La capacidad de comprender la gran base de código con su documentación, pruebas unitarias , etc.
La capacidad de refactorizar el código y traer cambios sin romperlo todo.
Pedirle a la gente que lea el código no te ayudará a evaluar esas habilidades.
Versión larga
¿Te pidieron que escribieras el código? En caso afirmativo, como señaló Sign en su respuesta , esto es suficiente. Si generalizamos un poco, una persona que escriba un código fuente claro y fácil de entender podría leer el código fuente escrito por otras personas.
Si no se le pidió que escribiera el código, entonces, probablemente fue entrevistado por una persona del departamento de recursos humanos. Tales entrevistas no pueden ser demasiado técnicas, y en su mayoría no valen nada, ya que no valoran sus habilidades y su capacidad para trabajar bien, sino la cantidad de años que pasó en la universidad y otras cosas que no tienen nada que ver con el trabajo.
Hay algunas razones más para no pedir leer el código para un trabajo de mantenimiento:
1. Es difícil hacerlo de manera confiable
Concretamente, ¿qué harías si fueras un entrevistador? Haz que tus candidatos lean un código. ¿Qué código? ¿En que idioma? ¿Qué tan bien o mal escrito? ¿Con o sin comentarios? ¿Con o sin documentación?
Más importante aún, ¿qué dice sobre el candidato? ¿Qué tan bien se correlaciona con la propia base de código?
Supongamos que tiene que mantener una aplicación VB.NET heredada. Usted sabe que el código fuente es en su mayoría feo y no probado, y algunos comentarios son obsoletos o engañosos. Durante los últimos tres meses, tuvo un desarrollador muy hábil trabajando en la solución; refactorizó y probó la unidad de las partes más críticas de la aplicación, agregó comentarios donde era necesario hacer comentarios y, lo más importante, escribió documentación detallada sobre la arquitectura general, las partes críticas y las trampas.
Ahora está contratando a un desarrollador para mantener esta base de código. Durante una entrevista, ¿le daría un código heredado (feo no probado) o el código que fue refactorizado por el desarrollador anterior?
¿Darías la documentación? Para leer la documentación, el candidato deberá pasar al menos unas horas. Esto hace que sea imposible hacerlo durante una entrevista.
2. Leer un fragmento de código corto no es lo mismo que leer un código de un proyecto familiar
Recuerde, el trabajo es mantener un proyecto. Es difícil mantener una base de código grande los primeros días o semanas cuando no está familiarizado con el proyecto. Es mucho más fácil hacerlo después de unos meses cuando ha escrito toda la documentación y tiene una visión clara de la base de código general.
Lo más importante para probar es si la persona será eficiente esos meses . No le importa si la persona no podrá entender nada durante los primeros dos días.
Al pedirle a una persona que lea un pequeño fragmento de código desde cero, no está probando cómo esta persona podría lidiar con una base de código familiar y documentada de miles de LOC .
3. Mantener el código fuente no es solo leerlo
Cuando mantiene una base de código, la está modificando . Un desarrollador que solo lee código no aporta nada útil a su empresa.
Las habilidades útiles son la capacidad de refactorizar el código , agregar pruebas unitarias , predecir el impacto de un cambio , etc. No prueba esas habilidades pidiéndole a una persona que lea el código durante la entrevista.
fuente
La lectura es una suposición basada en el hecho de que la habilidad está presente para escribir. Considere el concepto en cualquier idioma. La programación es solo un lenguaje para comunicarse entre humanos y máquinas. Considere una comunicación de humano a humano. Si contrataras a alguien para ser un intérprete de japonés, ¿no sería lógico que si pudieran escribir un ensayo de 1,000 palabras sobre un tema en particular pudieran leerlo?
Como programadores, nuestra actividad principal es la creación de código y la traducción de ideas abstractas en implementaciones concretas. Esto generalmente significa escribir. Estoy de acuerdo en que la lectura es igual de crítica, pero en la gran mayoría de los casos, donde la capacidad de escritura está presente, la capacidad de lectura también está presente. El único caso real en el que pude ver una diferencia distinguible sería en un entorno donde hay muchos casos muy complejos que han evolucionado con el tiempo. Sin embargo, incluso dado esto, no esperaría que alguien pueda leerlos y comprenderlos sin al menos algún estudio.
Además, leer el código y explicar lo que crees que hace realmente no expresa a un entrevistador cómo usas tus habilidades de pensamiento crítico. Muestra un poco de análisis, pero la mayoría de los empleadores quieren ver si puedes pensar sin ser colocado en una caja. Quieren saber si puede comprender los conceptos sin el beneficio (o incluso la muleta) del código existente para decirle qué o cómo hacer algo.
fuente
En el pasado solía pensar que la lectura del código debería ser algo demostrado en las entrevistas, pero con el tiempo me di cuenta de que esto es una pérdida de tiempo tanto para el entrevistador como para el entrevistado. ¿Por qué? Porque incluso los malos programadores pueden leer un fragmento de código.
Ser capaz de juzgar la capacidad de alguien para leer el código solo se vuelve relevante cuando se mira algo complejo o un código que abarca muchas clases y archivos. Ser capaz de rastrear el código para descubrir lo que está haciendo es un rasgo deseable, pero simplemente no hay tiempo suficiente para que alguien presente un buen ejemplo (no el código de producción) ni hay tiempo en una entrevista para hacer esa pregunta. .
Entonces, los malos codificadores pueden leer el código, pero no pueden escribir bien el código. Pedir ver ejemplos de trabajo de un candidato o pedirle a un candidato que escriba un código en la entrevista son mejores indicadores de su habilidad. Si pueden escribir código limpio y conciso, es probable que puedan leer el código bien.
Le pregunto a cada candidato que estoy entrevistando una variación del problema de FizzBuzz . Es rápido, simple y normalmente puede elegir codificadores malos mucho más rápido que cualquier otra cosa que haya encontrado. Un buen programador lo obtendrá de manera rápida y fácil y le dará un vistazo rápido a su estilo de codificación y proceso de pensamiento.
fuente