Why is most software so bad?

Hay software realmente muy bueno en todos los sentidos. Piensa en el Mars Rovers, Google, y el Proyecto Genoma Humano. Eso es software de calidad! Hace quince años, la mayoría de la gente, y sobre todo la mayoría de los expertos, habría dicho que cada uno de estos ejemplos era imposible.
Por otro lado, si nos fijamos en el «promedio» del código podemos llorar. Su estructura es terrible, y los programadores no piensan en su corrección, algoritmos, estructuras de datos, o en el mantenimiento.
¿Cómo podemos arreglar el caos en que estamos?
En teoría, la respuesta es simple: educar mejor a nuestros desarrolladores software, un uso más apropiado de los métodos de diseño, y diseñar pensando en la flexibilidad y el largo plazo. Recompensar lo correcto, lo solido y lo seguro. Sancionar la dejadez.
(Entrevista a Bjarne Stroustrup en Technology Review)

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.

0 comentarios en “Why is most software so bad?”

  1. El problema es que la mayor parte de los desarrollos son para ayer, con fases de diseño inexistentes o a posteriori, y con el objetivo de que funcione como sea.
    He visto codigos en C con instrucciones goto.
    En las ‘carnicas’ suele haber ademas un problema con la plantilla: no tiene la formación adecuada (no hace falta ser ingeniero informático), no tiene la vocación (trabaja en esto dado que en su especialización es parcticamente imposible, programadores licenciados en Historia, Filologia o Filosofia), no tienen la motivación (se cobra una miseria y la perspectiva de futuro es nula)

  2. Pingback: Bitacoras.com

  3. Es un problema también de concepción de producto y exigencia del jefe de desarrollo. Un caso emblemático que conozco es una empresa que desarrolla «software as a service» con un único producto estrella (y hasta aquí puedo leer 🙂 ).Esta empresa busca solamente programadores sin ninguna aspiración de ingenieros (y sin ninguno en el equipo que actue como tal, y estoy hablando de ingenieros en general, y no de ingenieros en informática). El metodo de desarrollo es «programo algo y si funciona más o menos bien lo pongo, y sino lo quito». El resultado tiende a inmantenible a pasos agigantados.

  4. Yo no creo que la mayoría del software sea malo, creo qu ela mayoría del software es mucho mejor que otros productos no-software que hay por ahí.
    En «Software SuperHeroes» (un libro muy recomendable para pasar el rato) definen el software como la actividad más compleja a la que la humanidad se ha enfrentado hasta la fecha. Sí, nos infravaloramos todos los días, pero para hacer software se necesitan profesionales más cualificados que para muchas otras cosas.
    En cuanto a «diseñar pensando en la flexibilidad y el largo plazo» creo que es uno de los enormes errores que se inculca a los estudiantes. Aquí me gustó siempre la aproximación que leí de Linus Torvalds en el Kernel de Linux: design for today, not for tomorrow. Siempre que diseñas algo para «que sea modificado mañana» te equivocas, siempre. Haz que el código sea fácilmente legible y modificable, y resuelve el problema que tienes hoy, que el de mañana ya lo resolverás y seguro que con más datos.
    Todo el «overdesign» que hace los programas ridículos e inmantenibles se debe a «que sea modificable mañana».

Dejar un comentario

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