¿Qué significa ser ágil?

17

Tenemos un proyecto que todos dicen que haremos de forma ágil, pero dudo que hayamos entendido claramente qué es ágil.

En proyectos anteriores tuvimos reuniones de planificación, luego definimos el registro de respaldo del producto y asignamos el trabajo a los desarrolladores en sprints de 2 a 3 semanas. Todas las mañanas teníamos reuniones de scrum (que parecían durar media hora cada vez) y cada desarrollador seguía con eso después de eso. Casi nadie escribió ninguna prueba hasta que al final del sprint y el trabajo que no se completó se agregó al siguiente sprint.

Los desarrolladores apenas se hablaban y no había TDD involucrado en el desarrollo. De hecho, la mayoría de los desarrolladores tenían una especificación al principio y solo la siguieron durante las 2 o 3 semanas para las que se arregló el sprint. Apenas hubo comunicación con el cliente / titular de la participación.

El control de calidad usualmente se involucró unos meses después y para entonces encontramos requisitos faltantes que aumentaron aún más la cantidad de trabajo que teníamos que hacer. Claramente no hubo un ciclo de retroalimentación.

Entonces mi pregunta es, ¿dónde nos equivocamos y cómo puedo evitar que el equipo cometa los mismos errores?

JD01
fuente
44
Parece un duplicado de programmers.stackexchange.com/questions/15928/… Parece que ustedes realmente no sabían qué hacer y carecían de una administración real para hacer cumplir el proceso
sylvanaar
1
Sí, estoy de acuerdo contigo al 100%. Mi gerente leyó un libro sobre ágil y simplemente siguió adelante (aunque muy mal). Utilicé TDD en el lado del servidor del proyecto, pero los demás no querían aprenderlo o ver el beneficio del mismo. Teníamos un marco (en el lado del cliente) que tardó una eternidad y el desarrollador seguía argumentando que solo necesitaba seguir adelante (sin interferencia).
JD01
3
Aunque el título parece ser un duplicado, creo que esta pregunta es útil por sí sola porque muchos equipos leen explicaciones "genéricas" de lo que es ágil (e incluso toman clases de capacitación y contratan consultores) y luego se encuentran exactamente con los mismos problemas que JD01 equipo de todos modos. Entonces, para poner la pregunta en el contexto de este equipo específico, podría arrojar luz sobre problemas específicos y soluciones que otras preguntas más generales no abordarían.
DXM

Respuestas:

27

Lo que está describiendo no es Ágil por definición (Manifiesto Ágil) , es Cascada con reuniones de estado diarias. Ágil significa adaptarse fácilmente al cambio, si no hay un ciclo de retroalimentación interactivo con el propietario del producto y, por lo tanto, con los clientes, ¿qué cambio está ocurriendo?

Agile se trata de fallas rápidas, a través de una comunicación constante con el propietario / clientes del producto. Es mejor fallar más temprano que tarde, se hace menos trabajo y se "pierde" menos. Y no te quedas atascado con el argumento de que "no tenemos tiempo para hacerlo correctamente, ya que pasamos tanto tiempo haciéndolo mal, solo necesitamos continuar en este mismo camino, a pesar de que conduce al fracaso ".

Parece que tu administración está haciendo "SCRUM, pero ..." donde el "pero" es donde tiran todas las cosas de SCRUM que no entienden o con las que no están de acuerdo y simplemente hacen las cosas de la misma manera aleatoria que siempre, pero con nuevos nombres de palabras de moda brillantes para todo.

En SCRUM, la lucha diaria NO se trata de entregar el estado a la administración, es forzar la interacción del desarrollador, para que sepa lo que están haciendo los miembros de su equipo y puedan ayudarse mutuamente y no duplicar el trabajo. Si lleva más de 45 segundos por persona, lo está haciendo mal. Se trata de transparencia para el equipo, si una persona está dando el mismo estado varios días en algo que debería ser un solo día de trabajo, el equipo puede resolver el problema de las personas más temprano que tarde.

Si no está probando el código de los demás como está escrito, entonces tampoco lo está haciendo correctamente. Las pruebas deben integrarse en el proceso, no un pensamiento posterior. El control de calidad debe incluirse en las sesiones de planificación y proporcionar estimaciones sobre cuánto tiempo tomarán las cosas para probar.

Si no está cumpliendo con los compromisos de Sprint y está volcando las cosas, no lo está haciendo correctamente. Los sprints son sobre compromisos si te comprometes a hacer demasiado trabajo, deja de hacerlo, no hay forma de que puedas introducir ninguna predictibilidad o repetibilidad si no puedes comprometerte con precisión con los entregables.


fuente
1
Gracias Jarrod por tu respuesta. ¿Debería TDD ser aparte de ágil? Fue difícil lograr que los desarrolladores pensaran de esta manera. Al final, como mencioné, hicieron algunas pruebas al final (si lo recordaban) y dijeron que era TDD. Estoy de acuerdo con todo lo que has dicho. El ciclo de retroalimentación era prácticamente inexistente porque mi gerente sentía que estaba interfiriendo con el "marco" que tardó meses y meses en corregirse. Para entonces estábamos atascados implementando funcionalidades que no cumplían con los requisitos del cliente.
JD01
3
TDD es un arenque rojo, no estoy de acuerdo personalmente como religión, ¿de qué sirven las pruebas de código que no satisfacen las necesidades de los clientes? Y dado que las pruebas deben estar integradas y nada entregado y demo que no haya sido probado, TDD como mantra es bastante inútil. Si no funciona, no lo demuestres. Si no lo demuestra, el propietario / cliente del producto no puede aceptarlo.
2
Comencé haciendo mucho TDD, pero ahora he cambiado a BDD, que está más en línea con las necesidades de los clientes como pruebas de aceptación. Aunque siento que TDD ayudó a crear diseños que no habría visto de otra manera además de proporcionar pruebas.
JD01
1
La razón clave para TDD es permitir la refactorización continua, reduciendo la tasa de acumulación de deuda técnica. Si hay un código que tiene miedo de cambiar porque volver a realizar la prueba sería demasiado costoso, el proyecto tendrá un final prematuro.
Kevin Cline
He escuchado a muchas personas predicar TDD, pero nunca lo he visto en la práctica. Personalmente mi cerebro no funciona de esa manera. Tiendo a tener una buena idea general de lo que estoy escribiendo, pero a medida que escribo estoy reequilibrando y moviendo las cosas. Escribir las pruebas primero simplemente no es posible para mí. Escribo pruebas unitarias, generalmente como parte de la escritura del código, pero se escriben a medida que escribo el código, no de antemano.
DaveG
9

Jarrod proporcionó una buena respuesta (+1 a eso) y me gustaría extender un poco más sobre eso.

Agile no se trata solo de fallas rápidas y comentarios entre el propietario del producto (cliente) y el equipo; se trata de una retroalimentación rápida entre todos los interesados ​​involucrados. Ser verdaderamente ágil (y esto es directamente del manifiesto ) es reconocer que el proceso existe solo para ayudar a los desarrolladores a entregar un mejor producto. El proceso de personas arriba significa que tan pronto como el equipo reconoce que su proceso existente no funciona, lo cambia y lo hace funcionar.

"Scrum pero ..." también es un problema, pero hay dos caras de esta moneda. Si observa el manifiesto, verá que se trata del equipo y de hacer que las herramientas / procesos funcionen para usted. No hay dos equipos iguales y, por lo tanto, cada uno operará de manera ligeramente diferente, y eso está bien. Ciertamente, podría tomar toda la metodología Scrum e intentar seguirla al pie de la letra y ver si eso funciona para su equipo.

Otra alternativa es en lugar de impulsar otro proceso en el equipo y hacer que todos sigan lo que Scrum le dice que haga, pruebe el enfoque ágil : comuníquese con el equipo y vea si juntos pueden identificar áreas problemáticas y soluciones para cada uno. Luego, introduzca gradualmente cambios en su forma de trabajar para que se aborden los problemas.

Puede llevar un poco de tiempo, pero ...

  1. Primero solucionará los problemas más importantes, lo que tendrá el mayor impacto en la capacidad de sus equipos para entregar productos
  2. Al identificar problemas inmediatos y participar en la búsqueda de soluciones, los miembros de su equipo comprenderán por qué ciertas prácticas son importantes y no las harán simplemente porque se les dice que las hagan.

Si dibujamos una analogía entre Scrum y un patrón de diseño, trabajar de la manera que propuse sería similar a la codificación en un patrón, donde mantiene el código lo más simple posible y solo converge en un patrón de diseño cuando es necesario. A diferencia de simplemente elegir un patrón de diseño y rodar con él (es decir, seleccionar ciegamente Scrum y todos sus procesos como un conjunto), lo que a veces hace que el código sea más complejo y difícil de mantener de lo que podría haber sido de otra manera.

La clave para entender es que ágil no se trata de crear un nuevo proceso para hacer las cosas; Se trata de un cambio continuo y un ajuste constante a los procesos / prácticas existentes.

DXM
fuente
1
para el votante: ¿te gustaría elaborar? ¿Arruiné algunas plumas porque dije que no adoptaras ciegamente Scrum o fue algo más?
DXM
2
si tonto Haré +1 para tu información detallada.
Michael Durrant
1
1 para " La clave para entender es que ágil no se trata de dar con un nuevo proceso para hacer las cosas, se trata de un cambio continuo y constante adaptación a los procesos / prácticas existentes. "
David 'el jengibre calva'
-2

Si el equipo (y su administración) realmente quieren "ser ágiles", deberían comenzar leyendo y discutiendo como equipo el Manifiesto Ágil y sus directores. Luego, elija una de las metodologías ágiles que se han creado ( Scrum , por ejemplo), obtenga capacitación y comience siguiendo eso. Recomiendo seguirlo bastante de cerca por un tiempo antes de modificarlo, pero solo soy yo.

También deben analizar profundamente las prácticas de ingeniería que se utilizan para apoyar la metodología de proyecto ágil particular elegida.

StevenV
fuente
2
Voté en contra porque no creo que esto responda la pregunta original.
Bryan Oakley
1
bastante justo, supongo. Me refería a la premisa inicial del OP: "Tenemos un proyecto que todos dicen que haremos de forma ágil, pero dudo que hayamos entendido claramente qué es ágil". Muchas personas dicen que son, o que quieren, "hacer ágil" o "ser ágiles" sin entender qué es realmente la filosofía ágil o las metodologías que la respaldan.
StevenV
3
No estoy de acuerdo con seguir ciegamente una metodología particular por completo. Ser "verdaderamente" ágil, significa que no te encerrarás en ninguna tendencia o metodología en particular a menos que se ajuste a tu empresa y equipo. Es mejor usar una metodología como punto de partida, y luego, una vez que haya recibido un poco de capacitación y una experiencia aún mejor, sintonice para satisfacer sus propias necesidades particulares. Aún más importante, si el próximo proyecto y cliente requieren algo un poco diferente, ajuste la metodología para adaptarse. eso NO es realmente ágil.
S.Robins
1
volviendo a visitar mi respuesta, estoy de acuerdo con S.Robins arriba y he modificado mi respuesta para reflejar eso.
StevenV