«No hay balas de plata — Esencia y accidentes en la ingeniería del software» («No Silver Bullet — Essence and Accidents of Software Engineering») es el título de un artículo científico sobre ingeniería del software presentado en 1986 por Fred Brooks con ocasión del X Congreso Mundial de Informática de la IFIP. Brooks argumenta que «no hay un simple desarrollo en tecnología o técnica de gestión, que por sí solo prometa incluso una mejora en la productividad, fiabilidad, simplicidad, en un orden de magnitud [por diez] dentro de una década». También afirma que, en el desarrollo de software, «no podemos esperar siquiera ver una ganancia del doble cada dos años», como la que hay en el desarrollo del hardware.
Brooks hace una distinción entre la complejidad accidental y la complejidad esencial y afirma que la mayoría de lo que ahora hacen los ingenieros de software está dedicado a lo esencial, así que reducir todas las actividades accidentales a cero no dará una mejora de un orden de magnitud. Brooks aboga por abordar las partes esenciales del proceso de software. Mientras insiste que no hay ninguna bala de plata, él cree una serie de innovaciones atacando la complejidad esencial podría conducir a importantes mejoras (tal vez mayor que diez veces en un período de diez años).
El artículo y las propias reflexiones de Brooks sobre esto, «'No Silver Bullet' Refired» («'No hay bala de plata' Redisparado», pueden encontrarse en la edición de aniversario de The Mythical Man-Month.
El corazón del argumento es la distinción entre la complejidad accidental y la complejidad esencial. La complejidad accidental se refiere a los problemas que creamos nosotros mismos y que pueden corregirse; por ejemplo, los detalles de escribir y optimizar de código en lenguaje ensamblador o los retrasos causados por el procesamiento por lotes. La complejidad esencial es causada por el problema a resolver, y nada puede eliminarla; Si el usuario desea un programa para hacer 30 cosas diferentes, entonces esas 30 cosas son esenciales y el programa debe hacer esas 30 cosas diferentes.
Brooks afirma que hemos limpiado gran parte de la complejidad accidental, y los programadores de hoy pasan la mayor parte de su tiempo abordando la complejidad esencial. Una tecnología, que había hecho una mejora significativa en el área de complejidad accidental fue la invención de lenguajes de programación de alto nivel, como Fortran en ese tiempo. Lenguajes de hoy, como C, C++, C# y Java, son considerados como mejoras, pero no del mismo orden de magnitud.[cita requerida]
Brooks aboga por el "crecimiento" orgánico del software a través del desarrollo incremental. Sugiere la elaboración y la implementación del programa principal y los subprogramas justo al principio, llenando las subsecciones de trabajo más tarde. Brooks cree que esta forma de programación apasiona a los ingenieros y proporciona un sistema de trabajo en cada etapa de desarrollo.
Brooks prosigue en argumentar que hay una diferencia entre diseñadores "buenos" y "magníficos". Postula que, como la programación es un proceso creativo, algunos diseñadores son intrínsecamente mejores que otros. Sugiere que hay tanto como una diferencia de diez veces entre un diseñador común y uno magnífico. Entonces Brooks sugiere tratar a los diseñadores estrellas igual de bien como a los gerentes estrellas, proporcionándoles no sólo igualdad de remuneración, sino también todos los privilegios del estatus mayor: despacho grande, personal, fondos para viajes, etc.
Escribe un comentario o lo que quieras sobre No Silver Bullet (directo, no tienes que registrarte)
Comentarios
(de más nuevos a más antiguos)