La Ley de Brooks que aún sigue presente: "Añadir mano de obra a un proyecto de software con retraso lo retrasa aún más"

Frederick Phillips Brooks Jr
Frederick Phillips Brooks JrACM Turing/IA
Reportaje
Añádenos en Google

Elígenos como tu fuente preferida en Google.

Brooks descubrió durante su paso por IBM que añadir cientos de programadores a un proyecto no implicaba que este saliera adelante, y lo ilustró con un libro histórico.

Hablar de IBM es hablar de uno de los gigantes históricos de la informática. Aunque todas las grandes compañías pueden cometer errores, y así mismo le ocurrió a esta durante la década de los 60, un momento clave en la industria tecnológica.

En aquel entonces, IBM se enfrentó a una de las inversiones más arriesgadas de toda su historia: 5.000 millones de dólares de presupuesto para afrontar el desarrollo de la familia de ordenadores System/360, una cifra bastante superior incluso al Proyecto Manhattan, el que creó la infame bomba nuclear de Estados Unidos.

Y el fracaso llegó rápidamente a consecuencia del avance impresionante del hardware, que obligaba a desarrollar todo lo demás de forma muy rápida. IBM tuvo que hacer frente a numerosos retrasos en el desarrollo, a errores previsibles y al aumento desorbitado de los costes con el paso del tiempo.

Al frente de este proyecto se encontraba Frederick Phillips Brooks Jr., un joven doctor de la Universidad de Harvard (Estados Unidos), quien no sabía cómo afrontar la lentitud en la entrega del software. Y, para solucionarlo, IBM hizo otro movimiento que condenaría totalmente al proyecto.

La compañía asumió que la lentitud se debía, en términos clásicos, a la falta de personal para el proyecto, por lo que contrató a muchos más programadores que aceleraran el lanzamiento definitivo del mismo. Con un resultado catastrófico.

Mientras que se unían cientos y cientos de programadores nuevos, el plan de IBM continuaba demorándose; más aún, el desarrollo de su proyecto se hizo aún más lento y, por supuesto, los errores en el código seguían creciendo sin barreras.

Un proyecto retrasado, más programadores y un fracaso final

Brooks no era simplemente un teórico de la informática moderna, sino que representaba una figura totalmente pionera en este terreno, con ideas que rompían totalmente con lo que la industria se empeñaba en asegurar o conservar.

Había estudiado matemáticas aplicadas y, tras pasar por IBM, decidió fundar el Departamento de Ciencias de la Computación en la Universidad de Carolina del Norte en Chapel Hill (Estados Unidos), el lugar donde escribió su obra maestra, The mythical man-month: essays on software engineering.

En este libro de referencia para todo el sector, por cierto, se encuentra una de las frases que pasarían a la historia de la industria: "Añadir mano de obra a un proyecto de software con retraso lo retrasa aún más", en una clara referencia al fracaso de IBM con su proyecto OS/360.

A lo largo de todo el libro, Brooks recuerda constantemente este error en el planteamiento durante su etapa en IBM, que comenzó en 1956. Durante su estancia en la compañía, el matemático pudo poner a prueba superordenadores espectaculares como el IBM 7030 Stretch, así como Harvest.

Lo que Brooks tuvo que enfrentar no es más que el reto actual de la tecnología: el hardware acelera constantemente la evolución del software e, inevitablemente, se genera una brecha notable entre ambos aspectos, lo que da lugar a retrasos que pueden hacer que una compañía pierda millones de dólares.

A diferencia de lo que suele ocurrir con todas las industrias enmarcadas dentro de un sistema capitalista de producción, Brooks aseguraba en su compendio de 15 ensayos que la programación era una actividad artesanal, más propia de los gremios de siglos anteriores.

El oficio de programador, una industria impropia que no funciona como las demás

Brooks hablaba en su libro del "hombre-mes", aunque aquí hablaremos del concepto de "persona-mes", para no dejar a un lado a todas aquellas mujeres que trabajaron –y trabajan– como matemáticas, programadoras e investigadoras en el sector, muchas de ellas figuras clave para lograr hazañas impresionantes de la humanidad, desde el alunizaje en los años 60 hasta la creación de superordenadores.

Sea como sea, el principio de "persona-mes" supone que la cantidad de trabajo que se requiere para un proyecto consiste en una ecuación básica en la que las variables son el número de meses que requiere un programador para alcanzar su tarea, así como el número de trabajadores que una empresa necesita para esto.

Imagina esta ecuación con la analogía de cosechar un campo de trigo: si añades a más trabajadores, el campo de trigo debería cosecharse mucho más rápido. Aunque en el terreno del software hay varios matices.

En primer lugar, Brooks pone fechas concretas. Si para realizar una tarea concreta un programador necesita 12 meses, tendría que ser posible que en 1 mes 12 programadores pudieran solventar el proyecto. Pero esto no es así e implica una falacia.

Hay 2 factores que explican muy bien esto, como es el tiempo de formación propio de un nuevo ingeniero; por más que alguien sea un genio del código, aprender un código nuevo lleva un tiempo que ya de por sí retrasa el proyecto al completo, con tasas de productividad por trabajador que pueden aumentar en semanas o meses, dependiendo de la magnitud del mismo.

Además, hay que entender las estrategias de comunicación interna de cada compañía, y eso es algo que puede que no haya cambiado considerablemente desde los años 60, sobre todo en un sistema que prioriza la productividad sobre la comunicación horizontal.

Ante un sistema totalmente vertical, el tiempo que tarda en llegar un mensaje hacia el trabajador provoca que el sistema sea mucho más lento; más aún, pueden llegar mensajes contradictorios que representen un efecto negativo sobre el programador.

Por tanto, la ecuación final sería evidente: si consideramos a n como el número de desarrolladores de un proyecto concreto, a c como el número de canales de comunicación que  han de gestionarse, c acabaría totalmente representada por la división n multiplicada por (n-1) y dividida a la mitad, con lo cual al aumentar el número de programadores aumentaría el tiempo final en el que se entrega el proyecto.

Brook lo explicó de forma muy brillante en el mismo libro con la siguiente frase: "El embarazo de una mujer dura 9 meses, independientemente de cuántas mujeres se asignen a la tarea". A pesar de que esta afirmación puede resultar algo rotunda en los tiempos que corren, ilustra muy bien su ecuación en la persona-mes.

Para traer la ley de Brooks a lo real y más actual, se puede ejemplificar con lo que ocurrió en la industria tecnológica durante la pandemia de COVID-19, en la que gigantes como Meta, Google, Amazon o Microsoft decidieron duplicar sus plantillas.

Aquella estrategia dio lugar posteriormente a despidos masivos en estas mismas empresas, ya que no habían planificado realmente respecto a los proyectos de software iniciados, sino que habían metido a ingenieros de forma que no se podían adaptar a proyectos ya comenzados –valga decir que no es algo que asuma el autor de estas líneas, sino la perspectiva ofrecida por Brooks–.

En conclusión, Brooks pone de manifiesto que la industria del software no es como otro tipo de industrias, sino más bien como una especie de gremio en el que el aprendiz del oficio ha de estar desde el principio. De lo contrario, las consecuencias podrían ser totalmente las contrarias a las previstas.

Más información sobre: