Recientemente tuve una entrevista de trabajo en la que me dieron una hora para escribir un código real. No fue una gran cantidad, probablemente menos de 100 líneas. Después de unos 45 minutos, lo compilé, lo ejecuté y lo puse a trabajar. Es posible que haya pasado entre 5 y 10 minutos resolviendo errores de compilación y un par de errores menores, pero en general fue muy sencillo. (Por cierto, recibí una oferta de ellos).
Sin embargo, lo que me dejó perplejo fue que después de entregar el código completo, el entrevistador me dijo que lo único que hice mal fue "no compilar a medida que avanzo". Le pregunté cuál es la diferencia, y él dijo "qué hubieras hecho si hubieras terminado el código y no se hubiera compilado a tiempo".
Según tengo entendido, ese es un argumento no válido, porque "hacer que el código se compile" para una determinada longitud de código generalmente implica la fijación de un número constante de errores de compilación y lleva una cantidad de tiempo bastante constante, que debería ser lo mismo si lo hace después de usted termine de escribir el código, o si lo intercala con su tiempo de codificación. En todo caso, interrumpir su codificación para buscar puntos y comas faltantes probablemente sería perjudicial para su eficiencia. Excepto en circunstancias extremas cuando estoy experimentando con obscuridades alrededor de casos extremos en cosas como funciones virtuales en clases derivadas, etc., parece razonable esperar que el código escrito por un desarrollador experimentado compile, menos el error de tipeo ocasional, e incluso si no es así, '
En otro incidente similar, me dieron una base de código incompleta en una entrevista y me pidieron que terminara y realizara las modificaciones necesarias para que funcione. Comencé leyendo el código existente, y luego de unos minutos (incluso antes de terminar de mirar el código), el entrevistador me dijo que eso era suficiente. Cuando le pregunté qué habría hecho (es decir, "qué hice mal"), me dijo que habría comenzado obteniendo inmediatamente el código para compilar.
¿Por qué es eso relevante? En mi opinión y en mi experiencia, si una pieza de código se compila o no es esencialmente aleatoria, involucra cosas como si faltan o no puntos y coma, y tiene poco que ver con la corrección del programa subyacente. (Para mí, centrarse en la compilación es como ejecutar un artículo a través de un corrector ortográfico sin corregir para revisar la gramática).
Si me das un código incompleto, lo primero que haré será leerlo. Ni siquiera intentaré compilarlo hasta que sepa qué está haciendo el código y sé que el algoritmo es correcto.
De todos modos, estos han sido solo un par de incidentes recientes, pero en general he escuchado a muchos desarrolladores hablar sobre la compilación de su código a medida que avanzan, y sin embargo, nadie ha podido decirme el beneficio de hacerlo. Entiendo los beneficios de probar su código a medida que avanza, pero ¿por qué compilar?
Entonces mi pregunta es esta: ¿hay algo que me haya perdido? ¿Existe realmente un beneficio compilar a medida que avanza? ¿O es algún tipo de mito propagado por la comunidad del software que debe compilar su código con frecuencia?