A lo largo de mi carrera profesional he escuchado lo siguiente en diferentes ámbitos:

“Es normal que el software tenga defectos” o su variante “El software siempre tendrá defectos”

No es normal.

Ustedes no andarían por un puente vehicular, del que saben que tiene defectos. No aceptarían un coche defectuoso o aceptarían una casa con múltiples defectos. Sin embargo, como decía mi profesor Carlos Montes de Oca “el software es tan necesario que le perdonamos que sea malo”.

Se vuelve el cuento de nunca acabar. En general, las organizaciones con este problema dedican entre 65% y 85% del tiempo solo a esta actividad en lugar de producir funciones nuevas, o dedican equipos completos solamente a esto. Algunas organizaciones, con algo de cinismo, la incluyen en los contratos como “fase de estabilización”, que solo es trasladarle el costo al cliente por la mala calidad del desarrollo.

A continuación te presento razones por las que se presenta este comportamiento en organizaciones de software.

No hay cultura de la calidad

Cuando pregunto “¿Quién es responsable de la calidad del software en la organizacion?” suelen responder:

  • El equipo de QA
  • La fase de Testing

Es decir, asumen que la calidad es “algo que sucede en un momento del tiempo” o es una actividad concreta, en lugar de ser un trabajo continuo.

Esto genera una forma de trabajo donde la responsabilidad se diluye. El equipo de desarrollo espera que QA sea quienes encuentren los defectos, y QA espera que desarrollo esté atento a los ciclos de pruebas para reparar cuanto antes. Además, genera conflicto y fricción, sobre todo si ambos grupos solo se involucran en su fase y no colaboran en el resto del ciclo.

Presiones para entregar a Testing rápido

Esto es consecuencia de la pobre cultura de la calidad. Project Managers, Gerentes y Líderes saben, por la experiencia anterior, que la fase con más costo será testing. Por lo tanto, concluyen que una forma de acortarla es iniciarla rápidamente. Presionan para entregar y empezar a probar, en lugar de promover que se aseguren de que lo que entregan aprobará las pruebas rápidamente. El resultado siempre es el opuesto al que esperan: mientras más defectos encuentran, más defectos hay por arreglar.

Watts Humphrey lo dice en su libro “A discipline for software engineering”: “Al llegar a testing, la calidad ya se encuentra dentro del producto”. William Lewis lo remata así: “No se puede agregar calidad a un producto ya terminado”

Presiones para entregar a testing rápido
Imagen: pch.vector para Freepiki

La forma de trabajo es inadecuada

En el punto anterior menciono: mientras más defectos encuentran en testing, más defectos hay por arreglar. Si la forma de trabajo usada para arreglar los bugs es la misma que se usó para crear el código la primera vez, la consecuencia es que inserte más defectos. Puedes observar cosas como:

  • El equipo de desarrollo quiere regresar el código a QA lo más rápido posible (como la primera vez), y no verifica exhaustivamente que ya no hay defectos.
  • Los equipos no comparten información, que puede ayudar a prevenir defectos. Un caso común es que un equipo no comparte cuáles son las ideas de prueba que tiene, o qué cosas le gustaría probar.
  • Cualquier actividad de aseguramiento de calidad como peer review, inspecciones, walkthroughs, etc. es suprimida porque se ve como pérdida de tiempo y lo que urge es entregar a QA.

Deuda técnica

Productos y sistemas que están en desarrollo constante (mejoras y mantenimiento) suelen presentar el problema de la deuda técnica, la cual “se cobra” con el tiempo en forma de fallas y defectos. La deuda técnica es una implementación inadecuada, que se hizo apresuradamente para resolver algo en un momento, pero nunca se reemplazó por la solución correcta. Esto, a la larga, va manifestándose con problemas que son costosos para los equipos, en términos de tiempo.

Aunado a esto, los sistemas están pobre o nulamente documentados. Cuando un ingeniero quiere arreglar un problema, tardará mucho entendiendo qué hace ese código (sobre todo si nunca ha trabajado en esa sección, es nuevo en el equipo o hace mucho tiempo que no explora ese componente). La falta de documentación también nos lleva a otros problemas como duplicar funciones, romper la cohesión de componentes o hacer parches que aumentan la deuda técnica.

¿Qué hacer?

Apréndete y difunde estas dos frases:

  • La buena calidad no es opcional
  • La buena calidad es responsabilidad de todos en el equipo

Lo inicial es establecer una buena cultura de la calidad, que inicia con la responsabilidad compartida. Con base en eso, el equipo desarrollará acuerdos en su forma de trabajo, con los que asegurará la calidad de su software continuamente.

¡Con gusto te apoyo! Dime de qué manera podemos colaborar.

¡Nos vemos en la siguiente entrega!

Sígueme en mis redes:

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.