Hace poco tuve una entrevista de trabajo en la que me dieron una hora para escribir un código real. No fue una cantidad enorme, probablemente menos de 100 líneas. Después de unos 45 minutos, lo compilé, lo ejecuté y lo puse a funcionar. Puede que haya pasado de 5 a 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 desconcertó 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é habrías hecho si hubieras terminado el código y no se compilara a tiempo".
Según tengo entendido, es un argumento no válido, porque "hacer que el código se compile" para una longitud dada de código generalmente implica corregir un número constante de errores de compilación y toma una cantidad de tiempo bastante constante, que debería ser igual si lo haces Después de que termine de escribir el código, o si lo intercala con su tiempo de codificación. En todo caso, interrumpir la codificación para buscar los puntos y coma que faltan probablemente sería perjudicial para su eficiencia. Excepto en circunstancias extremas cuando experimento con oscuridades alrededor de casos de borde en cosas como funciones virtuales en clases derivadas, etc., parece razonable esperar que el código escrito por un desarrollador experimentado se compile, menos el error de escritura ocasional, e incluso si no lo hace, no es como si tuviera que volver a escribir una parte del código para corregir el error de compilación.
En otro incidente similar, me dieron una base de código incompleta en una entrevista, y me pidieron que la terminara y que hiciera las modificaciones necesarias para ponerla en funcionamiento. Comencé leyendo el código existente, y luego, después de unos minutos (incluso antes de haber terminado de ver el código), el entrevistador me dijo que ya era suficiente. Cuando le pregunté qué habría hecho (es decir, "qué hice mal"), me dijo que habría empezado a hacer que el código se compilara de inmediato.
¿Por qué es eso incluso relevante? En mi opinión y en mi experiencia, si un fragmento de código se compila o no es esencialmente aleatorio, implica cosas como si faltan puntos y coma y tiene poco que ver con la corrección del programa subyacente. (Para mí, centrarse en compilar es como ejecutar un artículo a través de un corrector ortográfico sin revisión para verificar la gramática).
Si me das un fragmento de 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 cómo compilar 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?
Así que mi pregunta es esta: ¿hay algo que me perdí? ¿Hay realmente un beneficio para compilar sobre la marcha? ¿O es esto algún tipo de mito propagado por la comunidad de software de que debe compilar su código con frecuencia?