No hay balas de plata
«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.[1] 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 en que no hay ninguna bala de plata, él cree que 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.[2]
El argumento
editarEl 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 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 estas 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 que 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.
Lectura adicional
editar- Brooks, Fred P. (1986). «No Silver Bullet — Essence and Accident in Software Engineering». Proceedings of the IFIP Tenth World Computing Conference: 1069-1076.
- — (April 1987). «No Silver Bullet — Essence and Accidents of Software Engineering». IEEE Computer 20 (4): 10-19.
- — (1975). The Mythical Man-Month. Addison-Wesley. ISBN 0-201-00650-2.
- — (1995). Chap. 16. «"No Silver Bullet — Essence and Accident"». The Mythical Man Month (Anniversary Edition with four new chapters edición) (Addison-Wesley). ISBN 0-201-83595-9.
- — (1995). Chap. 17. «"'No Silver Bullet' Refired"». The Mythical Man Month (Anniversary Edition with four new chapters edición) (Addison-Wesley). ISBN 0-201-83595-9.
- No hay balas de plata
Véase también
editar- Ingeniería de software
- Historia de la ingeniería del software
- Creación de prototipos de software, una de las principales estrategias contra la complejidad esencial en "No Silver Bullet"
- Crisis del software
- Hediondez del código
Referencias
editarEnlaces externos
editar- No Silver Bullet: Essence and Accidents of Software Engineering, by Frederick P. Brooks, Jr.
- No hay balas de plata: Lo esencial y lo accidental en la Ingeniería del Software, by Frederick P. Brooks, Jr.