Agiles 2014, mi presentación sobre automatización de pruebas

Esta mañana di mi sesión sobre pruebas automatizadas. La sala estaba repleta de gente a punto tal que había gente sentada en el piso. Estimo había cerca de unas 80 personas.

Dado que yo ya sabía que no tendría tiempo suficiente para compartir todo el contenido que tenía preparado, compartí esto en con la audiencia y los invité a priorizar los temas a tratar: teoría de automatización y demostraciones de herramientas. Finalmente acordamos comenzar por los temas teóricos y dejar las demos para una sesión del open space de mañana.

Más de la mitad de los asistentes eran de perfil técnico (programadores y testers) y sólo una pequeña parte (unos 10) tenían pruebas automatizadas.

El material utilizado está disponible para descarga aquí.

sesion_agiles_2014

Clase en el posgrado de la UCA

La semana pasada dicté una clase sobre Extreme Programming en el contexto de la especialización en Ingeniería de Software de la UCA. Más concretamente la clase fue en el contexto de la materia Métodos de desarrollo de Software que dicta Andrés Diaz Pace.

Previamente Mariano Tugnarelli había dado una introducción a los métodos ágiles y Scrum. Lo cual preparó el contexto para meternos con XP.

El grupo de alumnos resultó ser bastante heterogéneo, varios de ellos trabajando activamente en el sector de software, algunos electrónicos, algunos graduados recientemente y otros hace ya bastante, en su mayoría Argentinos, pero también varios extranjeros. Muy poco con conocimientos de métodos ágiles.

Inicialmente hicimos una actividad de mitos y verdades la cual nos sirvió de disparador para ir entrando en varias conceptuales.

Algunos recursos interesante relacionados a los que vimos en la clase:

agiles_uca

#ConstruccionDeSoftware, presentación oficial DONE

El pasado 6 de Octubre realizamos la presentación oficial del libro. El acto duró aproximadamente 1 hora y salió acorde a planeado.

Comenzamos con las palabras de Alejandro Oliveros, director de la carrera de Ingeniería en Computación de UNTREF, quien destacó la importancia de que los autores, docentes universitarios y profesionales con amplia experiencia en la industria, hayan decidido volcar sus conocimientos y experiencia en la obra en cuestión.

Luego tomó la palabra Juan Gabardini, amigo y prologuista del libro, quien también hizo alguna referencia a los autores y al desafío de escribir el libro entre 6 personas.

Luego fue el turno de los autores, de antemano decidimos que no hablaríamos los 6 para que el acto no se estirara tanto. El primero fue Diego, quien habló del surgimiento de los métodos ágiles. A continuación Carlos habló sobre las motivaciones que nos llevaron a escribir este libro. Después llegó mi turno y hablé las particularidades de este libro con respecto a otros del tema. A partir de ahí el resto de la presentación estuvo dedicado a responder preguntas del auditorio y ahí sí participamos los 6 autores.

Para mi el acto fue el hito de cierre del proyecto que iniciamos los 6 autores hace más dos años. Aún hay algunas cuestiones en las que seguiremos trabajando (por ejemplo la publicación digital) pero exceden el compromiso inicial que asumimos como autores.

Más allá de las formalidades, el acto tuvo para mi cierta carga emotiva dada por la presencia de amigos y familiares.

Al mismo tiempo y más allá del producto de este trabajo que representa el libro, el proceso de escritura me resultó muy enriquecedor y me dejó muchísimas enseñanzas. Agradezco en este sentido a mis colegas co-autores por la experiencia compartida durante la escritura.

presentacion_libro

 

#ConstruccionDeSoftware, sobre los autores

Quiero dedicar algunas líneas para referirme a los autores del libro.

Los autores somos 6, tal como aparecemos en el libro: Nicolás Paez, Diego Fontdevila, Pablo Suárez, Carlos Fontela, Marcio Degiovannini y Alejandro Molinari. Todos egresados y docentes de la Facultad de Ingeniería de la Universidad de Buenos Aires. Al mismo tiempo todos nos desempeñamos en la industria del software desde hace años. Lo que hemos escrito en el libro es el resultado del estudio y la aplicación de métodos ágiles en nuestros ámbitos cotidianos a tanto a nivel académico como industrial.

Un punto interesante más allá de la cantidad de autores es que todos firmamos por el todo, o sea, el libro no es un compendio de capítulos escritos por distintos autores con opiniones distintas. Si bien hubo una división de capítulos a la hora de escribir, luego de eso, trabajamos fuertemente para acordar contenido y opiniones y asegurar la integridad conceptual de la obra.

También me parece interesante destacar la heterogeneidad de roles y experiencias entre los autores. Marcio y yo tenemos claramente un perfil muy técnico y trabajamos a diario en cuestiones de código e incluso a veces de infraestructura. Alejandro y Pablo tienen un perfil más de gestión. Carlos sin duda es el de mayor experiencia profesional pero al mismo tiempo es posiblemente el más académico de todos. Diego alterna entre cuestiones de gestión de proyecto, gestión organizacional y cuestiones técnicas. Al mismo tiempo Diego y Marcio tienen espíritu emprendedor mientras que Pablo tiene mucha experiencia en ambientes corporativos. Y lo curioso de todo esto es que esta heterogeneidad no fue planificada.

autores

Y un día me fui de tema y la pasé bien: Open Space BA Turismo

El jueves pasado participé como facilitador de una jornada de trabajo organizada por el área de turismo del gobierno de la Ciudad de Buenos Aires.

Si bien me he desempeñado como facilitador en distintos eventos en el pasado, todos ellos siempre habían estado relacionados de una u otra forma al desarrollo de software. Cuando María e Ingrid de Fuerza Tres me invitaron a participar de esta actividad, lo dudé 30 segundos y acepté, ya que me pareció un desafío interesante por obligarme a salir de mi zona de confort y en cierto modo probarme en un contexto distinto al que suelo trabajar. Otro punto que me motivó para participar fue el hecho de trabajar con el gobierno, algo que no suelo hacer y que me resulta interesante ya que muchas veces las iniciativas de gobierno tienen impacto en la sociedad, cosa bastante menos común en el sector privado.

La semana previa al evento tuvimos una reunión de coordinación con todos los miembros del equipo que estaría a cargo de la facilitación. Debo admitir que por un momento me sentí sapo de otro pozo ya que la mayoría del equipo procedía de campos de trabajo bastantes distintos al mío, pero a medida que comenzamos a interactuar fui sintiéndome más cómodo.

La jornada tuvo lugar en el Centro Metropolitano de diseño y los participantes eran personas del sector público y privado del área de turismo. Largamos alrededor de las 9.30 con la bienvenida de uno de los funcionarios del ministerio. Luego de ello María Mauro y yo nos encargamos de explicar la dinámica de trabajo la cual fue en cierto modo similar a la de un open space (de hecho el evento estaba titulado Open Space Turismo). Inicialmente hubo un marketplace donde para mi sorpresa los participantes (casi en su totalidad sin experiencia en open spaces) presentaron muchísimas propuestas a un ritmo que nunca me hubiera imaginado. No terminaba uno de explicar su propuesta que ya había otro tomando su lugar. Increible. Luego de ello se paso a votar las propuestas y se ubicaron en la grilla las 10 propuesta más votadas y que serían sobre las que se trabajaría continuación. Cada propuesta se trabajó en un mesa con asistencia de los interesados y la colaboración un facilitador.

open_space_turismo

La facilitación gráfica fue realizada por Patricia Mollá.

El trabajo en las mesas duró casi dos horas y estuvo enfocado en identificar acciones concretas para realizar en cada una de las temáticas en cuestión. Ya hacía el mediodía se hizo una puesta en común de lo trabajado en las mesas y otro funcionario se encargó de las palabras de clausura. Como cierre compartimos un almuerzo.

Aún tenemos pendiente como cierre del trabajo la entrega de un informe, tareas que esperamos completar esta semana.

Una vez más la dinámica de agenda abierta característica de los Open Space ha resultado exitosa, y más aún, creo que funcionó mucho mejor que en algunos otros encuentros en los que he participado.

Me sentí muy bien, me gustó mucho el trabajo con el grupo de facilitadores, la demás gente de la organización y los participantes. Creo que el todo el evento estuvo muy bien.

Finalmente quiero agradecer especialmente a Maria e Ingrid por haberme invitado a participar de esta experiencia.

acreditacion_open_space_turismo

Un programador de otro pozo

Recientemente leí un artículo escrito por Hernán Wilkilson sobre las nuevas características incluidas en la versión 8 de Java. Más allá del interesante análisis que hace Hernán, creo que son muy valiosas las ideas compartidas en la conclusión del artículo (recomiendo tomarse unos minutos para leerlo) sobre todo el llamado a los programadores a “abrir a la mente”. Profundizando en este llamado quiero sumar algunas impresiones.

Como dice la frase “el que tiene un martillo en la mano sólo ve clavos”, las herramientas que utilizamos para resolver los problemas influyen de forma determinante en las soluciones que diseñamos. Si bien ya hace años que tomé conciencia sobre este hecho, me sorprendí muchísimo cuando hace unos meses me sumé a trabajar en un proyecto Java con un equipo de experimentados programadores que en su carrera profesional habían trabajado casi exclusivamente con Java. O sea, habían usado otros lenguajes pero muy por arriba. Por mi parte, he trabajado mucho con Ruby y C#, un poco menos con Smalltalk y Javascript y muy poco con Java, Python y Php. Estas diferencias de experiencia han hecho que a la hora de plantear soluciones nos encontremos con propuestas bastante distintas. Un ejemplo de esto que me resulta muy chocante, y que es muy común en el mundo Java, es la práctica de separar datos y lógica. Esto lleva a tener clases que son simples contenedores de datos y clases que sólo tienen métodos para manipular datos contenidos en otros objetos, algo bastante anti-POO.

Creo que lo ideal para todo equipo sería contar con programadores “políglotas” pero me parece que no es algo muy común. Mi impresión es que en general las empresas muchas veces apuntan a sacar el mayor provecho de sus “recursos” y eso provoca que “los recursos” se especialicen y “encierren” en una única tecnología. Ojo, no es algo que pase sólo en las empresas, muchos veces quienes trabajan en forma independiente también deciden enfocarse/encerrarse tecnológicamente, ya sea por cuestiones de comodidad y/o rentabilidad.

Dada esta situación y desde el punto de vista de equipo creo que puede resultar interesante contar con un un programador de otro pozo, o sea, integrar en el equipo un programador que tenga experiencia en otros lenguajes/tecnologías pues puede aportar una visión diferente y enriquecer al equipo.

Agiles Argentina 2014, sesiones dia 2

Comparto aquí algunas notas de las sesiones que participé.

Software Craftsmanship

La sesión fue propuesta por Emilio Gutter quien comenzó contando el surgimiento del movimiento de software craftsmanship a partir del cual surgió un pequeño debate sobre el gap entre la formación académica y el ejercicio profesional.

En línea con esto Emilio mencionó un programa apprenticeship que están llevando a cabo en 10 Pines.

Finalmente (no tengo en claro exactamente cómo fue) terminamos hablando sobre lenguajes de programación y la inclemencia de usar C en los primeros cursos de programación.

Sesión 2: Intro XP

A pedido del público esta sesión fue una repetición de la sesión que se había dictado el día anterior, pero en esta ocasión con la participación de más gente.

Sesión 3: Prácticas Pre-Agile

Esta sesión fue un adelanto de la sesión que daremos con @dfontde en Agiles 2014. La idea, como comenté tiempo atrás, es repasar aquellas prácticas, en muchos anteriores a las prácticas ágiles, que han demostrado gran utilidad y que en muchos casos han servido de base para las prácticas ágiles. Me gustó mucho como salió la sesión.

Sesión 4: Facilitación gráfica

Decidí sumarme a esta sesión para aprender de una vez los principios de está técnica que hasta ahora siempre había tocado de oído. La sesión tuvo dos partes, una primera donde se explicó la teoría y una segunda donde la pusimos en práctica. Me vino muy bien ya que además de lo visto en la sesión me traje varios punteros para profundizar entre ellos algunos recursos de Zulma Pataroyo [1][2] una experta del tema.

 

Hasta aquí llegó mi día, lamentablemente tenía otros compromisos y me perdí la última sesión y la retrospectiva.

agiles_arg_dia_2

 

[1] http://facilitaciongrafica.com/
[2] http://pataleta.net/

Centralized Log Services: LogEntries and Papertrail

In the cloud era there are several companies offering centralized log services. In general terms these services consist in 2 components:

  1. A client component that takes care of collecting log information and sending it to centralized storage.
  2. A web application that allows you to browse the centralized storage

One company that offers this kind of service is Logentries. I used it for a couple of Ruby applications, some of them hosted on Heroku and others hosted on my own server. In the case of Heroku apps, the integration with LogEntries is transparent (you don’t need to modify your app code), you just have to add logentries plugin to your Heroku app , configure it and that’s all, all log information is sent to LogEntries. For applications running outside Heroku, you can use logentries gem to your app, and just make your app to use LogEntries logger.

Other service I have used is Papertrail. I used it for Ruby and .Net applications hosted on my own servers and in each case I have used a different integration strategy. For .Net apps I like to use Log4Net library which natively integrates with Papertrail (details can be found here). In the case of Ruby apps, I have used a different strategy. I install on my server a client application that takes care of reading local log files and push them to the Papertrial website. This strategy is totally transparent for the application and is application agnostic: no matter what technology your app is built on.

lgentries

#ConstruccionDeSoftware, presentación oficial

Ya tenemos fecha para la presentación oficial del libro: Lunes 6 de Octubre a las 17 hs, en la sala auditorio 3 del Centro Cultural Borges.

Primero hablará Alejandro Oliveros, director de la carrera de Ingeniería en Computación de la UNTREF. Luego hablará Juan Gabardini, amigo y prologuista del libro y finalmente hablaremos los autores. Estamos pensando en hacer alguna dinámica para que la audiencia puede participar y que el evento se más interactivo.

¡Nos vemos el lunes!

presentacion_libro

Agiles Argentina 2014, sesiones dia 1

Comparto aquí algunas notas de las sesiones que participé.

Agilidad en empresas duras

La primer sesión que asistí fue propuesta por gente de INVAP, una empresa Argentina dedicada al desarrollo de satélites y reactores nucleares. El título de la sesión fue (aproximadamente) “Agilidad en empresas duras”.
La sesión fue facilitada por Tommy Christie y comenzó una breve introducción del contexto de la empresa y luego debatimos sobre la aplicabilidad de la agilidad en dicho contexto.
Durante el debate se  mencionaron los siguientes puntos:

  • Los métodos ágiles no son aplicables a todos los proyectos (algo que siempre digo pero no fui yo quien lo dijo esta vez ;-))
  • Más allá del punto anterior, hay prácticas puntuales del agilismo que pueden agregar valor aún no se adapte el agilismo en su totalidad

Calidad y Agilidad

Esta sesión fue facilitada por JuanJo Zapico (@JJZapico) y fue, en mi opinión, de las sesiones más interesantes del día. Juan comenzó contando un caso y luego se abrió el debate entre los más 20 participantes de la sesión que aportaron diversas experiencias por demás interesantes. Si bien el nombre de la sesión decía calidad, la realidad es el que el foco estuvo principalmente en testing. En un momento de la sesión pregunte quienes utilizaban pruebas automatizadas y me sorprendió que aproximadamente la mitad contestó afirmativamente.

Introducción a XP

Esta sesión la propuse yo como una sesión introductoria. Los asistentes ya estaba familiarizados con Scrum y por ello nos centramos en aquellos puntos en los que XP complementa lo propuesto por Scrum: prácticas de ingeniería.

Refinamiento de user stories

No recuerdo quien propuso esta sesión pero recuerdo que me gustó. Uno de los debates que se dieron durante la sesión fue al respecto del nivel de detalle de las stories y cuánto invertir en ello.

Fracasos

Esta sesión también la propuse yo, esta vez con la idea de debatir sobre los criterios de éxito de los proyectos y compartir experiencias no tan exitosas entre los asistentes. Comenzamos hablando sobre los parámetros tradicionales de éxito (tiempo, alcance y costo) y luego de compartir algunos casos fuimos replanteando esta visión a la luz de los métodos ágiles. Me gustó mucho cómo salió la sesión y me sorprendieron (para bien y para mal) algunas opinión que encontré entre los asistentes.

Mapa de herramientas

Esta sesión fue facilitada por otro de los muchachos de INVAP con la idea de compartir herramientas de soporte para el desarrollo. Si bien la sesión me gustó no saqué nada nuevo más allá de las ganas de experimentar con Mercurial.

Retrospectiva

Cerramos el día con una retrospectiva para intentar identificar puntos de mejora para el día siguiente. Se rescataron algunos puntos interesantes, mayormente relacionados a cuestiones operativas y de logística.

aa_2014_1