Nunca te enseñan cómo construir software de calidad
Muchos ingenieros sostienen que la educación en informática y las prácticas típicas de prácticas profesionales se centran en algoritmos y en entregar funciones, mientras ofrecen poca formación sistemática en la calidad del software, las pruebas y la mantenibilidad a largo plazo. Quienes comentan lo contrastan con campos como la aviación y la fabricación, que incorporan QA riguroso y procesos de postmortem, pero señalan que esas prácticas son costosas y a menudo chocan con los incentivos empresariales de moverse rápido. El debate se centra en si la “calidad” puede enseñarse formalmente, cuánto solo puede aprenderse con la experiencia y cómo justificar el trabajo de QA en organizaciones que optimizan principalmente para la velocidad y los resultados a corto plazo.
Qué significa “software de calidad” (y si se puede enseñar)
- Muchos sostienen que “calidad” es un término vago: ¿es fiabilidad, rendimiento, mantenibilidad, UX o valor de negocio?
- Algunos dicen que la calidad se aprende sobre todo mediante la práctica y la retroalimentación, no con teoría de aula.
- Otros insisten en que sí existe una disciplina académica y de ingeniería (ingeniería de software, QA, métodos formales) que enseña calidad, pero su adopción es desigual.
Comparaciones con otros campos (aviación, fabricación, ingeniería)
- La aviación y la fabricación se citan como ejemplos en los que la calidad se enseña sistemáticamente mediante listas de verificación, regulación, revisiones de incidentes y controles de proceso.
- Algunos sugieren que una lista de verificación comparable de 500 elementos para software reduciría drásticamente los errores, pero mataría la velocidad al estilo startup.
- Contraargumento: incluso en la ingeniería “dura”, los defectos, retiradas y fallos son comunes; todo es “suficientemente bueno”, no perfecto.
CS universitario vs. Ingeniería de Software
- Queja recurrente: los programas de CS se centran en algoritmos, compiladores, teoría y sistemas de bajo nivel, pero apenas en QA, pruebas, estrategia de depuración o diseño de sistemas a gran escala.
- Otros cuentan haber cursado asignaturas serias de ingeniería de software: pruebas, SDLC, UML, proyectos en equipo, proyectos finales que simulan el mantenimiento del mundo real.
- Hay debate sobre si las universidades deberían ser formación para el trabajo o educación pura, especialmente por el aumento de las matrículas y las expectativas laborales.
QA, pruebas y proceso
- Tema fuerte: QA a menudo se añade al final (o se omite) por presión de calendario; las “QA sprints” y las pruebas tardías se señalan como antipatrón.
- Quienes lo defienden proponen: pruebas escritas junto con el código, CI/CD, automatización, pruebas de instantáneas/visuales, cobertura más pruebas de mutación/fuzz, y métricas cuidadosas (con conciencia de la ley de Goodhart).
- Algunos señalan que existen equipos de alta calidad donde el 40–60% del esfuerzo se dedica a pruebas y trabajo de calidad, pero no son la norma.
Errores, afirmaciones de “sin bugs” y métodos formales
- Consenso: el software absolutamente libre de bugs es prácticamente inalcanzable más allá de programas triviales; “cero bugs” se ve mejor como una asíntota o como “sin defectos conocidos frente a una especificación”.
- Debate sobre las definiciones de “bug” (desviación de la especificación vs. cualquier comportamiento inesperado) y sobre si los errores de especificación cuentan.
- Los métodos formales y las pruebas pueden eliminar clases de defectos en dominios críticos para la seguridad, pero son caros, de alcance limitado y no arreglan especificaciones malas o incompletas.
Economía, incentivos y compensaciones
- Muchos señalan que la dirección suele priorizar la velocidad y las funciones visibles por encima de la calidad porque las métricas de negocio rara vez recompensan la mantenibilidad a largo plazo.
- Los costes de calidad son difusos y tardíos (deuda técnica, equipos más lentos, tiempo desperdiciado de los usuarios), mientras que el coste de desarrollo es inmediato y medible.
- Algunos sostienen que, a gran escala, incluso los errores “raros” se vuelven comunes y provocan una “muerte por mil cortes”, pero otros afirman que la mayoría de los mercados tolera software mediocre si sale rápido y resuelve un problema.