El software, la calidad y las personas

Leo una entrada en http://equipro.blogspot.com/2007/11/ingenieros-informticos-quienes.html y me enciendo.

La entrada habla entre otras cosas de las carencias de la ingeniería informática. De los bajos sueldos, del constante cambio y del esfuerzo continuo por parte de los profesionales para estar al día. Habla también de que para los consumidores, muchas veces no es rentable la inversión en TI.

Si queréis entender el resto del artículo, leed la entrada.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Disculpadme que sea tan radical, pero yo tengo dos cosas claras sobre el mundo de la informática.

En primer lugar, la informática es la ciencia que ha permitido y seguirá permitiendo a lo largo de este siglo un avance altamente significativo y a un ritmo pavoroso de todas las demás ramas de la ciencia.

La automatización, la velocidad, la capacidad de cálculo y la facilidad de acceso a la información que nos permiten los ordenadores hoy en día son indispensables para seguir avanzando en todas las áreas de conocimiento.

No concibo un genetista sin su analizador de secuencias; sería imposible.

No concibo una multinacional apuntando sus cifras en libros de cuentas hechos a mano; ¡Impensable!

La pyme o la ONG más pequeñas que nos podamos encontrar. No llegarían a donde llegan sin las herramientas ampliamente difundidas que les proporciona la informática.

Se ha generado tal dependencia, que todos los de esta profesión nos vemos obligados a asumirla, y a tratar de aportar soluciones allí donde haya necesidad de un tratamiento automatizado.

Del mismo modo, todos los que están al otro lado, los dependientes, se ven obligados a aguantar los inconvenientes y las metidas de pata que tan a menudo cometemos.

No es por justificar, ni por infravalorar a las demás, pero es que las soluciones que debemos aportar la mayoría de las veces son tan complejas que me parece bastante normal que las cosas no funcionen a la primera, ni a la segunda, ni a la tercera.

¿Cuánto tiempo ha necesitado la ingeniería civil para proporcionar las metodologías de construcción que utilizamos actualmente? ¿Y la industria química para la producción de petróleo? Ah! que destilar petróleo aún sale carísimo! y no hay alternativas a las técnicas actuales! Ah!

Pongamos como ejemplo el correo electrónico. ¿Os habéis parado a pensar todo lo que hay por detrás de esta aparentemente tan sencilla utilidad? Servidores, líneas de comunicación, protocolos, seguridad, encriptación... ¿Os habéis parado por un momento a pensar la cantidad de trabajo que se ahorra una persona cada vez que envía un e-mail? ¿Y el poder y las capacidades que proporcionan esta herramienta a una organización? En el caso anterior de la multinacional, ¿Cuánta gente haría falta para mantener un sistema de correspondencia no electrónico en una empresa con sede en varios países? ¿Cuánto se ahorra, en la compra de un par de ordenadores y cuatro licencias? No estoy en absoluto de acuerdo en que los costes de la informática no sean asumibles. Definitivamente no.

La informática aporta un valor añadido como ninguna otra herramienta, a un coste irrisorio.

Lo segundo que tengo claro, es que no hemos aprendido y aún no nos hemos dado cuenta, que para ganarnos la confianza de los usuarios, es fundamental generar productos de calidad. Y no lo estamos haciendo. La calidad que logramos, se debe al procedimiento ensayo-error. Y no puede ser.

En cualquier otra industria, un producto fabricado debe pasar infinidad de controles de calidad antes de llegar a las manos del consumidor. Y estos controles de calidad vienen bien definidos y se establecen incluso a nivel legislativo.

Quien produce cualquier bien de consumo, es responsable de su calidad.

¿Porqué en la ingeniería del software no ocurre esto?

Porqué cualquier consultora puede ir a una empresa y decir: "Sí, sí, yo te lo hago, y en la mitad de tiempo que mi competencia!". ¿Por qué puede entregar un producto sin apenas haber sido probado, y alegar toda clase de desentendimientos en la definición de requisitos? Y lo que es peor aún, ¿Por qué después de haberle entregado un producto que no funciona, puede pasarse meses y meses cobrando un mantenimiento para corregir los errores de un producto mal fabricado? ¡Es de locos!

Por poner un ejemplo gráfico a esta situación:

Voy y le encargo una casa a un constructor. Tengo muchísima prisa en tenerla lista, con lo cual, me decantaré por aquella constructora que me acabe la casa en el menor tiempo posible.

Entiendo que una casa de tres habitaciones es una casa de tres habitaciones. Puede que algún constructor utilice ladrillos cuadrados y otro la haga con pladur, pero las tres habitaciones, que es lo que quiero, las voy a tener.

Viene uno y me dice: - La tengo lista en 12 meses. 10.000 euros. -

Viene otro y me dice: - Te la tengo lista en 6 meses. 9.000 euros. -

Como no soy tonto, desconfío del que me ofrece hacerla en la mitad de tiempo. Nadie da duros a pesetas.

Por lo cual me harto de decirle que lo que quiero son las 3 habitaciones. ¡Tengo prisa, así que no me puedo andar con remilgos! El constructor me asegura una y otra vez que tendré mis tres habitaciones.

Empezamos con la ejecución del proyecto; El constructor viene a hacerme toda clase de preguntas acerca del color de las paredes, los dibujos del parqué, la altura del rodapiés, la calidad del pladur. Claro, yo tampoco es que esté muy puesto en temas de construcción. A duras penas nos entendemos, pero bueno. Como tampoco hay un estándar de definición de requisitos, en un lenguaje comprensible para una persona sin conocimientos técnicos (en realidad en la construcción, sí existen estos medios. Los planos, la memoria de calidades, etc. En la informática no tenemos). Entre idas y venidas, voy viendo que además de las 3 habitaciones me vendrá bien tener ventanas, con lo cual se lo sugiero al constructor. Este me responde: "¡Es que no habíamos previsto las ventanas! Nos retrasaremos un mes más si agregamos ventanas. 1500 euros más."

Bueno, un mes tampoco es demasiado. - Adelante con ello. -

Han pasado 4 meses, y al ir a ver la obra, solamente veo los cimientos.

- ¡Pero como puede ser esto! - le digo al constructor.

- No, no te preocupes. Es que estábamos construyendo la casa en bloques. A partir de ahora, solo hay que montarlos. Tranquilo, que dentro de tres meses la tendrás lista. -

Pasan los meses, y al sexto mes, el constructor aparece diciendo: -verás, es que hemos tenido mucha rotación entre los albañiles, y los bloques no fueron al ritmo previsto, con lo cual nos retrasaremos un mes más. –

Sería totalmente entendible, de no ser porque la casa ya tendría que estar lista, yo contaba con ella, y además tengo una prisa increíble.

Seguimos adelante.

Una semana antes de la fecha de entrega, 8 meses después de la fecha de inicio, viene el constructor y me dice: - Vamos a necesitar quince días más. Es que hemos tenido problemas con las ventanas, que las hemos agregar después del inicio, y eso nos ha provocado incongruencias en el anclaje con las paredes. Como las paredes que te incluimos en el presupuesto no estaban preparadas para llevar ventanas, pues hemos tenido que rediseñarlas. Pero bueno, al menos no te las cobraremos. –

¡Estoy indignado! Encima va y le echa la culpa a mis ventanas. ¡Pero si lo lógico es que las habitaciones tengan ventanas!

Vamos el día de la entrega, y me encuentro con que a la casa le faltan trozos de techo, y el suelo no está completamente montado. Y las ventanas son más pequeñas de los que me esperaba. De esto último, no está claro quien tiene la culpa; como no lo pusimos por escrito...

El constructor se excusa diciendo que la casa ya la podemos habitar. Que total estamos en verano, y que no va a llover, con lo cual, de momento, el techo no nos hará demasiada falta. Pero que en cualquier caso, su equipo de albañiles trabajará, sin cobrarnos nada, mientras nosotros habitamos tranquilamente.

A este punto, decir, que aún no había mirado el interior de la casa.

El día de la mudanza, me pongo a mirar más detenidamente los detalles. Polvo por todas partes, albañiles aún polulando por todas partes, completando el techo. Ladrillos por en medio. ¡Y lo peor! Intento acceder a las habitaciones, y NO HAY PUERTAS!

Llamo furioso al constructor. Este me responde: - oye, que en ningún momento hablamos de poner puertas. Es más, mira el documento de requisitos. ¡Ves! por ninguna parte pone que necesites puertas. –

Indignado, diez meses después de haber empezado, para dormir por las noches, me tengo que meter por las ventanas. Menos mal que lo sugerí al principio, que si no lo llego a ver, no sé dónde estaríamos ahora.

Cuando hablamos de para cuando van a estar listas las puertas, el constructor me dice que como es una mejora de las especificaciones iniciales, lo tengo que pagar yo, y encima va a tardar tres meses. Con lo cual, más albañiles, más incomodidades. Y vamos a tener que rediseñar las paredes, que no admiten puertas.

Y si a esto le sumamos, mil detalles menos importantes que aunque evidentes para mi, que sé muy bien cómo quiero mi casa, el constructor, ajeno a mis gustos y costumbres, es incapaz de ver, pues nos vamos a los 18 meses, que encima corren por mi cuenta.

Porqué se da esta situación. Porque nadie pide demasiadas responsabilidades a una empresa de software. No hay legislación. No hay estándares de calidad. No se hacen pruebas. No pasamos una inspección de habitabilidad antes de subir a producción.

Cuando los usuarios empiecen a exigir que el software comprado tenga cierta garantía de calidad, cuando desarrollemos una documentación y una manera de poder transmitir sin demasiado margen de dudas lo que vamos a construir, cuando para entregar tengamos que aportar pruebas de haber testeado rigurosamente el producto, entonces, las empresas se esforzarán en reclutar personal capacitado, con experiencia, que garantice la aplicación de una metodología, que deberé desarrollar. Sólo entonces, las empresas se verán obligadas a explotar lo suficiente un producto, hasta que se haya completado el retorno de la inversión. Sólo entonces, las empresas de desarrollo de software perderán tiempo en determinar la plataforma, los componentes, etc., que usarán para desarrollar. Sólo entonces nos veremos obligados a desarrollar métricas eficaces, y metodologías que nos permitan sobresalir en igualdad de condiciones. Porque lo que propicia la ausencia de todo esto, es que cualquiera pueda vender duros a pesetas.

Actualización:

Colaboración de VTortola. Un excelente relato ilustrativo.
http://www.ati.es/novatica/1996/124/if124.html

Me ha venido a la mente este anuncio, precisamente de una consultora, que viene a mostrar lo que hacen. Si los programadores construyésemos aviones...

Filed under:

Comments

No Comments