martes, 29 de abril de 2008

Calidad en desarrollo de software ágil (2da charla)

Presenté por segunda vez "Calidad en desarrollo de software ágil", en el IEEE, el jueves 24 de abril.
La charla fue básicamente la misma que la vez anterior (en esa entrada hay más datos de la presentación), salvo algunas correcciones menores en la segunda parte de la presentación.
En esta entrada quiero comentar algunas conversaciones que tuvimos con los asistentes.
Testers y líderes de QA/Testing
En ninguna de las charlas asistieron personas que tengan o hayan tenido como rol principal el de Tester o Líder de Testing/QA (excepto yo :).
¿Por qué vienen desarrolladores y project leaders y no vienen testers y líderes de QA/Testing?
  • ¿No les llegó la convocatoria?, no creo, la convocatoria del IEEE es amplia, y sé que a algunos les llegó.
  • ¿Adversión a la palabra ágil entre los Testers/QA? Es una posibilidad. Una de los metodologías ágiles con más exposición pública se llama Extreme Programming, no Extreme Development, ni Extreme Testing ... una primera impresión diría que los temas de testing son de segunda clase. Por supuesto, no es así. Por algo Ron Jeffries y Ward Cunningham son activos participantes en agile-testing
  • ¿Testing visto con menor aura que QA? A pesar del título, que indica calidad, y no Testing, la descripción de la charla claramente refiere a temas de Testing. Todos sabemos que la prueba no la crea la calidad. Lamentablemente, creo que este conocimiento se ha deformado en considerar a Testing como una etapa transitoria e inicial en cualquier plan de carrera. Me inicio como tester, pero intento rápidamente "avanzar" a desarrollador o Analista, o responsable de procesos. Esto es en parte consecuencia de la poca importancia que se da a la calidad de software en nuestro mercado y a la forma en que se prueba: principalmente prueba manual, siguiendo script hechos por los "Analistas de QA". Hay poca prueba automática, y esta es hecha por los "Automatizadores".
  • Ligado a los dos temas anteriores, lo "profesional" para personas involucradas en calidad de software es procesos (ISO / CMMI). Esto es contrario a los principios del manifiesto ágil, pero parece ser la percepción generalizada. Por ejemplo, el INTI a puesto en marcha la carrera de especializacion "Calidad Industrial de Software", en el que el testing (V&V) tiene 5% de la carga horaria, con 21 hs. Quizás me equivoco, ya que en el tema correspondiente a "Modelos de madurez y capacidad" (tiene el 19% de la carga horaria) se nombran "CMMi y metodologías ‘ágiles’" ... pero en qué contexto, no :)?
Varias personas de empresas con equipos trabajando en froma ágil me comentaron la dificultad de conseguir personas que aporten los skill de testing y calidad, pero que se sientan cómodos trabajando en un ámbito con alta automatización de las pruebas, sin separación organizacional de roles, y focalizados a la mejora práctica (no de libro) de los procesos.
Otras empresas han optado por contratar estudiantes de carreras no técnicas (sociales, económicas) no por la necesidad de sus skills particulares, sino porque son recursos más baratos para una prueba manual, que sólo requiere algún conocimiento de uso de computadoras, ser ordenado y tener un nivel aceptable de comunicación interpersonal.

Problemas en la implementación de métodos ágiles
Como comenté anteriormente, la calidad es central a las metodologías ágiles, sin embargo las personas de Testing/QA no son generalmente agentes de cambio.
¿Por qué?
  • Separación de roles: después de pelear por años para que las organizaciones "den peso" a la Calidad, muchas de las personas en estas áreas ven con reluctancia ceder estas posiciones. En una estructura jerárquica, con muchos niveles, el nivel en el que aparece una función es una indicacón de la importancia que le da la organización. Sin embargo, en una organización horizontal, los niveles son pocos, y los equipos incluyen personas de todos los skill. La gran mayoría de las decisiones se toman por acuerdos dentro del equipo, por lo tanto, la necesidad de separar los roles de testing en una rama jerárquica separada al resto de desarrollo se hace innecesario e improductivo.
  • Luego de un cambio hacia una organización horizontal, hay menos "jefes", por lo que los mandos medios se sienten amenazados (¿cómo manejar esto?).
  • Por supuesto, los dos puntos indicados arriba se aplican no sólo a las personas con roles de Testing/QA. También pasa con los programadores, que no quieren "probar" o tener contacto con usuarios, y los líderes de programadores, que sienten la misma amenaza que los líderes de testing. Pero esta charla no era para programadores y líderes de programación :)
Estas dudas tienen respuesta, y esa fue la intensión de la charla, pero ... no vinieron los principales involucrados.

Conclusiones

Veo en el mercado argentino un problema con respecto a la implementación calidad de software en general y en el caso de metodologías ágiles en particular. No es visto como un rol dinámico que debe profesionalizarse y mantenerse actualizado, que debe guiar las mejoras desde el día a día, que debe retener a los recursos valiosos y que aporta valor al desarrollo de productos de software.
Esto no significa que los testers deben ser programadores, pero sí significa que deben entender y participar en temas de análisis, diseño y programación, así como los perfiles más técnicos deben participar en temas de prueba.

En mi particular cruzada, estoy trabajando con gente de la Facultad de Ingeniería de la UBA para crear cursos con fuerte foco práctico, que permitan desarrollar algunas de los skills comentados aquí. Apuntamos a tenerlos en marcha a partir de Julio. Los mantengo al tanto.

2 comentarios:

Javo dijo...

Estimado, ya bastante cansado por la hora y el trabajo de todo el día, quiero decirte que encuentro algo de prejuicio tu razonamiento sobre los roles de los Líderes de Calidad y como se desempeñan con el testing en empresas del tipo PyMEs, que deben si o si afrontar algún tipo de metodología ligera, no necesariamente Ágile.
Me toca en persona pasarme de un entorno de trabajo CMMI4-5 de más de 300 empleados, donde fui Líder de Testing de equipos diversos fuertemente gestionados por herramientas automáticas, donde también se practican pruebas manuales, con la diferencia que hay algunos elementos de automatización que generan los Script de pruebas funcionales, a una empresa de tan solo 10 personas, incluyendo el gerente y la administrativa, que no producen el código, ni lo testean, ni mucho menos aseguran su calidad.
Estamos conformados por un equipo de 4 desarrolladores tiempo completo donde 1 es el arquitecto, 2 líderes de proyectos que a su vez son analistas de requerimientos, y hacen las veces de desarrolladores cuando la situación lo requiere y yo, responsable SQA y tester principal de las aplicaciones.
Según tu enfoque, los Líderes SQA no tienen Skill para realizar pruebas y mucho menos manuales y a esto le pones el agravante de que no se automatiza prácticamente nada. Encuento razón solo en la segunda mitad, es decir, no se automatiza, pero en lo que refiere al testing manual, ocurre que el contexto de cambio es tan grande que lo que se pudo planificar pasa a ser obsoleto en forma casi urgente y no se consigue adaptar una configuración de pruebas que sean mínimamente repetitivas. Entonces se fortalece el testing exploratorio, los distintos ciclos traen defectos mutados, la cobertura disminuye en cada ciclo y lo mismo sucede con las curvas de concentración y motivación.
Sin embargo esto no implica bajo "Skill" de los involucrados en calidad. Allí justamente tenemos una situación de contorno o agente exógeno que no permite la adecuación.
En mi caso me ha tocado convivir con múltiples proyectos, cada uno en distintas fases y ser el único tester disponible. Por supuesto debo también revisar la documentación en toda su línea de maduréz, ser agente detector de riesgos en todo el contexto del proyecto, formar anticipadamente los planes de calidad y testing, e ir recolectando evidencia a media que la implementación avanza. Luego permanezco al pie del cañon en las fases de despligue y por supuesto en lo que refiere a la calidad de prestaciones de servicios de garantías y soporte de los productos.
Ideé cuanta estrategia me fuera posible y no solo se CMMI, sino Scrum, TDD y XP, entre otros conceptos que no termino de masticar, pero aún así, no logro el consenso de la maldita gerencia. Entonces forzozamente hago el traslado de la responsabilidad y ruego a esta Argentina, que deje de hacer pulular dueños de empresas de software que no son más que supervisores analfabetos (por el lado de la X) o líderes pordioseros (por el lado de la Y). Esta gente no necesita equipos pensantes, horizontales, que ideen, que innoven, que decidan y que sean productivos. Esta pseudo líderes necesitan "pupilos", chicos que les escuchen los monólogos sin fin, que miren sus pizarras de grafiquitos bien hechos con bonitas palabras pero que al final no dicen nada, por que nada sabe el tipo de lo que habla.
Recuerdo que recientemente recomendé irónicamente a un compañero que le sigue la traza al gerente, que se comprar el libro "todo lo que siempre quizo saber de un proceso de desarrollo de software y no se animó a preguntar, entonces lo sacó de la galera y lo puso de pecho".
Un poquito largo el título, pero bien gráfico.
Ser Àgil, me juego las que tengo a que no hay uno que lo sea. Ligero te lo creo.
A propósito, yo ya hice todo esto de involucrar al equipo completo en testing, impartir desde las más vagas hasta las más avanzadas técnicas del testing (menos automatización), ahora introduje el concepto de Integración Contínua, Release Candidate, Ciclos Reducidos y otras yerbas y mi conclusión final es que definitivamente, se necesita un equipo de testing. Probablemente seperado del equipo de desarrollo. Yo siempre creí que esa es la forma menos viciada de hacer testing.

Saludos,
Javier.
http://cbasqa.blogspot.com

Juan Gabardini dijo...

Hola Javo
Gracias por comentar!
Muy interesante tu experiencia.
Te respondo:
Prejuicio: lo mío son opiniones (es un blog!) basadas en mi experiencia personal. No hice ningún estudio ni encuesta. El hecho es que hubo una convocatoria, en una organización de profesionales (IEEE) que intenté orientar a tester y lideres de QA, y no vino ninguno. En cambio, vieneron otras personas interesadas en la calidad y en metodologías ágiles. El resto es mi análisis, que puedo haber hecho mal.
Skills de los SQA: luego de leer "Según tu enfoque, los Líderes SQA no tienen Skill para realizar pruebas y mucho menos manuales y a esto le pones el agravante de que no se automatiza prácticamente nada." me preocupé, no es lo que pienso y lamento mucho si en alguna forma dí esa impresión por la forma de redactar. Releyendo, no encuentro que dijera o implicara eso, pero por eso se necesita a otro que revise nuestro trabajo, no? :).
Personas: En su libro "Dynamics of software development", Jim McCarthy tiene una regla #4:Don't flip the bozo bit, consiste en no desentenderse de las ideas y opiniones de las personas sólo porque en alguna ocación estuvimos en desacuerdo o la idea fue mala. En este sentido, creo (y lo viví) que las mismas personas, con un sistema de trabajo distinto, pueden ser mucho más productivas, tener menos fricciones, disfrutar más del trabajo. Esto se aplica a los líderes de desarrollo, arquitectos, líderes de QA, y por qué no, dueños de empresas!

Hasta la próxima
Juan