Un Día En La Vida de Un Cacho de Software
Hace unos meses, me encontraba presentando en una reunión donde había un revisor de larga trayectoria y barba consecuentemente grisácea. El hombre traía consigo décadas de experiencia en proyectos de software surgidos bajo el ala de agencias espaciales europeas y gigantes de la industria. Mientras le explicaba partes de cierto software en desarrollo, el tipo me para en un momento y me pregunta cuál era nuestro “enfoque” al momento de escribir software. Sin ningún ánimo de querer sobrarlo, pero algo confundido por la pregunta, le respondo:
— Primero pensamos en qué se necesita, y después lo programamos.
Ni bien lo dije, se me vino a la cabeza el famoso paper de Winston Royce (1970)—vilipendiado hasta el hartazgo por las hordas de agile bros y malinterpretado ad nauseam como precursor del waterfall—donde arranca con un modelo tan similar a mi descripción como insultantemente básico:
Ahora bien, el revisor en cuestión sintió que le estaba tomando el pelo y así arrancó con un sermón donde me dió una interminable lista de cosas que había que hacer antes de poner un solo dedo en el teclado para definir siquiera una nueva variable.
Joel Spolsky en su libro “The Best Software Writing”, invita a Eric Lippert—en aquel entonces en Microsoft—a escribir un capítulo que se llama “Cuántos ingenieros de Microsoft hacen falta para cambiar una lamparita?”. El capítulo es un excelente racconto sobre cuántas almas harían falta para implementar 5 hipotéticas líneas de código, acorde a los procesos de Microsoft. Reproduzco la lista a continuación. Harían falta:
Un desarrollador para implementar las 5 líneas de código en la función ChangeLightBulbWindowHandleEx
Un product manager para escribir la especificación
Un experto en localización para revisar la especificación
Un experto en usabilidad para revisar la especificación
Al menos un desarrollador, un tester y un project manager para discutir y revisar vulnerabilidades de seguridad
Un project manager para agregar el modelo de seguridad a la especificación
Un tester para escribir el plan de test
Un líder de test para definir el cronograma de testing
Un tester para escribir los casos de test y agregarlos a automatizaciones varias
Tres o cuatro testers para particular en el “bug bash”
Un escritor técnico para escribir la documentación
Un revisor técnico para leer y revisar la documentación
Un editor para revisar que la documentación siga los estándares de estilo
Un manager de documentación para integrar la documentación al cuerpo general de documentación
Veinticinco traductores para traducir la documentación y los mensajes de error a todos los lenguajes soportados. Favor notar que los jefes de los traductores viven en Irlanda (lenguajes europeos) y Japón (lenguajes asiáticos), los cuales están a varios husos horarios de diferencia.
Un equipo de managers senior para coordinar a toda esta gente y justificar los costos con los popes.
Cinco miserables líneas de código. Decenas de personas y semanas de trabajo. Seguro, en Microsoft el costo de escribir software medio pelo es prohibitivamente alto: su software es usado por millones de personas y otras miles de millones de líneas de código son desarrolladas arriba de sus motores y frameworks. Para escribir esas cinco líneas de código de morondanga, prácticamente hay que venir con un plan de negocios que las justifiquen.
Por supuesto, el veterano no me sermoneó la lista de Microsoft, pero se le parecía bastante. Repitió la palabra “especificación” un número doloroso de veces. Se entiende; el hombre venía de lugares donde, tal vez, se podían dar el gusto de alargar el proceso hasta el hartazgo. Sin comprometerme a nada, le agradecí por la sapiencia y procedí a otras cuestiones.
Antes de que la complejidad e inercia reinante nos empujen a la inevitable sobre-intelectualización del proceso de desarrollo de software, la receta es simple y casera, como unos buenos ñoquis de la Nonna:
Pensar
Programar
Asegurarse que nada de lo que acabamos de escribir vaya a destruir el Universo
Opcional: complicar a gusto.
Si tan solo el bueno de Winston hubiese hecho más énfasis en el tercer ingrediente, hoy no sería el epítome de la ineficiencia en los ojos de los cabezas de termo ágiles.
Yo mientras tanto disfruto mientras pueda simplemente ir y cambiar la lamparita.