Archive for the 'eXtreme Programming' Category

Frases ágiles

Recopilando algunas frases representativas, divertidas y útiles del mundo ágil, aquí están separadas por público objetivo:

Para el Equipo:

Haz la cosa mas simple que pueda llegar a funcionar (Do the simplest thing that could possibly work)

Cuando piensen en agregar algo extra… No lo vas a necesitar (You aren’t gonna need it)

Para los Jefes de Proyecto:

Para convertirse en un Jefe de Proyecto, agrega conocimiento — para convertirse en Scrum Master, quítalo.

A veces la mejor forma de ser útil es no entorpecer el camino de otro (Sometimes the best way to be useful is to get out of somebody’s way)

Para los consultores:

No se puede estandarizar lo que no deja de cambiar

Para los stakeholders internos:

Stakeholder: Tenemos mas problemas ahora que antes de implementar esta metodología.

Consultor ágil: Asi es, lo llamamos transparencia.

Pueden ir agregando mas en los comentarios, para actualizar este post.

El estado del arte del movimiento ágil (¿Scrum versus el resto?)

En el grupo de discusión hispanoparlante de metodos ágiles he seguido con atención un hilo de discusión llamado “No me sirven las amebas”, donde se discute acerca de cómo algunas metodologías han ido mutando y absorbiendo a otras, y cómo van apareciendo nuevas tendencias que revisan lo ya establecido y elevan la vara de comprensión sobre qué es lo ágil continuamente .

Sin embargo, en el mismo thread se trasluce un conflicto que ya vi surgir en Agiles2008 y que es la relación entre el mundo Scrum y los otros approachs, algunos que están más relegados al círculos de gurues computines como Extreme Programming, o nuevos chicos en el barrio como el movimiento de aplicar Kanban a la ingeniería de software (excelente presentacion  aqui) o devolver el foco en la excelencia técnica como Software Craftmanship, tema algo abandonado luego de la irrupción de las certificaciones Scrum Master, orientadas más a la gestión.

En mi caso personal aprendí primero XP y luego distilé a partir de XP un framework de gestión muy parecido a Scrum que he aplicado con éxito en más de 25 proyectos desde el 2005 (de un total de 29), y al ver ese tipo de métodos funcionar en el práctica he aprendido algunas cosas, como que si no se adquiere solidez técnica (Test Driven Development, Behaviour Driven Development, User Acceptance Tests, etc) el avance que se obtiene no prevalece en el tiempo. Es asi que, si bien XP deja alguna cosas poco definidas en el ámbito de gestion (el tracking, o el informative workspace, por ejemplo), en Scrum se ahonda más en ellos. Pero a su vez XP entrega una visión mucho más sistémica de cómo enfrentar el desarrollo de software. Pueden ver mi comprensión sobre este tema en esta presentacion.

Ahora bien, tengo graves problemas con lo que representa la organizacion que está detrás de Scrum, la Scrum Alliance.
Hay varios antecedentes preocupantes, como :
- Gente expulsada de la lista ScrumDev en yahoo por proponer avances, -
- Que ahora los “Scrum Users Groups” estén siendo forzados a firmar un acuerdo de licencia para usar la marca Scrum -¿o tendran que cerrar ? (¿que pensarán Takeuchi y Nonaka que propusieron la metáfora acá?, o ¿la federacion internacional de rugby?)
- Que tienen un modelo de marketing espectacular, bien por ellos, pero eso nunca ha sido garantía de calidad. Es más, siempre partir por formar “Maestros” en dos días… mal, mal
- Y los flirteos de la Scrum Alliance con el PMI, que en si es el verdadero Microsoft de las metodologias informáticas, mucho mas exitoso comercialmente y con mucho más market share que lo que ha logrado el mundo ágil aun.

El año pasado conoci en la conferencia Agiles2008 a gente interesante que está ganándose el pan con las herramientas de la Scrum Alliance, como Alan Cyment o Tobias Mayer. ¡Bien por ellos! Yo por mi parte he decidido pasar de la Scrum Alliance y mirar en otros grupos de apoyo, y en otros modelos de capacitación distintos al CSM y demases, aunque valoro y respeto a quienes van por ese camino.

¿Y que es lo bueno de todo? Que el mundo sigue evolucionando. Que lo que se está creando con Kanban está abriendo nuevas puertas (de manera libre y sin tener que firmar licencias ni obtener certificados) a las bases que en el fondo sostienen la Agilidad. Tambien está el trabajo en la conceptualizacion del desarrollo como Complex Adaptative Systems, otro tema que está tomando fuerza.
O que ya hay gente hablando de “Agile Mashups”, en donde se van creando y recreando formas de trabajar a partir de practicas de diversos origenes.
Como dijo el doctor Malcom en Jurasic Park: “la vida siempre encuentra el camino”, a pesar de que hay quienes quieran confinarla a una sola visión.

AgileDay 2008: Presentación “Gestión Ágil”

Descripción:

Biografía Expositor (Roberto Carrasco):

Socio Fundador de Etiqs

A 1 semanas de ser Ingeniero Civil en Computación – Universidad de Chile

Evangelizador de metodologías de desarrollo ágil.

Arquitecto de TI’s que faciliten la interoperabilidad e integración de sistemas, con experiencia en variados rubros: gobierno, banca, seguros, salud, por ejemplo.

Se define como Innovador y Emprendedor, siempre en investigando nuevas tecnologías que permitan desarrollar negocios exitosos e innovadores.

Descargar Presentación

AgileDay 2008: Presentación “Integración extrema”

Descripción:

La Integración Contínua provee un punto común de control permanente que garantiza al equipo de desarrollo el nivel de calidad con que está avanzando. Pasados los estadíos primarios de ejecución de pruebas unitarias y la verificación de la cobertura de éstas sobre el código, podemos incorporar análisis más sofisticados como análisis estático, de estilo, acoplamiento, e incluso consumo de energía.

Biografía Expositor (Martín Salías):

Martín Salías (Buenos Aires, Argentina) es Arquitecto de Software en Southworks y ha trabajado antes para varias empresas en Latinoamérica, Europa, Estados Unidos y Canadá. Tiene más de veinticinco años en el desarrollo de software y ha usado diversos lenguajes y plataformas. También es miembro de la Agile Alliance y premiado como Microsoft MVP.

Descargar Presentación

AgileDay 2008 – Fotos Extreme Hour

Señores,

como dice el título, estas son las fotos del Extreme Hour realizado el día viernes pasado.

Industria de Software: 35% de éxito. Curso CC61A: Proyecto de Software, 84% …

Si les cuento que la estadística de éxito en la industria del software (entendido como aquellos proyectos que logran productos funcionales, de valor para el cliente con los recursos y tiempos establecidos) no supera el 35% (segun The Chaos Report del año 2006), ¿qué me dirían de una experiencia que desde el 2005 ha desarrollado 26 proyectos, con 22 de ellos exitosos? (84% de éxito)

Desde el año 1998 en la Universidad de Chile se realiza una experiencia en donde los alumnos del la carrera de Ingeniería Civil en Computación realizan proyectos de 3 meses para organizaciones del mundo real. En sus principios los resultados eran similares a los de la industria, pero desde el 2005 comenzamos aplicar conceptos ágiles y la realidad cambió.

El pasado martes 8 de Julio de 2008 realizamos el cierre de la más reciente versión del curso, en donde se presentaron 4 proyectos:

  • Sistema de Análisis de Resultados, para la empresa Everis
  • Red Social Ammilia, para la empresa Everis
  • Mejora de framework de desarrollo, para la emrpesa Everis
  • Aplicacion para Facebook, cliente Falabella

Lo interesante, además de la variedad de temas abordados, es que en todos los casos se logro un software funcional y útil para el cliente.

Ahora bien, ¿en donde está el secreto?. No hay un sólo elemento, sino que podemos nombrar entre otros:

  • la buena calidad técnica de los alumnos de la carrera, que claramente están entre lo mejor que existe a nivel nacional
  • un equipo docente que ha mantenido, aprendido y perseverado a lo largo de los años
  • Y a partir de la influencia de los métodos ágiles: la definición de reglas claras tanto para alumnos como para los clientes en donde se asegura un juego justo y de mutuo beneficio para ambas partes, y la definición de hitos que van dando ritmo y estableciendo momentos de evaluación, valoración y aprendizaje para todos.

Lo que fue una novedad es que esta generación logro entender muy bien los fundamentos de gestión de la incertidumbre de las metodologías ágiles, logrando explicar convincentemente cuales fueron sus estrategias para generar valor al mismo tiempo que se reducían los riesgos tecnológicos y de requerimientos del proyecto. Y no quiero dejar de mencionar el entusiasmo y motivación con que se enfrentó cada uno de los proyectos.

Quizás lo anterior quede mejor explicado en un video con mis palabras finales, en donde se resume muy bien el sentido de esta experiencia y como la filosofía ágil se impregna en ella.



Proximo semestre: nueva versión del curso CC62V “Taller de metodologías ágiles”

Desde la última semana de julio se vuelve a realizar en el la Universidad de Chile el curso CC62V “Taller de Metodologías Ágiles de Desarrollo de Software”, experiencia que se realiza desde el 2002 que ha formado a unos 60 ingenieros en Extreme Programming y metodos afines, y en cuya experiencia base mi tesis de magister publicada en un articulo anterior

La idea de este curso es que los alumnos vivan una experiencia “miniaturizada” de XP, es decir: realizan un proyecto de desarrollo de software real pero acotado a las 3 horas semanales del taller. Esto quiere decir que se planifica con le Planning Game, se programa en pares y guiando el desarrollo por tests, hay un cliente in situ,… en fin, se aplican las prácticas valores y principios de XP

Como profesor de este ramo fue que me inicie como coach de XP, experiencia que después de muchos años he podido comenzar a aplicar en mi vida profesional en la empresa Microsystem.

Espero que haya una buena cantidad de alumnos que inscriban el curso (es opcional) y que se entusiasmen con la agilidad como forma de hacer mejor software de forma más agradable para clientes y desarrolladores.

Tesis: Un modelo empírico de enseñanza de metodologías ágiles

Después de mucho luchar pude convertir mi tesis a formato PDF manteniendo en su mayoría la calidad de las imágenes explicativas.

Esta es mi tesis de magister, en donde analizo al metodlogóa que aplico en mi curso de la Universidad de Chile desde el 2002 en el curso “Taller de metodologías Ágiles de desarrollo de Software”, para decubrir las razones del entusiasmo que ha provocado en los alumnos y clientes de los proyectos realizados.

Espero en el futuro generar algunos artículos que resuman los tópicos descubiertos en esta tesis. Por mientras, esta disponible en la URL  http://chileagil.comopapel.com/publicaciones/1/

Aprovecho de avisar que este espacio se abre para todo aquel que quiera compartir sus trabajos sobre metodología ágiles, sean estos académicos o no.

Saludos

Agustín Villena

Este es el Abstract de la Tesis:

Las metodologías ágiles de desarrollo de software, y en particular Extreme Programming (XP), constituyen una de las tendencias de mayor impacto en la industria del desarrollo de software en la última década, gracias a su enfoque centrado en la generación temprana de valor y en su acento en el aspecto humano del desarrollo de software. Su adopción sin embargo ha demostrado ser bastante compleja debido a los cambios de paradigma que ellas plantean.

Desde los inicios de estas metodologías surgió el interés de incorporar esta nueva mirada como una forma de enriquecer la formación de los futuros ingenieros de software. En este trabajo se plantea que un buen aprendizaje de las metodologías ágiles de desarrollo de software puede ser logrado por los alumnos a través de una experiencia educativa teórico-práctica basada en la aplicación de dichas metodologías en proyectos reales. Este enfoque ha sido aplicado desde el año 2002 en el curso CC62V “Taller de metodologías ágiles de desarrollo de software” del Departamento de Ciencias de la Computación de la Universidad de Chile, y en esta investigación se pone a prueba esta hipótesis, a partir del análisis de una de las instancias del curso realizada entre los meses de agosto y noviembre del año 2005.
Para realizar este análisis se construyó un modelo evaluativo de aprendizaje basado en cómo las metodologías ágiles, y en particular Extreme Programming (XP), organizan el entorno de un proyecto de desarrollo de software para mantener la sincronía entre los cambiantes elementos que allí están en juego. Dichos elementos son el problema de negocios, la tecnología, la experiencia y destrezas del equipo de desarrollo, y el producto en desarrollo.
El modelo de evaluación fue aplicado sobre los trabajos generados por los alumnos de la versión del curso usado como experimento de esta investigación, complementados con las observaciones realizadas por el profesor en la sala de clases, y otras evidencias tales como las opiniones de los clientes y una encuesta de evaluación de impacto hecha a los alumnos aproximadamente 6 meses después de finalizado el curso.
Con respecto al impacto en el aprendizaje de los alumnos, se observó una comprensión y aplicación generalizada del marco de prácticas de XP, aunque el nivel de logro estuvo muy relacionado al entorno de trabajo logrado por cada uno de los proyectos realizados. En particular se encontró que algunos elementos no considerados en la hipótesis original, tales como la complejidad del problema a resolver y la relación con el cliente, tenían también un impacto relevante sobre el éxito de los proyectos, y no sólo los aspectos pedagógicos. Se comprobó la eficacia de este modelo pedagógico que promueve el equilibro entre teoría y práctica, el ambiente humano de equipo y de colaboración con el cliente y las destrezas entrenadas. Por su parte, la práctica de XP más destacada por los alumnos es la “programación en parejas”, que presenta la mejor evaluación durante el curso y es la más aplicada a posteriori. Otra práctica que causa mucho interés es el “desarrollo guiado por test”, pero se indican problemas de tiempo y experiencia para poder aplicarla después del curso.
En lo que se refiere al modelo pedagógico aplicado para que los alumnos conozcan e internalicen las prácticas de XP, se determina que las claves de su éxito se encuentran en:

  • reproducir de manera fiel el ambiente de aprendizaje colaborativo acelerado que se genera en la práctica profesional de las metodologías ágiles,
  • y complementar dicho ambiente con una leve capa de acciones docentes orientadas a reflexionar y retroalimentar el dominio de la metodología.

Mi Primer Software Studio

Durante mis primeros años de profesión siempre estuve involucrado en proyectos de software con pocos desarrolladores, en donde cada uno tenía labores separadas y con muy poca interacción entre sí, lo que parece ser la norma generalizada en los desarrollos de software locales. La influencia de esta forma de trabajar llega obviamente a los espacios de trabajo que ocupan los desarrolladores, en donde también es común encontrar ubicaciones que aislan al desarrollador, y que haya equipos que a pesar de trabajar juntos en el mismo piso, están dispersos físicamente. Es así que no es extraño encontrar puestos de trabajo de desarrolladores aislados por cubículos, o bien ubicados en esquinas, lo que ambos casos dificulta que se pueda trabajar con otra persona – lo que probablemente está diseñado así a propósito, para evitar “distracciones”.

Cuando comencé a interiorizarme en Extreme Programming  el 2002, me llamó la atención el énfasis que XP pone en cómo organizar los espacios físicos de trabajo, algo que logre entender posteriormente cuando comprendí la perspectiva ágil sobre el desarrollo de software acerca de que éste último es una actividad primariamente basada en las personas para un continuo compartir y generar conocimiento. Prácticas claves de XP afectan el cómo se debe organizar un ambiente de trabajo, tales como:

  • “Pair Programming” : programación en parejas, es decir., un computador y dos desarrolladores
  • “Stand Up Mettings” : reuniones cortas de pie para sincronizar al equipo al comenzar la jornada
  • “Informative Workspace” : el espacio de trabajo debe retroalimentar el trabajo del equipo, en particular el avance del proyecto

Cuando llegué el 2005 a mi trabajo actual a ser parte de una nueva área de Investigación y Desarrollo en la empresa Microsystem, se definió como uno de mis roles el liderar la renovación metodológica, un arduo trabajo para una organización que cumple este año 30 años en el tema informático.

Una de mis aspiraciones desde el inicio fue (¡por fin!) poder tener un espacio de trabajo “ágil”. Sin embargo, mi primer lugar de trabajo era una oficina muy pequeña, sin luz natural, y mi labor en la práctica era en solitario. Unos meses después logré que se agregara un nuevo ingeniero a mi área (Philippe Camacho), pero quedamos trabajando separados por dos salas de distancia, todo esto debido a la falta de lugar disponible. Intentábamos hacer Pair Programming, pero esto era coartado por el poco espacio y un escritorio de trabajo con cajones que hacían muy incómodo que dos personas se colocasen frente a al mismo PC. Así que tuvimos que usar el chat como medio de coordinación y colaboración, a modo  de “parche”.

Nuestro primer logro fue cuando pudimos derribar una pared, e instalar en el nuevo espacio un tablón a modo de escritorio compartido sobre el cual instalar los equipos de trabajo, y poder programar en parejas fácilmente. La colaboración mejoró ostensiblemente.

Unos meses después mi jefe nos pidió cambiarnos de piso al lado de la gerencia, a lo que pusimos una condición: tener un espacio de trabajo común similar al actual, dado que lo que habíamos ganado nos había costado casi dos años de gestión, lo que no se pudo cumplir antes de que otras necesidades cambiaran el rumbo de trabajo. A mediados del 2007, surgió un proyecto de renovación tecnológica que nos llevó a agrandar el equipo a 6 ingenieros, y a derribar más paredes. Cuando llegó el momento de instalar los nuevos muebles, optamos por módulos construidos en base a tablones similares al primero, pero esta vez móviles, para poder reconfigurar la oficina fácilmente si era necesario. De esta manera el Pair Programming se puedo generalizar al equipo completo.

Pair programming en el nuevo ambiente de trabajo

Al poco andar, vi a necesidad de implementar un Informative Workspace para llevar la gestión de avance del equipo. Como modelo usé el kanban de Toyota a partir del artículo Naked Planning Explained – Kanban in the Small lo que podemos observar en la foto siguiente:

Kanban del avance del proyecto

Dentro de las curiosidades que hemos implementado, les presento nuestra zona de diseño colaborativo, que es una mesa redonda en donde una pizarra sirve de borrador comunitario de ideas, y mi “Pair Station” , que es un PC con dos mouses y dos teclados para hacer más simple el Pair Programming

.

Pizarra para diseño colaborativo

“Pair Station”: Estación de trabajo con facilidades para Pair programming, con dos mouses y dos teclados para agilizar el cambio de roles

Bueno, este es mi deseado y primer “Software Studio”, nombre con que bauticé esta nueva oficina y que plagié flagrantemente de la empresa Role Model Software , aunque ellos aplican el término en un sentido más amplio que el que nosotros hemos logrado. Nos queda mucho por mejorar, pero podemos decir que nuestra oficina sirve para colaborar y hacer nuestro trabajo más entretenido y colaborar mejor.

Más información: