¿Por qué siento que Agile apesta para el desarrollo de software?

Usted trabaja para un equipo que hace scrum y lo microgestiona como un trabajador de una línea de ensamblaje, tal vez forzándolo a ingresar antes de las 9 o 10 am para el standup diario de la mañana.

O trabajas para un equipo que piensa que sí funciona, pero no lo hace. Tal vez sus stand-ups de 10 minutos se convirtieron en sentadillas de 1 a 2 horas porque las personas se negaron a tener discusiones tangenciales en reuniones separadas limitadas a los asistentes requeridos. Muchos gerentes usan scrum como excusa para hacer que sus horarios sean más convenientes, reuniéndose con todo el equipo en lugar de programar 1: 1 por separado con ingenieros individuales, aunque eso desperdicia mucho tiempo para todos los demás.

O trabajas para un equipo que confundió la anarquía con la agilidad. Agile se trata de construir bucles de retroalimentación anidados a través de un proceso definido para que los problemas se puedan descubrir y solucionar antes cuando el costo es menor. Ágil no significa que no haya reglas.

O usted trabaja para un equipo al que le gusta el concepto de ciclos de lanzamiento rápidos y predecibles, pero no está haciendo las cosas necesarias para que eso suceda, como las pruebas escritas por el desarrollador y la prueba / integración continua porque sus líderes se centran miopemente en las fechas completas del código, ignorando los problemas que resultado con fechas de envío del cliente.

O bien, su mal administrador está usando scrum para que pueda afirmar que aplican las mejores prácticas y luego culpar a los ingenieros por problemas de gestión, como horarios programados.

Las familias felices son todas iguales; toda familia infeliz es infeliz a su manera : Tolstoi.

Utilizo ágil porque es increíble pasar más tiempo en nuevos desarrollos, menos en la corrección de errores y menos en cosas que no serán importantes para el negocio. Con pruebas para cada función y error reproducible durante seis años, casi todos los errores se encuentran antes de que mi código pase a QE a pesar de que hay más de 150 funciones interactivas. La mayoría de las veces enviamos el primer o segundo candidato de lanzamiento. En el improbable caso de que un cliente experimente un error, puede tener una reparación en las 48 horas posteriores a la finalización del código. Los lanzamientos han sido predecibles y de bajo estrés desde que empecé las cosas, incluso cuando tuvimos un crecimiento del 100% año tras año, pasando de pivote a rentabilidad.

No pierdo el tiempo en scrum, y no voy más allá de una conversación inicial con grupos que buscan contratarme.

Porque la mayoría de las organizaciones lo hacen increíblemente mal y terminan con un “medicamento que es peor que la cura”. Los valores y principios fundamentales de Agile son geniales, y ninguna persona cuerda estaría en desacuerdo con ellos. Ninguna persona sensata diría “no, en realidad NO quiero entregar un software valioso! ¡NO quiero deleitar a mis clientes! ¡NO quiero software que tenga alta calidad y bajo riesgo! ”.

El problema es que Agile promueve equipos autónomos autogestionados que están aprendiendo, adaptándose y ajustándose continuamente. Eso funciona bien en una situación como la que puede encontrar en una pequeña startup. Pero esto NO encaja bien dentro de las estructuras tradicionales de comando y control que se encontrarían en una gran organización burocrática como una gran corporación o departamento gubernamental (lo que la gente llama “TI empresarial”).

Entonces, hay tres soluciones a este dilema. Primero, regresa a Cascada. No es genial porque en la mayoría de los casos, Waterfall es terrible (no todos, pero la mayoría, escribí sobre eso con más detalle aquí). Y la mayoría de los gerentes no quieren hacer eso porque los hace parecer dinosaurios obsoletos (probablemente lo sean) y les hace parecer que están admitiendo el fracaso (probablemente lo sean).

En segundo lugar, puedes cambiar tu organización. Puede desmantelar su gran y poderoso departamento de PMO, pasar de un enfoque de proyecto a un enfoque de producto, pasar de un presupuesto anual fijo a un financiamiento discrecional iterativo, pasar de un enfoque en productos a un enfoque en resultados, y así sucesivamente. Estos son grandes cambios difíciles con grandes ramificaciones. La mayoría de las organizaciones no están preparadas para hacer estos cambios.

Por lo tanto, están atrapados entre una roca y un lugar difícil: no pueden regresar y no pueden avanzar. Entonces, ¿qué hacen? Intentan meter una clavija cuadrada en un agujero redondo: adoptan muchas de las trampas de Agile, es decir, se convierten en un culto de carga. Contratan consultores y entrenadores caros y se convencen de que si todo el mundo se pone de pie y habla sobre sprints y reducciones de carga y exige procesos complejos de marco ágil y costosas herramientas de seguimiento de proyectos ágiles, que de repente son ágiles. Lo cual, por supuesto, no tiene sentido y no es ágil en absoluto. ¡El Manifiesto Ágil fue claramente crítico del “proceso” en primer lugar! Decía “personas e interacciones sobre procesos y herramientas”, ¿recuerdas?

Esa es la triste razón por la que Agile parece terrible. Porque casi nadie lo está intentando correctamente. Algunos son. Recomendaría leer “Lean Enterprise” y “Repensar las organizaciones” para comprender algunas formas en que realmente puede funcionar.

More Interesting

¿El desarrollo ágil considera la necesidad de mantener características?

¿Por qué las aplicaciones o los juegos a menudo ofrecen la opción de idioma inglés británico o estadounidense? ¿Es la diferencia realmente notable e importante?

¿Cómo puedo hacer que mi computadora se comporte como una súper computadora con técnicas de programación paralelas? ¿Como funciona esto?

¿Cuál es la validación empírica de la opinión de que scrum funciona mejor que la gestión de proyectos tradicional para el desarrollo de software?

Si solo pudieras ejecutar Linux y no se te permitiera iniciar un sistema operativo en una máquina virtual, ¿cuál sería tu computadora portátil ideal?

¿Qué puede usar para averiguar qué herramientas y tecnologías hay detrás de un sitio web?

¿Cuál es la escala de tiempo para el desarrollo de un motor de búsqueda vertical que cubre aprox. 250,000 sitios?

¿Cuáles son algunas buenas maneras de hacer un seguimiento de la deuda técnica?

¿Cuáles son algunos libros recomendados en VHDL para un desarrollador de software experimentado sin experiencia en diseño de hardware?

¿Cuál es la diferencia (si la hay) entre la ejecución del contrato y las pruebas unitarias? ¿Cuál es el equilibrio adecuado entre ellos?

¿Es 'ágil' fundamentalmente opuesto a cómo operan las grandes empresas?

¿Cómo debe escribir un gerente de producto los requisitos para su equipo de ingeniería donde el entregable es un conjunto de servicios web?

¿Con qué lenguajes de programación puede ser fácil comenzar y mejorar?

¿Por qué la industria del software empresarial considera la nube como el futuro, cuando ha sido la norma durante bastante tiempo?

Cómo ser bueno en C, C ++ y Java y poder borrar las pruebas de aptitud