Cuales son las actividades que generan mas desperdicio en el desarrollo de software, en requerimiento, en las iteraciones, en delivery

Continuando la discusión desde Dudas sobre gestión ágil:

En mi experiencia hay dos, en orden decreciente de importancia

  1. Hacer productos que no se necesitaban en primera instancia. Taichi Ohno incluso lo decía aplicado un ámbito tan distinto como la manufactura: el peor desperdicio es la sobreproducción (ver este fragmento de Implementing Lean Software Development de Mary y Tom Poppendieck)
  2. Entregar productos con Deuda Técnica, lo que implicará en el futuro estar dedicados a pagar con intereses esa deuda, lo que se llama “Demanda por falla”. Yo he visto organizaciones de software “normales” con una demanda por falla de un 50%. Es decir, dedican la mitad de sus esfuerzos a pagar deudas del pasado antes de avanzar hacia nuevos pasos.

Súper cierto, estoy de acuerdo con Agustín. Aunque creo que el primer punto quizás es “más fácil” dado que es responsabilidad de todos, liderado por el PO. En el segundo caso, a pesar de que es responsabilidad de todos, el PO muchas veces no es tan técnico e incluso no entiende que es la deuda técnica. De ahí la importancia de “educar” al PO y hacerlo entender el trade off que significa aumentar la deuda técnica (o no abordarla) versus el seguir construyendo features del producto.

El gran problema de entregar productos que nadie usa es que cuando el producto no les gusta, nadie te lo dice.

Creo que desde ese punto de vista, tener estadísticas de uso de páginas, por usuario, debería ser útil. De hecho de eso se trata el A/B testing: tener estadísticas de uso de páginas y componentes, de modo que si un botón no se usa, probar cosas nuevas (hipótesis y pruebas).

Eso de la “deuda técnica” se resuelve con tests, es mucho más simple.

Si algo está bien construido pero no es la solución correcta (puede que al usuario le guste la funcionalidad, pero no ve el botón). Eso es más dificil, pero no imposible.