The Rules goes live!

Hoy finalmente salimos en producción con The Rules luego de 3 intensas semanas de trabajo. Una aplicación no demasiado compleja pero un proyecto por demás interesante:

  • Equipo de proyecto distribuido en diversas ciudades alrededor del mundo: New York (US), Austin (US), Chennai (India) y Buenos Aires (Argentina)
  • Contenido en 5 idiomas, modificable en cualquier momento por un editor
  • Integración con varios sistemas externos (CMS, PayPal, SendGrid, etc)
  • Y lo más dificil (a mi parecer), crear la interface gráfica de la aplicación en base a las ideas de diseñadores expresadas en PhotoShop, menos mal que en el equipo estaba Gabriel C, un capo con cuestiones de HTML/CSS.

Como infraestura de desarrollo utilizamos GitHub y Jenkins. En Jenkins contamos  con 4 jobs: integración contínua, integración, deploy a staging y deploy a producción. Para las comunicaciones utilizamos GoToMeeting y Campfire. Esta última herramienta la podria describir como una sala de chat que donde va quedando guardada la historia de conversaciones y que permite insertar imágenes Nos resultó especialmente útil para hacer troubleshooting de algunas cuestiones. Resultaba interesante ver como a la gente en distintos usos horarios iba entrando y saliendo acorde avanzaba el día. En cuanto a la infraestructura de staging y producción corremos sobre Heroku.

El primer hito está completo, ahora tenemos un par de semanas más hasta el próximo release.

Academia e Ingeniería de software

Desde que empecé a dictar la materia de Ingeniería de Software en UNQ, comencé a prestar mayor atención a los diferentes enfoques para enseañar esta disciplina. En Agiles 2012 y luego en mi reciente viaje a Venezuela pude hablar con gente de diversas instituciones y confirmar la teoría que aquí expongo.

El enfoque utilizado para enseñar Ingenieria de Software depende de carrera que uno analice, ya que cada carrera le da distinta relevancia al tema. Hay carreras en las que simplemente hay una o dos materias de Ingeniería de Software, mientras que otras tienen una materia por cada disciplina de la Ingeniería de Software. En este sentido la Tecnicatura en Programación de UNQ pertenece al primer grupo, ya que solo tiene una materia del tema (la que dicto yo ;-)). Por su parte, la Ingeniería informática de UBA está en el otro extremo, tiene una materia por cada disciplina: Análisis, Diseño, Administración de Proyectos, Arquitectura, Calidad, etc, etc.

El enfoque utilizado influye, como es de esperar, en los contenidos impartidos. Si uno cuenta con varias materias, es posible tratar distintos enfoques y técnicas con un nivel de profundidad interesante, pero si uno cuenta con sólo 1 o 2 materias, entonces se ve en un dilema: estudiar un único enfoque con cierta profundidad o bien ser más generalista y estudiar varios enfoques de forma más superficial. En la tecnicatura de UNQ solo tenemos una materia de Ingenieria de Software y la estrategia elegida fue centrarnos en un sólo enfoque (el de los métodos ágiles) aunque hacia el final de la materia hacemos una breve mención de waterfall y UP. Esta decisión estuvo motivada por el hecho de que pretendemos que al finalizar la carrera, el alumno pueda llevar adelante un proyecto de punta a punta y para ello creemos más valioso conocer un enfoque en detalle que conocer varios enfoques de forma superficial.

En base a lo que he hablado, leido y compartido con colegas de distintas instituciones, me da la impresión que en la actualidad la mayoría de las instituciones (en América del Sur) enseñan Ingeniería de Software utilizando un enfoque «tradicional» basado en los clásicos de Somerville y Pressman o bien se inclinan a un enfoque un poco más concreto y se basan en el Proceso Unificado. Adicionalmente en algunos casos se dictan materias complementarias (optativas generalmente) donde se ven enfoques alternativos (agile, waterfall, etc, etc).

Si algún lector no comparte esta visión, me gustaria que expusiera su opinión.

Agile Open Seguridad 2012 @Baires

Este sábado 24 a partir de las 9 se llevará a cabo este encuentro en las instalaciones de Universidad de Belgrano. Si bien el formato es open space, ya hay algunas sesiones propuestas.

Aqui les dejo un par de links con más información: www.agiles.org/agile-open-tour/agile-open-buenos-aires-2012—seguridad y www.agiles.org/agile-open-tour/agile-open-buenos-aires-2012—seguridad/difusion

Agile Tour Venezuela 2012: Caracas

La jornada se desarrollo en las instalaciones de la Universidad Metropolitana, un muy lindo lugar ubicado en un extremo de la ciudad.

Fue una jornada muy intensa. Hubo más de 120 asistentes. El evento comenzó con las palabras de apertura de las autoridades de la universidad, seguidas por las palabras de Gustavo uno de los organizadores del evento. Luego de eso, al igual que en Mérida, facilité la dinámica de apertura, la cual resulto un poco más caótica y entretenida debido a la gran cantidad de gente. A continuación de la dinámica, di mi sesión «El paradigma del Valor», cuyos slides están disponibles aquí.

La seguiente sesion fue la de @carlosgabriel_, quien habló sobre CMMI y Agil. Una interesante sesión demistificadora que en definitiva apuntaba a recomendar tomar lo mejor de ambos mundos.

Ya hacia las 11 de la mañana estuvo la sesión de @gustavobonalde la cual trató sobre prácticas ágiles para emprendedores y ONGs.

La última sesión de la mañana fue la de Carlos Magurno quien compartió algunas de sus experiencias aplicando Scrum. Fue una sesión muy interesante con mucho del  mucho real.

La tarde comenzó con la sesión de Adrián Moya: Especificación por Ejemplos, una interesante sesión introductoria al tema que despertó la atención varios de los asistentes (habia entre la audiancia unas 10 personas dedicadas al testing).

Seguimos con una breve sesión a cargo de un representante del PMI quien habló sobre la certificación Agile del PMI, una alternativa interesante para quienes busquen una certificación. No tengo mucho que decir de esta sesión, solo una frase que me resulto muy graciosa: «La fe mueve montañas, pero hay que pagar«.

La tercer sesión de la tarde estuvo a cargo de Rafael Alvarez y su titulo fue: ¿Es la agilidad suficiente?. La sesión estuvo bien, aunque hay ciertos puntos que no compartí, pero más allá de esto el orador tenia una forma de exponer los temas y llevar la sesión que hacia que el público se mantuviera enganchado todo el tiempo (al menos eso me pasó a mi).

La última sesión tradicional de la tarde fue una introducción a Lean Startup a cargo de Guillermo Velazquez, apenas la pude ver pues estaba coordinando algunas cuestiones para el Open Space que venia a continuación.

La última parte del evento fue en formato open space, hubo unas 15 propuestas, pero solo pudimos hacer 8. Fue el primer open space para casi toda la audiencia y en retrospectiva la gente manifestó que les gustó mucho. Yo propuse (e hice) una sesión que presenté como «Un día XP» en la que conté un día trabajo típico al usar esta técnica.  También hubo sesiones Análisis de requirimientos, juegos de resolución de conflicto, scrum, etc, etc.

Finalmente cerramos el dia con una dinámica de retrospectiva.

Quedé verdaderamente sorprendido por la cantidad de preguntas que que hubo en todas las sesiones.

En términos generales tanto los asistentes como los organizadores quedaron muy contento con la jornada.

Aqui les dejo una foto me que tomé con el equipo de organizadores.

Agile Tour Venezuela 2012: Mérida

Por estoy dias me encuentro en Venezuela, pues he sido invitado a participar como orador de la edición 2012 del Agile Tour Venezuela. Este año el tour tiene dos escalas: Mérida (8/11) y Caracas (10/11).

Ayer fue el evento el Mérida. La cita fue en las instalaciones de la facultad de ingeniería de la Universidad de Los Andes. La jornada comenzó 8.30 con la apertura de @pablolis, yo hice una dinámica para romper el hielo y que gente se suelte.

A continuación fue el turno de mi sesión: El paradigma del Valor que como su nombre lo indica estuvo centrada en este elemento central de los métodos agiles que curiosamente no es nombrado explícitamente en el manifiesto (aunque sí en los principios).

Luego de mi sesión tuvimos un coffee break y a continuación estuvo la sesión de Marxjony quien compartió su experiencia de aplicación de Scrum en un organismo estatal de Venezuela.

La siguiente sesión fue la Gustavo Bazán, quien habló sobre BDD, una interesante exposición que cubrió muy bien el tema. Luego de la sesión tuvimos un ameno debate sobre la forma de escribir las especificaciones.

La agenda de la tarde fue definida on-the-fly, durante la mañana pusimos una cartelera para que los asistentes pusieran post-its con sus inquietudes/expectativas/consultas, y luego en base a ello definimos las sesiones de la tarde. Fue asi que la tarde comenzó con dos sesiones en paralelo. Una de ellas fue facilitadas por PabloLis y trató sobre Scrum y cuestiones de gestión ágil. La otra fue facilitada por mi y fue básicamente un coding dojo usando la kata del Login. A continuación tuvimos una sesión plenaria en la que en la que hicimos la dinámica de la Fábrica de Aviones. Tuvimos 6 grupos de trabajo y 3 product owners (Pablo, Eli y yo). A diferencia de otras ocasiones, permitimos que cada grupo definiera la duración de sus iteraciones, lo cual hace que la sesión sea un poco más caótica pero creo que vale la pena pues resulta más enriquecedor para los grupos.

Una vez finalizada la dinámica de los aviones, hicimos el cierra de la jornada con una retrospectiva. Los asistentes se manifestaron muy contentos y conformes con la jornada, surgieron un par de propuesta de hacer el evento más seguido o incluso hacer de mayor duración (2 jornadas completas).

Personalmente quedé muy satisfecho, hubo muy buena energia durante toda la jornada y me resultó muy enriquecedor el intercambio con gente de un contexto diferente al mio.

¡Gracias totales!

Agiles 2012: Día #3

El día completo fue con dinámica de Open Space y fue facilitado por Alan Cyment (@acyment).

La primer sesión que asistí fue la propuesta por Hernán Wilkinson, en la que hablamos sobre lambdas, closures y continuations. Muy interesante (y muy techie).

Luego participé de la sesión sobre la comunidad, en la que compartimos experiencias de las comunidades de los distintos paises de latinoamerica.

Ya por la tardé, estuve en una sesión sobre contratos ágiles, de la cual me llevé algunos puntos interesantes. En particular me gustó el enfoque presentado por Carlos (@carlosgabriel_).

Finalmente, asistí a una sesión facilitada por un joven de Intel cuyo nombre no recuerdo, en la que debatimos sobre distintos enfoques para atacar la deuda técnica. De aquí tambień saqué una listita de ideas.

Hacia las 5 de la tarde, Alan facilitó en cierre del Open space y a continuación los presidentes del evento, EmilioG y Pablo RF, hicieron el cierre y facilitaron la retrospectiva. Más allá de los clásicos agradecimientos a los sponsors, voluntarios y organizadores, el cierre contó con el condimento adicional del anuncio de la sede de la seguiente conferencia: Agiles 2013 será en Lima, ¡allí vamos!

Agiles 2012: Día #2

El día comenzó con el excelente keynote de Martin Salias (@MartinSalias) hablando sobre agilidad en las organizaciones. Resultó muy interesante la reflexión de Martín sobre el hecho de que el manifiesto ágil en sus 4 afirmaciones solo hace referencia al software en una ellas: Software funcionando sobre documentación exhaustiva. Entonces, si reemplazamos Software funcionando por Innovación de producto, podemos aplicar el manifiesto a cualquier organización. Una particularidad interesante de este keynote fue que la última parte estuvo protagonizada por la audiciencia, ya que Martín invitó a los asistentes a compartir sus experiencias/opiniones.

Luego del keynote asistí a la sesión «Refactoring Conversation Smells», facilitada por Luis Parzianello (@lcparzianello) . Generalmente estamos acostumbrados a hablar de code smells para referirnos a situaciones en el código de una aplicación que delatan algún posible problema. En el mismo sentido, es posible detectar «posibles problemas» en las conversaciones. Basada en esta analogia, la sesión tuvo una primera parte de exposición/discusión y luego una segunda dedicada a actividades prácticas desarrolladas de a pares. Me gustó y espero poder aplicar algunas de las cosas vistas.

Luego del almuerzo asistí a la sesión dictada por Thomas Wallet, en la cual jugamos al Business Value Game, un juego muy entretenido sobre valor de negocio, muy apropiado para aquellos que se estan acercando al paradigma del foco en el valor propuesto por los métodos ágiles.

Este segundo día cerró con el evento social de la conferencia, que se desarrolló en el bar llamado Canario Negro, donde entre pizzas, cerveza y karaoke, pasamos una velada muy entretenida.

Agiles 2012: Dia #1

La jornada comenzó con el KeyNote de David Hussman, cuyo título me resultó más que llamativo: «Shut up and Play Yer Guitar». Para guiar la presentación utilizó una analogía con el dominio de la producción musical, viendo al equipo como el conjunto de músicos y al scrum master como el productor. Sobre este hilo conductor habló sobre cómo agile ha ayudado a operar transformaciones en la forma que desarrollamos software. Personalmente me gustó mucho la idea de que no trabajamos en desarrollo de software sino en construcción de productos. Tengo varias notas de esta sesión, pero antes de volcarlas necesito procesarlas.

La siguiente sesión que asistí, fue la que dicté yo mismo: «Tutorial de Integración Contínua». Quedé muy contento con cómo salió. El tutorial duró 2 horas, hubo unos 25 asistentes y casi todos se quedaron hasta el final. Un desafio que debí afrontar fue que el 20% de los asistentes trabajaba con la práctica, el 40% la conocia «levemente» pero no la aplicaba y el 40% restante apenas si la habia escuchado. A pesar de esto, creo que logré un buen balance entre la teoría y los detalles de implementación. Para guiar la sesión utilicé este Prezi.

Luego del almuerzo asistí a una sesión excelente dictada por Angel Núñez Salazar (@snahider). La sesión se llamó «Test-Driven JavaScript». En la misma se venimos todo un set de herramientas mientra codificamos un un ahorcado. Saqué un montón de herramientas para investigar: Mocha, Sinon, Chai, Grunt y otras. Quedé deslumbrado por la velicidad con la que trabajó Angél y por la profundidad de sus conocimientos.

La última sesión que asistí fue la dictada por José Romaniello (@jfroma): «Opensource para agilizar». La misma consistió principalmente en ciertas ideas/opiniones que José quería compartir, algunas de las cuales me resultaron muy interesantes. Entre ellas me gustó una que se podria resumir como: «open source no es solamente poner disponible el código, sino que también sea posible realizar aportes».

Finalizada la jornada en UTN, cerramos la jornada en una cerveria del barrio universitario.

Agiles 2012: un poco de contexto

El evento se realiza en Universidad Tecnológica Nacional, Facultad Regional Regional (el mismo lugar donde se realizó JAIIO en año pasado).

En esta ocasión el viaje lo hice junto a mis colegas Kleerianos, salimos de Buenos Aires en un convoy de dos autos alrededor de las 15 hs. y arribamos a Córdoba alrededor de las 22 hs.

El evento está organizado en 3 dias, los 2 primeros de sesiones «tradicionales» y el tercero 100% open space.

En los próximos dias estaré escribiendo sobre lo que vaya aconteciendo en la conferencia.