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

#ConstruccionDeSoftware, sobre el título y la tapa

Inicialmente titulamos al libro «Desarrollo ágil» e incluso lo presentamos a la editorial con ese nombre, pero siempre supimos que deberíamos sentarnos a repensarlo.

Llegado el momento de buscar el título definitivo comenzamos compartiendo propuestas por mail, luego hicimos una sesión de brainstorming y así llegamos a 5 títulos candidatos. Luego, con esos 5 títulos, hicimos una encuesta entre un grupo de colegas y de ahí salió el título final: Construcción de software: una mirada ágil.

Respecto de la tapa, la cuestión fue menos pensada (al menos entre los autores) y creo que en un punto, y sin haberlo planeado, quedó mucho mejor de lo esperado. Nuestra idea era simple: tener en la tapa una de las imágenes del libro y el nombre de los seis autores. A partir de ahí fue todo trabajo del equipo de diseño de la editorial. La imagen de tapa pertenece al capítulo 2, donde es utilizada para explicar la idea de desarrollo iterativo e incremental.

Personalmente lo que más me gusta de la tapa es el contraste del título con la imagen y su fiel reflejo del contenido del libro. La palabra Construcción en el título sugiere algo técnico, lo cual contrasta con la imagen que muestra una persona. Este mismo contraste está planteado a lo largo de todo el libro: la construcción de software como un proceso técnico pero llevado a cabo por un conjunto de personas y gobernado por las relaciones entre estas. En este sentido hay capítulos que tratan de cuestiones plenamente técnicas como integración continua y capítulos que tratan de cuestiones completamente humanas como la comunicación entre los miembros del equipo.

Y para coronar este contraste tenemos las primeras líneas del prólogo que gentilmente escribió Juan Gabardini:

—¿Y vos qué hacés, Juan? ¿Seguís trabajando con computadoras?

—Mmm… ahora trabajo más con personas que con computadoras.

Creo que ni habiéndolo planificado habría salido mejor.

tapa_una_mirada_agil

From Heroku to Rackspace

It is the third time I am involved in the moving an application from Heroku to a cloud server. The time the server is running Ubuntu and it is hosted on Rackspace. It was not my decision, I was contacted once the the decision was already made, but in this particular case I think it is a good idea.

The requirement was simple: move the application to a Cloud Server running Ubuntu 14. The application should continue using the same infrastructure services it was using on Heroku, that is: Puma, PostgreSQL and Memcached.

Just like the previous cases I was involved, the setup of the infrastructure is really easy, you can do almost everything with apt-get command.

The «not-so-easy» part is when you have to replace some of the services provided by Heroku. No matter how simple your application is, for sure you will have to deal with application deployment and database backups.

In the next days I will post detailed articles to explain how to implemented this concerns.

Se viene Agiles Argentina 2014

Viernes y Sábado de la semana próxima (26 y 27 de septiembre) se llevarán a cabo las Primeras Jornadas Nacionales de Metodologías Ágiles.

Si bien el evento se realiza en Buenos Aires, la idea es poder reunir gente de todo el territorio nacional y por ello es que los organizadores han provisto un mecanismo para brindar apoyo a los asistentes de otras ciudades.

Además del hito que representa este evento por ser las primeras Jornadas Nacionales sobre el tema en Argentina, hay algunas otras particularidades que lo destacan: el evento es totalmente gratuito, es 100% en formato Open Space y el catering es auto-organizado. Esto se traduce directamente en las siguientes cuestiones:

  • No hay agenda predefinida de sesiones, la agenda es definida al comienzo del evento por las personas presentes. Esto es lo que propone el formato Open Space y aunque pueda sonar raro, puedo dar fe que funciona de maravilla. He participado en unas 20 reuniones con este formato y todas ellas han salido muy bien. Adicionalmente, para este caso particular, hay un espacio online donde los asistentes pueden ir proponiendo de forma anticipada algunas sesiones que les gustaría ocurrieran.
  • El hecho de que el catering sea auto-organizado, reduce mucho el esfuerzo de organización al mismo tiempo que permite que en cierto modo todos los asistentes contribuyan a la organización. Es este caso la forma en que se está organizando el catering es mediante una planilla online donde cada asistente anota que se compromete a llevar.
  • Aunque el evento es de dos días, no es necesario ir los dos días enteros, uno puede elegir un sólo un día o un rato cada día.

Personalmente estoy muy entusiasmado con el evento, en este momento hay unas 18o registradas.
¡Ah! me olvidaba de decirlo: si bien el evento es gratuito es necesario registrarse.

¡Nos allá allá!

AA2014-Final1

 

 

Conferencistas de ASSE 2014

Las presentaciones de los conferencista de ASSE 2014 fueron de las mejores cosas del simposio.

El primer conferencista fue Esteban Feuerstein quien dio una charla introductoria sobre Big Data en la que mencionó las diversas iniciativas de la Fundación Sadosky y el Estado Nacional para impulsar esta temática. Entre estas iniciativas se cuentan diversas oportunidades para formación de profesionales en instituciones nacionales y del exterior.

El segundo conferencista fue Juan Gabardini quien habló sobre Testing en equipos Infectados de Tests. Si bien tengo trato frecuente con Juan e incluso hemos hablado sobre el tema testing en diversas ocasiones, me gustó mucho su presentación. Creo que ha logrado articular de manera muy sólida y consistente varias de las ideas que ha validado en su trabajo de campo.

El tercer conferencista fue Alvaro Ruiz de Mendarozqueta quien hizo una excelente presentación sobre Mejora continua utilizando métodos ágiles. La presentación incluyó interesantes datos estadísticos sobre la industria local del software y las certificaciones de calidad. Luego de presentar el contexto utilizando como base las mencionadas estadísticas, presentó algunos casos de mejora continua en los que trabajó aplicando métodos ágiles.

Los slides utilizados en estas presentaciones están disponibles para descarga aquí.

El pajarraco Scrum con Qubics

El lunes pasado en EIS hicimos la ya clásica actividad de simulación de Scrum conocida como “”El pajarraco Scrum”.

A diferencia de otras veces en lugar de rastis utilizamos qubics lo cual permitió que realizar obras más “estilizadas”. De la simulación participaron 14 alumnos divididos en 3 equipos, cada uno con su correspondiente product owner. Los 3 product owners fuimos Ingrid (alumna colaboradora de la cátedra), Jona (un alumno que ya había cursado la materia) y yo.

Curiosamente a pesar que los cubics son más maleables que los rastis, hubo equipos que llegaron al final de iteración sin cumplir con la visión de producto.

pajarraco_qubic_2

pajarraco_qubic_3

 

 

pajarraco_qubic_1