¿Qué argumentos puedo usar para "vender" el concepto de BDD a un equipo reacio a adoptarlo?

11

Soy un defensor vocal de la metodología de Desarrollo Conducido por el Comportamiento (también conocido como BDD). He estado aplicando BDD durante un par de años y he adoptado StoryQ como mi marco de elección al desarrollar aplicaciones DotNet. A pesar de que he estado haciendo pruebas unitarias durante muchos años, y previamente había cambiado a un enfoque de prueba primero, descubrí que obtengo mucho más valor al usar un marco BDD, porque mis pruebas capturan la intención de los requisitos en relativamente inglés claro dentro de mi código, y debido a que mis pruebas pueden ejecutar múltiples aserciones sin terminar la prueba a la mitad, lo que significa que puedo ver qué aserciones específicas pasan / fallan de un vistazo sin depurar para probarlo.

Esto realmente ha sido la punta del iceberg para mí, ya que también he notado que puedo depurar tanto el código de prueba como el de implementación de una manera más específica, con el resultado de que mi productividad ha crecido significativamente y que puedo más determine fácilmente dónde ocurre una falla si ocurre un problema para llegar a la compilación de integración debido a la salida que llega a los registros de compilación. Además, la API StoryQ tiene una sintaxis fluida encantadora que es fácil de aprender y que se puede aplicar de muchas maneras, sin necesidad de dependencias externas para usarla.

Entonces, con todos estos beneficios, pensaría que es fácil presentar el concepto al resto del equipo. Desafortunadamente, los otros miembros del equipo son reacios incluso a mirar StoryQ para evaluarlo adecuadamente (y mucho menos considerar la idea de aplicar BDD), y se han convencido mutuamente para tratar de eliminar una serie de elementos de StoryQ de nuestro propio marco de prueba central, incluso aunque originalmente admitieron el uso de StoryQ, y aunque el código que desean eliminar no afecta a ninguna otra parte de nuestro sistema de prueba. Si lo hace, terminaría aumentando mi carga de trabajo significativamente en general y realmente va en contra de la corriente, ya que estoy convencido por experiencia práctica de que es una mejor manera de trabajar en un entorno de trabajo particular y solo puede conducir a una mayor mejoras en la calidad de nuestro software, dado que ' Me ha resultado más fácil seguir con la prueba usando BDD. Para aclarar aún más, la mayoría de las pruebas unitarias que tenemos tienden a ser bastante frágiles y difíciles de mantener, un remanente de años de pruebas mal aplicadas donde la renuencia a seguir un proceso basado en pruebas ha visto a los desarrolladores recurrir a viejos hábitos y haga todas sus pruebas al final del proyecto (¡estas mismas personas dicen ser ágiles!).

Entonces la pregunta realmente se reduce a lo siguiente:

  1. ¿Qué argumentos puedo usar para realmente señalar que sería mejor para este equipo usar StoryQ, o al menos adoptar la metodología BDD?
  2. ¿Puede señalarme alguna evidencia anecdótica que pueda utilizar para apoyar mi argumento de adoptar BDD como nuestro método estándar de elección?
  3. ¿Qué contraargumentos puedes pensar que sugieran que mi deseo de alentar al equipo a adoptar BDD podría ser un error? Sí, estoy feliz de que se demuestre que estoy equivocado, siempre que el argumento sea sólido.

NOTA : No estoy abogando por que reescribamos nuestras pruebas en su totalidad, sino que simplemente comencemos a trabajar de una manera diferente para todo el trabajo de prueba futuro, y preferiblemente en la forma en que involucramos a nuestros clientes.

Y para aquellos de ustedes que deseen aprender más sobre BDD, los siguientes enlaces pueden ser útiles:


Para aquellos interesados ​​en más detalles, somos un pequeño equipo de 4 personas que trabajan en aproximadamente 5 proyectos grandes. La "prueba piloto" para BDD se ejecutó durante aproximadamente 2 meses inicialmente, con otro período de aproximadamente 4 meses después. El equipo aceptó que debía continuar trabajando de esta manera y que debía hacer sus propias pruebas. He estado BDD durante aproximadamente 2 años desde que terminó el juicio, mientras que los otros se han vuelto muy buenos para esquivar el problema. En lugar de forzar una "confrontación" sobre el tema, estoy buscando maneras de persuadir suavemente al equipo para que se salga de sus espaldas colectivas y se tome el tiempo para hacer su parte.

S.Robins
fuente
2
Pensemos en "ELLOS": ¿por qué quieren que se elimine? Debe ser beneficioso para ellos: ¿ha intentado descubrir sus beneficios PRIMERO y ver qué punto medio se puede alcanzar ANTES de proponer sus beneficios :)
PhD
2
Intenta vender menos y educar más. En mi experiencia, las personas no quieren que se les venda algo, pero siempre están dispuestas a aprender algo nuevo. Luego deja que las cartas caigan donde puedan. Si todavía están en contra, fallaste como educador o bdd no es todo lo que dices.
Kevin
1
@ Kevin Creo que te perdiste mi comentario anterior a Nupal, y tal vez el punto de mi pregunta por completo. Has tomado una sola palabra de mi pregunta y la has interpretado fuera de contexto. Realmente estoy tratando de educar, y no simplemente "vender" como tal. Estoy buscando puntos específicos que pueda usar para ayudarme a superar una reticencia innecesaria a considerar hacer algo diferente. Responda si tiene conocimiento sobre el tema, en lugar de simplemente proporcionar declaraciones provocativas sobre mis habilidades o la tecnología, que son decididamente inútiles de su parte.
S.Robins
2
Diagramas de decisión binarios? Compre una copia de Knuth's TAoCP vol 4 y pídasela.
Peter Taylor
2
Creo que el problema que tiene su equipo no es con BDD en sí, sino más bien un problema de fatiga de la metodología de desarrollo. Estoy sufriendo de esto yo mismo. Se presentan demasiadas metodologías que prometen revolucionar el desarrollo. Desafortunadamente, unos meses después siempre hay otra nueva metodología y conjunto de herramientas. He llegado a verlo como una distracción molesta en lugar de una oportunidad para mejorar. Para introducir BDD, tendrá que superar este problema.
Antonio2011a

Respuestas:

5

¿Qué argumentos puedo usar para realmente entender que sería mejor usar StoryQ, o al menos aplicar la metodología BDD?

"El cliente lo quiere".

En mi opinión, desea vender BDD a sus clientes / expertos de dominio al menos tanto como al equipo de desarrollo.

BDD es un proceso colaborativo de afuera hacia adentro donde participan múltiples partes interesadas. Los beneficios de BDD no son solo para que los desarrolladores infieran automáticamente su código de prueba a partir de las pruebas de aceptación, sino que también radican en la cooperación creativa que se lleva a cabo entre técnicos y empresarios para producir especificaciones valiosas y bien definidas del comportamiento previsto del sistema.

Por lo general, también se agradece a los clientes / analistas de negocios el acceso a una interfaz donde pueden ejecutar cada especificación ejecutable, controlar su estado y ver la progresión en su implementación.

Hay una presentación de Dan North sobre cómo vender BDD a la empresa: http://skillsmatter.com/podcast/java-jee/how-to-sell-bdd-to-the-business

guillaume31
fuente
He visto esa presentación y tienes razón, es una buena manera de acercarte a presentar el concepto al cliente. En mi caso, necesito dar unos pasos pequeños. Si lo único que puedo convencer al equipo es que adopte el lenguaje, es posible que tenga la oportunidad de alentar a que se aplique el método completo. También necesito lidiar con el problema de que la mayoría de nuestros clientes son internos y están menos enfocados en el negocio. Sin embargo, su punto es bien notado. :-)
S.Robins
5
  1. En un equipo reacio a adoptar BDD, es probable que no haya "argumentos" que pueda usar para "convertir" a sus colegas en una adopción a gran escala.
     
    Creo que lo mejor que puedes hacer es convencerlos de que lo prueben ("prueba de humo", "prueba en seco", "proyecto piloto"), especialmente si dejas perfectamente claro que abandonarás la idea si los resultados de la prueba son negativos
  2. Su enfoque para encontrar evidencia anecdótica se ajusta perfectamente a la idea de convencer al equipo para que lo intente. Para eso, simplemente buscaría en la web algo como "Historia de éxito del desarrollo impulsado por el comportamiento" y elegiría lo que me parece más fácil de usar.
  3. Hay un par de argumentos contrarios que puedo pensar que podrían sugerir que su deseo de convertir los esfuerzos del equipo a BDD podría ser un error.
     
    Ninguno de estos es particularmente constructivo, especialmente desde el punto de vista de un "defensor del cambio", pero desafortunadamente es probable que tenga que lidiar exactamente con este tipo de retórica ( BTDTGTTS ):
     
    • no puede garantizar que la productividad general del equipo mejorará
    • no puede garantizar que los esfuerzos invertidos en la adopción de BDD den un ROI sustancial
    • al equipo le estaba yendo lo suficientemente bien sin BDD, el riesgo de cambiar el enfoque actual no está justificado
    • Google (o Microsoft, o IBM, simplemente complete el nombre del proveedor de software "respetable") funcionará bien sin BDD, lo que "prueba" que BDD no es necesario
    • los enfoques no BDD no tuvieron una oportunidad justa en las pruebas comparativas
    • BDD puede estar generalmente bien, pero para este y ese módulo / proyecto no es aplicable

Según mi experiencia, la forma menos dolorosa de abordar los argumentos contrarios como se enumeró anteriormente fue realizar una ejecución de prueba controlada limitada para un cambio propuesto.

El estado de "prueba limitada" esencialmente invalida tres de los cuatro argumentos anteriores, excepto uno sobre "vendedor respetable", que podría contrarrestarse proporcionando evidencia anecdótica de la historia de éxito (la evidencia anecdótica probablemente no funcionará para un "cambio de big bang" sino para pruebas limitadas es lo suficientemente bueno).

Si el cambio realmente vale la pena y la ejecución de la prueba se organiza correctamente, notará un cambio positivo en la actitud del equipo y la gerencia, haciendo que la transición a un cambio a gran escala sea fluida e indolora.

Otro beneficio de la ejecución de prueba limitada es que le permite aclarar y ajustar los detalles del proceso objetivo sin causar demasiados problemas y con un menor riesgo de "daño a la reputación" de la idea. Cada vez que participé en tales ejecuciones de prueba , me sorprendió gratamente descubrir lo fácil que fue cambiar a la adopción a gran escala con los detalles más importantes establecidos y aclarados en la ejecución de la prueba.

mosquito
fuente
Gracias por la atenta respuesta. Como sucede, me he involucrado con éxito en una prueba limitada, seguida de una aceptación por parte del equipo para permitir que BDD se aplique indefinidamente. Las mejoras en la productividad han sido medibles, pero como mencionó, no hay garantía de que esto se aplique necesariamente a todo el equipo sin encontrar alguna forma de alentar a cada miembro del equipo a probarlo por sí mismo, lo cual es, por cierto, la motivación para presentar la pregunta.
S.Robins
@ S.Robins interesante. Esa prueba limitada que mencionas, ¿por cuánto tiempo se ejecutó? ¿Qué parte del equipo estuvo involucrado?
mosquito
Somos un pequeño equipo de 4 personas trabajando en aproximadamente 5 proyectos grandes. La "prueba" se ejecutó durante aproximadamente 2 meses inicialmente, con otro período de aproximadamente 4 meses después. El equipo aceptó que debía continuar trabajando de esta manera y que debía hacer sus propias pruebas. He estado BDD durante aproximadamente 2 años desde que terminó el juicio, mientras que los otros se han vuelto muy buenos para esquivar el problema. En lugar de forzar una "confrontación" sobre el tema, ¡preferiría encontrar formas de persuadir suavemente al equipo para que abandone su respaldo colectivo y se tome el tiempo para hacer su parte! ;-)
S.Robins
Veo. Eso hace que tu pregunta sea aún más interesante. Necesito algo de tiempo para masticarlo; a partir de ahora simplemente no puedo imaginar cómo sería posible avanzar más (salvo enfoques "injustos" como la utilización del poder de la microgestión )
mosquito
@ S.Robins mientras tengo nuestra atención: ¿tiene módulos que "mezclan" partes BDD y no BDD o hay una especie de separación entre los módulos 100% BDD / 0% BDD?
mosquito
-1

Puede ser hora de reclutar a la gerencia. Si lo ha intentado y ha visto resultados sólidos, pero el equipo se resiste, es posible que la administración deba involucrarse.

Esto es especialmente cierto si están perjudicando al miembro del equipo más productivo de la empresa. Prepárate para la reacción violenta. Puede comenzar por acercarse a la administración y buscar que el equipo deje de debilitarlo sacando sus casos de prueba.

Bill Leeper
fuente
1
No sé si estoy de acuerdo con esto. ¿Estás diciendo que sin la compra de un desarrollador, el enfoque correcto es lograr que la gerencia lo obligue a reducir la garganta del desarrollador? ¿Eso no conduce al resentimiento? Independientemente de los méritos de BDD, creo que eso conducirá a peores resultados. Es decir, habrás ganado la batalla y perdido la guerra.
Kevin
@Kevin Estoy de acuerdo con Kevin en este caso. El resentimiento y la sensación de malestar pueden fracturar un equipo muy rápidamente, y eso en sí mismo puede ser un mayor riesgo para la productividad del equipo que simplemente dejarlos trabajar de manera ineficiente. El comentario de Kevin me recuerda ese proverbio sobre no tener un clavo. En este caso, no busco hacer algo drástico o heroico simplemente para saludarme. Lo que estoy buscando es mi "clavo".
S.Robins
El equipo ya está en contra de ellos, como lo demuestra el hecho de que están sacando el código de prueba que escribieron. Eso es bastante hostil en mi mente y garantiza la intervención del gerente de desarrollo. Ese es su trabajo, hacer que todo el equipo funcione sin problemas.
Bill Leeper el