PARABOLA DE LOS DOS PROGRAMADORES
Érase una vez las empresas "AAA-AUTOMATED APPLICATIONS ASSOCIATION"
y la "CCCC--CONSOLIDATED COMPUTERIZED CAPITAL CORPORATION",
desconocidas ente si. Ambas decidieron que necesitaban el mismo programa
para prestar un determinado servicio.
AAA contrato a un analista-programador, Alan, para que resolviera el
problema.
CCCC encargó el trabajo a un programador junior, contratado para ver si era
tan bueno como decía.
Alan, que poseía experiencia en la realización de proyectos de programación
difíciles, decidió emplear el método PQR de diseño estructurado.
En función de ello, solicito a su jefe de departamento que nombrase a otros
tres programadores para formar un equipo de programación. A continuación
el equipo puso manos a la obra, elaborando cantidad de informes previos de
análisis del problema.
En CCCC, Charles dedico un tiempo a considerar el problema. Sus
compañeros de trabajo observaban que a menudo se sentaba con los pies
sobre su escritorio, mientras bebía café. A veces se le veía sentado frente al
terminal, pero su compañero de oficina podía adivinar que en realidad estaba
jugando a marcianitos, por su forma rítmica de teclear.
A estas alturas, el equipo de AAA estaba empezando a codificar.
Los programadores dedicaban la mitad de su tiempo a escribir y recopilar
códigos y pasaban el resto del día reunidos, hablando de las interfaces entre
los diversos módulos.
El compañero de oficina de Charles advirtió que este finalmente había dejado
de jugar a marcianitos. En lugar de ello, su tiempo transcurría bebiendo café
con sus pies sobre la mesa y haciendo garabatos en trozos de papel. Por sus
garabatos no se podía decir que estuviese jugando a "tres en raya" pero
tampoco parecían tener mucho sentido.
Han pasado dos meses. E1 equipo de AAA ya ha elaborado el calendario de
implantación del programa. Dentro de dos meses tendrán la primera versión
del mismo. Tras un periodo de dos meses mas, para verificarlo y mejorarlo
debería quedar concluida la versión completa del mismo.
En este momento, el jefe de Charles ya se ha cansado de verle holgazanear.
Decide enfrentarse a él. Pero cuando se dirige a su oficina se queda
sorprendido de verle muy enfrascado, introduciendo códigos en el terminal.
Así que decide prorrogar el encuentro. Hablan un poco y se marcha. No
obstante, empieza a vigilar de cerca a Charles, para enfrentarse a él en
cuanto se le presente la ocasión. Como en realidad no deseaba tener una
conversación desagradable le alegra comprobar que Charles parece estar
ocupado la mayor parte del tiempo. Incluso se le ha visto ir tarde a comer y quedarse a trabajar fuera de horas de oficina dos o tres días a la semana.
Transcurridos tres meses, Charles anuncia que ha finalizado el proyecto,
presenta un programa de 500 lineas. El programa esta escrito con claridad, y
una vez verificado, ejecuta todo lo que se le exigía.
De hecho, posee incluso unos rasgos adicionales que podrían mejorar en gran
medida la rentabilidad del programa. Este se somete a prueba y, con excepción
de un descuido que se corrige rápidamente, funciona de manera satisfactoria.
El equipo de AAA ya ha concluido dos de los 4 módulos principales que
configuran su programa. Mientras se elaboran los dos restantes, aquellos se
someten a prueba.
Tres semanas después, Alan anuncia que ya esta lista la versión preliminar del
programa una semana antes de lo previsto. El programa se somete a prueba.
Los usuarios detectan una serie de fallos y deficiencias, a parte de los
previstos. Como Alan aclara, no hay por qué engañarse. Después de todo, se
tata de una versión preliminar en donde los fallos son normales.
Transcurridos unos dos meses mas, el equipo ha concluido su versión
definitiva del programa. Esta constituida por 2500 líneas de código
(si le sorprende esta cifra, pregúntele a un programador profesional. Le
dirá que es bastante típico un ratio de 5 a 1 entre el programa más largo y el más corto, y normalmente estos últimos son los mejores). Una vez verificada,
parece satisfacer la mayor parte de lo que se pedía. Contiene un par de
omisiones, y el formato de su input de datos es muy confuso. Sin
embargo, la compañía decide instalar el programa: siempre puede instruir
al personal de entrada de datos para que lo hagan en el formato requerido.
Se remite el programa a algunos programadores de mantenimiento para
que subsanen las omisiones.
Desenlace
En un principio, el supervisor de Charles se quedo impresionado, pero a
medida que iba leyendo el código fuente, se dio cuenta de que el proyecto era
en realidad mucho más sencillo de lo que habían pensado.
Ahora parecía claro que no representaba un reto ni siquiera para un
programador principiante. Charles había hecho cinco lineas de código por día.
Representaba un promedio superior al normal. Pero, teniendo en cuenta la
sencillez del programa no tenia nada de excepcional.
Ademas, su supervisor no olvidaba los meses que había estado haciendo el
vago. En la revisión salarial siguiente, Charles recibió un aumento igual a la
mitad correspondiente a la mitad de la inflación correspondiente a dicho
periodo. No se le ascendió de puesto. Al cabo de un año aproximadamente,
abandono CCCC desanimado.
En AAA, Alan recibió felicitaciones por haber concluido el proyecto en el
tiempo previsto. Su jefe echo un vistazo al programa. Después de hojearlo
durante unos minutos, vio que en él se respetaban las normas de la compañía
sobre la programación estructurada. No obstante rápidamente desecho la idea
de leerse todo el programa; parecía bastante incomprensible. En este momento
se daba cuenta de que el proyecto era en realidad mucho más complejo de lo
que había pensado en un principio y felicito a Alan por su trabajo.
Cada programador del equipo había producido 3 lineas de código por día.
Era un promedio normal, pero, teniendo en cuenta la complejidad del
programa, podía considerarse como excepcional. Se concedió a Alan un
elevado aumento de sueldo y se le ascendió a Analista de Sistemas en
recompensa a su trabajo.
Se invita al lector a que extraiga sus propias conclusiones.