Por qué aprender sólo un lenguaje de programación no es suficiente para hacer buen software

Hace ya casi 30 años, Brooks (sí, el famoso Brooks el del mítico hombre mes, sí, el que inspiró tantas ideas ahora llamadas ágiles) dividió en «esenciales» y «accidentales» las propiedades del software (fue en “No Silver Bullet. Essence and Accidents of Software Engineering”, 1987).
Las esenciales, son las inherentes al software, sin ellas que el software no sería software, igual que sin ruedas una bici no es una bici. Las “esenciales” son:

  • Complejidad (el software es complejo por naturaleza),
  • Conformidad (el software debe cumplir con limitaciones arbitrarias impuestas por personas y reglas de negocio)
  • Modificabilidad
  • Invisibilidad. 

 
Y las accidentales, aspectos no inherentes, como el lenguaje de programación (el software podría construirse con Java o C#), la marca del gestor de BBDD, el estándar usado, etc. Elementos y tecnología que cambian e incluso quedan obsoletos con el tiempo. Se podría construir funcionalmente el software de nuevo sustituyendo la parte “accidental” por otra.
Con el tiempo, después de muchos, muchos proyectos, la ingeniería del software fue creando un amplio cuerpo de conocimiento que nos ha enseñado la mejor manera de trabajar y de resolver problemas asociados a la parte “esencial” del software (e igualmente también se ha creado mucho conocimiento sobre como trabajar con la accidental).
Por ejemplo, al conocimiento “esencial” debemos el porqué no hay que utilizar el “go to”, por qué las estructuras de datos deben estar ocultas en un sistema software, los principios de diseño (como aquello de cuando hagas un diseño software no olvides los principios SOLID del tío Bob), las razones del polimorfismo, por qué dos clases de dominio concretas no deben depender entre ellas, etc.
Pero demasiadas ocasiones se olvida o desconoce la parte “esencial” buscando conocer sólo la “accidental” (el lenguaje de programación, por ejemplo).
Incluso desconocer que hay, y que es muy necesario conocer, una parte “esencial” hace que muchos caigan en el engaño,  pensando que existen “balas de plata” “accidentales” (de Brooks viene el término, tan usado en tecnología, aprovecho y te dejo aquel post de dónde viene esa frase tan usada en tecnología de “no existen silver bullets”, la historia te va a gustar), que resolverán problemas cuya solución realmente cae en… “lo esencial”.

jgarzas

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *