Sí, esto me pasó a mí.
Fui reclutado para portar un programa de Windows a Mac (Mac es mi especialidad) alrededor del tiempo en que la Mac misma estaba en transición del Mac OS “clásico” a OSX. Me dijeron y me aseguraron que tenía una mano razonablemente libre para hacerlo como quisiera, siempre y cuando todavía fuera el mismo “producto” al final. Pero no vi el código que estaría portando por adelantado.
Cuando entré en él, el programa que estaba transfiriendo resultó ser un programa de DOS, no Windows, e implementó una gran cantidad de cosas para sí mismo que Windows le proporciona, por lo que tenía su propio sistema de ventanas (realmente pobre), su propio sistema de gráficos, incluso sus propios componentes de video y audio. Era mucho más grande de lo que había supuesto, pero estaba bien, sabía que no necesitaba portar todas esas cosas porque el sistema operativo proporcionaba esas cosas. Algunas partes de la base de código se remontan a principios de la década de 1980, por lo que representaba seguir trabajando durante 20 años.
- Incluso con un título en CS, ¿cómo puedo destacar de los millones de otros programadores que hay? ¿Hemos alcanzado la programación máxima? ¿Hay demasiada gente para muy pocos trabajos?
- ¿Cuáles son algunos sitios web que simulan intelectualmente para estudiantes de informática?
- ¿Puedo convertirme en un buen programador sin conocimientos de matemáticas y algoritmos?
- ¿Qué es algo que un joven de 17 años (que se especializa en ciencias de la computación) puede hacer como un trabajo, que no implique la venta minorista o la comida rápida?
- Me apasiona la tecnología. Estudio negocios pero quiero ser programador, ¿qué programas debo aprender y ordenar?
La base de código fue escrita por un estadounidense (esta empresa tenía su sede en el Reino Unido), y la compañía lo voló para que pudiera informarme extensamente sobre cómo funcionaba su código, cómo estaba organizado, etc. Mientras me llevaba bien con él personalmente, una vez que comenzamos a entrar en el código, se convirtió en una pesadilla. Para empezar, era un codificador muy aficionado, y el código estaba extremadamente desorganizado, con cientos de partes no relacionadas que terminaban en un puñado de archivos. Sin embargo, todavía había cientos y cientos de archivos, todos con bits aleatorios de código que podrían haberse agrupado útilmente. Casi no hubo comentarios, ni documentación en línea que explicara para qué eran los diferentes módulos y funciones. Los nombres de variables y funciones no eran descriptivos en su mayoría, sin ningún esquema de nombres que pudiera discernir. Uno de los principales trabajos de esta base de código era proporcionar una forma para que un usuario final escribiera scripts que le permitieran crear presentaciones multimedia, al igual que Flash hizo más tarde. Excepto que el “lenguaje” de secuencias de comandos era solo una colección ad-hoc de material inventado sin ninguna consistencia, por ejemplo, algunos parámetros estaban separados por espacios, otros separados por comas, algunos pasados en un orden, el mismo conjunto de parámetros que describe el El mismo tipo de cosas (un rectángulo, por ejemplo) en otro lugar tenía un orden diferente, y cosas así. El lenguaje de secuencias de comandos se interpretó, pero no tenía una gramática formal ni nada; cada nueva adición al lenguaje de secuencias de comandos se atornillaba al código de una manera muy extraña. Al preguntar sobre esto, estaba claro que el autor no tenía idea de qué era una gramática formal, y mucho menos cómo se podría aplicar en este caso.
Cuando traté de entablar un diálogo sobre las deficiencias de la base de código y el lenguaje de scripting en sí, el programador se puso muy a la defensiva. En lugar de abrirse a la oportunidad (como lo vi) de que alguien con mucha experiencia profesional en codificación (yo) lo arreglara realmente, se enojó y discutió. Él arrogantemente declaró que era un genio y que no sabía nada, y que no había nada en su código que necesitara mejoras. Insistió en que mi trabajo era lograr que esta base de código se ejecutara, sin cambios, ni siquiera reorganizada, en la Mac. Así que mi tarea, como él vio, no era portar su código, era crear un emulador de DOS que ejecutara su código.
Me pregunté brevemente si eso podría ser una opción, entonces no tendría que tocar el código de mierda, pero parecía un enfoque equivocado y una tarea desalentadora. Así que discutí el tema con mi nuevo jefe, recordándole que me había prometido una “mano libre”. Mi suposición era que se llegaría a un compromiso en el que el código podría arreglarse y hacerse más fácil de portar sin cambiarlo realmente (estaba bastante seguro de que el lado de la secuencia de comandos no se cambiaría a corto plazo, así que configuré eso a un lado como un objetivo a largo plazo). Sin embargo, dijo “bueno, si eso es lo que John quiere [que no se puede cambiar nada], entonces esa es la forma en que debe ser”. Eché otro vistazo a la base de código y renuncié esa tarde.
Un mes después, escuché que la compañía había retirado sus fondos (la burbuja de las puntocom acaba de estallar, por lo que de repente todos los VC estaban nerviosos), y se fue a la quiebra. Los derechos del producto fueron vendidos a otra compañía, pero se hundió sin dejar rastro. Unos años más tarde, el Director se convirtió en Flash y todos lo usaron, al menos tiene un lenguaje de script coherente. No estoy diciendo que podrían haber tenido Flash en 2000 si me hubieran escuchado, pero podría haber sido un contendiente. Como estaba era completamente inútil.