¿Es el enfoque ágil demasiado de una excusa conveniente para los vaqueros?

71

Creo que un enfoque ágil es el mejor para proyectos donde los requisitos son confusos y se requiere mucha interacción para ayudar a dar forma a las ideas del usuario final.

Sin embargo ... En mi trabajo profesional, sigo terminando en compañías donde se utiliza un enfoque "ágil" como excusa para explicar por qué no se hizo ningún esfuerzo por adelantado. diseño; cuando los requisitos se entienden bien.

No puedo evitar pensar que si el enfoque ágil no existiera, estaría sentado aquí con una buena especificación de alto nivel y no tendría que volver a visitar la misma pantalla y funcionalidad cada dos días cuando algo más se corta. arriba o así y así no había pensado en eso.

  

¿Son los beneficios de las metodologías ágiles realmente suficientes para superar la excusa por ser escaso que da a los líderes técnicos de cowboy?

Actualización: Irónicamente, ahora soy un Scrum Master certificado. Uno de los documentos presentados en el curso Scrum observó que el mejor proceso de desarrollo era uno en el que había un solo experto o gurú que tomaba las decisiones de diseño, sin embargo, eso tiene debilidades obvias. Scrum transfiere la responsabilidad de producir software de calidad al "Equipo", lo que significa que un equipo que no cumple con los estándares puede evitar el espagueti, lo que creo que no es diferente a otros procesos de desarrollo Agile y no Agile.

    
pregunta Jim G. 24.02.2012 - 01:16

16 respuestas

86

Creo que si estás usando el desarrollo Agile como una excusa para la programación estilo vaquero, entonces realmente no estás siguiendo el desarrollo Agile. Los vaqueros siempre serán vaqueros, sin importar el proceso que les des.

    
respondido por el Dean Harding 12.10.2010 - 07:19
20

Agile no es más culpable de las malas prácticas de desarrollo que BDUF. El problema radica en la disciplina, o falta de ella, en la aplicación de las prácticas. El propósito de las prácticas de BDUF es identificar la dirección del proyecto y determinar los riesgos de antemano. El propósito de las prácticas ágiles es mantener el estado del desarrollo lo suficientemente flexible como para cambiar rápidamente de dirección. Un proyecto ágil podría preparar historias de usuario altamente detalladas para que el equipo esté al tanto de las direcciones futuras y aún así solo seleccione 2 o 3 por iteración para implementarlas completamente. El problema sigue siendo el mismo, independientemente de la metodología que se use: la administración es dejar que los vaqueros se vuelvan locos.

[BDUF: Big Design Up Front]

    
respondido por el Huperniketes 25.04.2011 - 19:40
13

Agile, como cualquier cosa , se puede usar para cubrir un mal comportamiento o para tratar de resolver un problema que el equipo cree que no es responsable.

Sin embargo, la magia de algunas metodologías Agile como Scrum es que brindarán mucha visibilidad sobre los problemas dentro de la organización. ¡Incluyendo problemas dentro del equipo!

Luego se le dará la oportunidad de resolverlos a medida que surjan.

Si el problema es de los vaqueros, esto será muy visible después de la primera iteración. Si el problema está en otra parte, también lo verás muy pronto.

    
respondido por el 3 revsuser2567 12.10.2010 - 17:25
12

Por extraño que parezca, de los proyectos "ágiles" en los que he estado involucrado, parece más una excusa administrativa para saltear la fase de recopilación de requisitos que un deseo de un vaquero de simplemente comenzar a programar. Mis proyectos han sido extremadamente frustrantes porque no tenemos ningún usuario final con el que interactuar. En su lugar, tenemos un director que habla con el departamento de ventas para averiguar qué creen que quieren los clientes, luego llama a una reunión y se lo describe a los gerentes, quienes luego comienzan a asignar tareas a los desarrolladores. En un "buen" proyecto podríamos tener una presentación de PP a la que referirnos, pero generalmente terminamos pasando nuestras reuniones diarias de scrum preguntando cómo se supone que funciona alguna característica, y el gerente escribe las preguntas y pregunta al director. Es una enorme pérdida de tiempo, ¡pero es "ágil"!

    
respondido por el TMN 12.10.2010 - 14:44
7

No diré que soy un fanático de Waterfall, ya que yo también me enfrento a los cambios de alcance siempre frustrantes, pero siempre he visto a Agile como una concesión al problema, no como una forma efectiva de combatirlo. Un buen diseño, con pruebas iterativas tempranas y muchos prototipos de papel parece ser mucho más efectivo.

    
respondido por el Morgan Herlocker 12.10.2010 - 06:54
6

Veo que las defensas de Desarrollo Agile dicen que no es responsable de los fallos causados por los vaqueros. El éxito con Agile requiere diligencia e inteligencia.

Esto parece una posición razonable, siempre y cuando aplique la misma concesión a otras metodologías. Si no puede culpar a Agile por las fallas en los proyectos causadas por vaqueros, no puede culpar a las metodologías no Agile por fallas en los proyectos causadas por vaqueros.

Luego podemos argumentar si existe una correlación (¡no una causación!) entre Agile y los vaqueros. Con solo evidencia anecdótica, creo que hay. ¿Se percibe como una buena manera de arreglárselas con las prácticas de cowboy sin ser detectado por la gerencia?

Por supuesto, si aceptamos que es posible que los vaqueros no se distribuyan de manera uniforme entre las metodologías, y aceptamos que los vaqueros socavan el uso exitoso de un proceso, hemos hecho muy difícil probar si un proceso es exitoso. La afirmación de que un proceso es mejor (dentro de un contexto) se vuelve casi infalsificable. Este es uno de los problemas que me avergüenza de mi profesión: la falta de fundamento científico de muchas de las afirmaciones.

(Por cierto, odio llamar a la (s) alternativa (es) a Agile "cascada", porque los procesos de cascada parecen ser un hombre de paja que todos atacan, pero muy pocas personas alguna vez utilizaron sin ninguna iteración.)

    
respondido por el Oddthinking 12.10.2010 - 18:11
5

Agile está bien siempre y cuando trabaje para tu equipo.

Muchos lo están vendiendo como una forma de convertir a un equipo malo en un buen equipo, y simplemente no funciona de esa manera. No puedes tomar a personas malas y aplicar un proceso para hacerlas útiles de repente.

Me gustan muchas de las ideas detrás de ágile, pero el fracaso que veo una y otra vez es que los gerentes están impulsando un conjunto estricto de "procesos ágiles", que se enfrenta a todo el concepto de ágil, que los equipos debe ser auto-organizado.

En cuanto a los "cowboys", encuentro que para todos los equipos ágiles en los que he estado, los procesos sirven para frenarlos más que dejarlos enloquecer. Nunca he experimentado una situación en la que Agile sirviera para habilitar un "programador de vaqueros".

Para los buenos equipos, parece funcionar bien (nuevamente, la mayoría de los procesos parecen funcionar bien cuando se tiene un buen equipo, es curioso cómo funciona eso, ¿no?).

Para otros equipos, en mi experiencia, nunca ayuda a las personas malas a hacerlo mejor, pero a veces sirve para atascar a las personas productivas.

En general, creo que lo importante es formar un buen equipo, decirles lo que necesita y luego apartarse del camino. No creo que aplicar una cadena de palabras de moda resuelva el problema de tener un equipo malo.

(Si no te has dado cuenta de lo anterior, no soy un fan de "Capitol-A Agile" en lo más mínimo. Por otra parte, tampoco creo que eso aliente a los vaqueros).

    
respondido por el TM. 12.10.2010 - 18:31
3

Agile, cuando se realiza correctamente, debería tener el efecto de controlar a los conductores técnicos y "héroes" de "cowboy". Si no observa este efecto, puede ser una señal de que falta algo importante en su implementación ágil.

Quiero agregar que "Agile" es realmente una interfaz (estoy usando una metáfora orientada a objetos aquí) y no se puede crear una instancia. Si su implementación concreta es XP , entonces tiene que seguir un montón de prácticas técnicas con mucha disciplina, lo que deja poco espacio para la programación de vaqueros. Otra posibilidad es que el trabajo en equipo de un equipo Scrum bien autoorganizado lo mantenga bajo control.

    
respondido por el azheglov 12.10.2010 - 16:29
3

Los programadores de vaqueros también tienden a escribir código que no es muy comprobable, y tienden a no gustarles escribir exámenes. Creo que tener a todos haciendo TDD puede ayudar a reinar la actitud de vaquero y hacer que los desarrolladores piensen un poco más en la arquitectura. Ninguna metodología es perfecta, por supuesto.

    
respondido por el Matt H 12.10.2010 - 18:29
3

Actualmente estoy trabajando en una tienda donde este es el caso, excepto que tiene más que ver con la cultura organizacional que con los vaqueros individuales en particular.

La organización siempre ha operado con un enfoque relativamente ágil, "informal Agile". No diría que es realmente ágil, es más "ágil en su nombre", pero simplemente es una metodología inexistente en la práctica. Los diferentes equipos operan de manera diferente, pero dado que la cultura organizacional en general no tiene ninguna metodología establecida aparte de un proceso muy ágil de "solo de nombre solo", es bastante general y caótico en general, especialmente en la integración (y hay mucho de eso ).

La moraleja de la historia es: sí, esto sucede. Si estuviera buscando trabajo en este momento, tendría mucho cuidado con esto. Si una tienda dice ser ágil, me gustaría hacer algunas preguntas bastante difíciles en la entrevista para garantizar que en realidad se siga más de un nombre inapropiado de Agile.

    
respondido por el Bobby Tables 13.10.2010 - 00:35
2

Descubrí que los usuarios solo pueden enviarnos comentarios una vez que tengan una aplicación que puedan usar, pantallas en las que pueden ingresar datos. Solo entonces, entienden realmente lo que intentábamos decir en los documentos de requisitos (que los clientes firman pero todos tienen su propia versión del significado). Si no es un desarrollo ágil, se tratará de un proyecto de cascada que superará el presupuesto, pero la aplicación cambiará una vez que se entregue. Su primera versión no es más que un prototipo para que los usuarios discutan cuáles deberían ser los requisitos. Así que prefiero llamarlo ágil que sobre presupuesto.

    
respondido por el Veronica Buitron 13.10.2010 - 10:03
2

Creo que es cierto, en algunos entornos, Agile se usa como excusa para no disciplinar. El problema real es que hemos perdido de vista por qué tenemos alguna metodología. Personalmente, creo que la metodología es un problema arquitectónico en el sentido de que la arquitectura del sistema debe abordar los atributos de calidad no funcionales, la metodología debe abordar algunos de esos atributos (mantenibilidad, productividad del desarrollo, transferencia de conocimiento, et al.)

Ver la metodología como un control para los atributos del proceso implica un par de cosas: 1) sin métricas no podemos comparar la efectividad de una metodología con respecto a otra, 2) se debe tomar una decisión activa sobre qué atributos son importantes (entrega tiempo vs código de calidad vs transferencia de conocimiento).

Sin tener ambas métricas y un objetivo tangible, simplemente elegimos una metodología como nuestra "pluma mágica" que, si nos mantenemos firmes, podremos ofrecer software.

Ahora los negativistas de Agile, XP, Scrum, etc. hablan sobre la fragilidad de esa categoría particular de metodologías. El argumento es: ¿por qué usar una metodología que puede ser saboteada por un individuo que carece de disciplina para seguir todas las reglas? La pregunta es válida; Sin embargo, ese es el síntoma, no la causa. Si un conjunto de métricas de proceso preciso y significativo (que es la parte difícil) se define, se analiza y se proporciona retroalimentación oportuna, creo que descubriremos que la metodología particular tiene poco que ver con el éxito. (Hablando anecdóticamente, he visto proyectos exitosos utilizando una gran cantidad de metodologías y el doble de fallas al usar las mismas metodologías)

Entonces, ¿cuáles son las métricas? Varían de un proyecto a otro, de un equipo a otro y de vez en cuando. Útil para cuando el calendario de entrega es importante, uno que personalmente he usado es la habilidad y la calidad de estimación. La mayoría de los desarrolladores pueden estimar con precisión las tareas que duran una semana o menos. Por lo tanto, un enfoque es dividir el proyecto en tareas que dura una semana de desarrollo y hacer un seguimiento de quién realizó la estimación. A medida que avanza el proyecto, pueden cambiar sus estimaciones. Después de completar una tarea, si está desactivada en más del 10% (1/2 por día) tratamos esto como un error: identificamos por qué la estimación estaba desactivada (es decir, no se consideró una tabla de base de datos), identificamos la acción correctiva (es decir, involucrar al DBA en la estimación) y luego continuar. Usando esta información, podemos crear métricas como el número de errores de estimación por semana, el número de errores por desarrollador, el número de errores por KLOC, el número de errores por desarrollador KLOC, etc. Publicar estos números en la wiki del equipo proporciona una gran presión social y Desde la perspectiva gerencial, después de un par de semanas, puede generar un modelo predictivo de semanas de desarrollo subsiguientes.

¿Y qué? Ahí es cuando aparecen las metodologías: si tiene un modelo predictivo que no cumple con las cualidades del proceso, puede optar por agregar o eliminar algunos aspectos de la metodología y ver cómo afecta a su modelo. Por supuesto, nadie quiere jugar con un proceso de desarrollo por temor a fallar, pero ya estamos fallando a un ritmo constante y predecible. Al realizar cambios individuales y medir el resultado, es posible que Agile sea la metodología perfecta para su equipo, pero que podría encontrar el RUP, la cascada o simplemente una combinación de las mejores prácticas para ser ideal.

Entonces, mi sugerencia es que dejemos de preocuparnos por lo que llamamos el proceso, implementamos verificaciones que son relevantes para nuestros objetivos de desarrollo y experimentamos con diferentes técnicas para mejorar ese proceso.

    
respondido por el TEC 27.10.2010 - 23:04
1
  

Estaría sentado aquí con una buena altura   especificación de nivel y no tener que   volver a visitar la misma pantalla y   funcionalidad cada segundo día como   Algo más surge más o menos.   no había pensado en eso.

Eso parece coincidir con la experiencia de mi colega con el proyecto "ágil" en el que se encuentra (nunca he estado en uno): se le pide que escriba un fragmento de código según alguna especificación, luego, justo cuando termina Probándolo y está listo para seguir adelante, aparece un nuevo requisito que le exige cambiarlo y volver a probarlo. Lo encuentra frustrante.

No estoy atacando a Agile, sospecho que el equipo no está haciendo Agile correctamente, pero como usted dice, los vaqueros a veces pueden usar el término "Agile" para convencer a los gerentes puntiagudos de que el diseño a medias es positivo. que un negativo.

    
respondido por el Tony Andrews 12.10.2010 - 12:18
1

Es gracioso que nadie se considere a sí mismo como programador de vaqueros. Estoy apostando a que muchos de los carteles son o han sido uno;)

    
respondido por el user5206 13.10.2010 - 00:02
1

Los programadores de vaqueros son buenos porque les gusta hacer las cosas rápidamente. A menudo no están tan preocupados por los problemas de imagen general o la calidad del código, por lo que el "programador de vaqueros" suele ser un epíteto. Sus métodos mitigan los riesgos de costo de oportunidad de la entrega tardía del proyecto.

A los programadores que no son vaqueros les gusta hacer su trabajo de una manera segura, disciplinada y ordenada. Les gusta construirlo bien y construirlo una vez. Se les conoce por recopilar información para siempre, considerando qué pasa si, producen documentos grandes que nadie lee y entregan sistemas tarde o muy tarde. Sus métodos intentan mitigar los riesgos de software de mala calidad.

La brillantez de las metodologías ágiles es que aprovechan las fortalezas de ambos tipos de codificadores al forzar las iteraciones de trabajo limitadas en el tiempo que le piden a los codificadores producir pequeños trabajos de alta calidad rápidamente. Y cada iteración mitiga tanto los riesgos de costo de oportunidad de la entrega tardía como los riesgos de software de mala calidad.

    
respondido por el Jay Godse 19.03.2011 - 18:28
0

La razón por la que Agile está poniendo muy poco énfasis en el diseño / especificaciones iniciales no es solo porque los requisitos pueden cambiar. La razón más profunda es que incluso cuando los requisitos son estables, las especificaciones tienden a ser:

  • incorrecto: no se pueden capturar los requisitos.

  • inconsistente - plagado de contradicciones porque contienen suficiente información para que el escritor / lector no pueda captarlas.

  • desconectados: no incorporan información valiosa de un sistema en ejecución (aunque degenerado).

respondido por el Itay 12.10.2010 - 17:44

Lea otras preguntas en las etiquetas