Despedida de UNQ

El mes pasado cerré una etapa en mi carrera docente, presente mi renuncia en UNQ. No fue una decisión fácil, en UNQ estuve por primera vez a cargo de una materia lo cual fue un gran paso en mi carrera. Por otro lado tuve la oportunidad de aprender y compartir muchas experiencias tanto con colegas docentes como con alumnos. También tuve la oportunidad de participar de algunos de los debates de armado de la Licenciatura en Desarrollo de Software (que luego debió renombrarse por cuestiones administrativas). Por cinco años forme parte de un equipo docente de excelencia.

En estos cinco años, participé inicialmente del dictado de Objetos 1 y luego estuve a cargo de Ingeniería de Software. En los 9 cuatrimestres que dicté esta última materia tuve un total de 105 alumnos con un porcentaje de aprobación del 89%.

Pero como mencioné tiempo atrás, este año decidí dar un nuevo paso en mi carrera y tomé un cargo de mayor dedicación en UNTREF con el objetivo de trabajar en un proyecto de investigación.

A pesar de dejar mi cargo espero poder seguir en contacto con la comunidad UNQ y poder participar de futuras actividades.

Agradezco a toda la comunidad de UNQ  por las experiencias compartidas y muy especialmente a Fidel, quien me abrió las puertas de TPI y confió en mi para el dictado de Ingeniería de Software.

¡Gracias totales!

Nuevo libro: Herramientas Ágiles

Durante el AOC 2016 repetimos la experiencia del AOC 2015 y escribimos un libro y es justamente ese segundo libro el que ahora está disponible.

El primer libro trató sobre relatos de experiencias del uso del métodos ágiles. Este segundo libro trata sobre técnicas, lo cual me parece en cierto modo una camino natural: primero uno hace, experimenta, luego a partir de la experiencia repetida, generaliza dando origen a técnicas aplicables distintos contextos.

El libro está disponible en forma totalmente gratuita en diversos formatos digitales en la plataforma GitBook y también está disponible en forma físico en la plataforma Hesiodo (el formato físico no es gratuito).

¡Mis felicitaciones y agradecimientos a todos los autores por sumarse a esta iniciativa y lograr este nuevo entregable!

herramientas_agiles

Jenkins 2 ha llegado

Así es, Jenkins 2 finalmente está aquí. Según se cuenta en el sitio oficial los puntos destacados de esta nueva versión mayor (major release) son:

  • Soporte nativo para delivery pipelines
  • Mejoras de usabilidad
  • Completa compatibilidad con versiones anteriores

Tuve la oportunidad de verificarlos cuando pasé uno de mis proyectos a la versión pre-release que Jenkins publicó hace un tiempo. Adicionalmente a esto noté:

  • “Independencia” de Maven, lo pongo entre comillas porque no estoy seguro que el término apropiado sea independencia. Lo que noté es que en la versión anterior, al crear un nuevo job existía la opción “proyecto Maven”, cosa que ya no existe. Creo que inicialmente esto tenía sentido pues Jenkins había surgido en el mundo Java, pero en los últimos años creo que ha transcendido ampliamente el mundo Java y se ha convertido en la herramienta de-facto para integración continua.
  • Integración con Gradle para la definición de los pipelines, los cual tiene mucho sentido ya que Gradle es una herramienta que se posiciona como herramienta de build genérica capaz de buildear proyectos en distintos lenguajes.
  • Se removió el soporte nativo para repositorios CVS, quedándo nativamente soporte solo para Git y Subversion.

Más allá de estos puntos, un detalle que me llamó positivamente la atención fue que como parte del proceso de instalación, se ofrece instalar un conjunto de plugins que son los más comunmente utilizados por la comunidad.

A partir de esta nueva versión de Jenkins y de algunas charlas que he tenido con mi equipo actual de proyecto he decido empezar a trabajar en la preparación de un curso de Jenkins para dictar en Julio o Agosto.

Tipado estático vs. Tipado dinámico

Como de costumbre luego del almuerzo dominical, me senté con un café a leer mi lista de blogs. Fue en ese momento cuando me encontré con este artículo que había publicado Uncle Bob ese mismo día. El artículo está titulado “Type Wars” y en forma muy resumida es una recorrida histórica de esta interminable contienda, con opiniones intercaladas del autor y un cierre interesante.

Este tema del tipado es una cuestión que me encuentro recurrentemente en mis clases todos los cuatrimestres. En FIUBA la mayoría de los alumnos viene de programar Pascal, C y C++, mientras que en UNTREF todos vienen de programar Java. Cada vez que en las materias empezamos a trabajar con lenguajes de tipado dinámico (Smalltalk o Ruby) algunos alumnos se sienten desconcertados y en más de una ocasión surge el debate en clase. De ahora en más voy a referenciarlos directamente al artículo de Uncle Bob, más aún, voy a incluir el artículo como lectura obligatoria.

Para cerrar les recomiendo dedicar un rato para leer el artículo completo y les dejo aquí una frase excelente incluida en el mismo:

…when a Java programmer gets used to TDD, they start asking themselves a very important question: “Why am I wasting time satisfying the type constraints of Java when my unit tests are already checking everything?” Those programmers begin to realize that they could become much more productive by switching to a dynamically typed language like Ruby or Python.

Extracto del artículo “Type Wars, de Uncle Bob“, artículo completo disponible en: http://blog.cleancoder.com/uncle-bob/2016/05/01/TypeWars.html

Preparing my session for XPConf @ Edinburgh

My session proposal for the Extreme Programming Conference was accepted so now I must practice to ensure a clean delivery.xp2016logo

The session is based on my Software Engineering course at UNTreF but I need to perform some modifications in order to delivery it in 6 hours.

The session is called “Modern Extreme Programming Workshop” and it is focused on how Extreme Programming practices have evolved and how they are being used by (some) development teams nowadays. The session is hands-on so the participant we will have the chance to apply XP practices while working in a “real world” Java application. Among the practices we will cover Behaviour-Driven Development, Mob Programming, and Continuous Delivery. Regarding tools and technologies, we will work with Java, Gradle, Cucumber, Jenkins and Ansible.

To practice before the conference I will run this workshop in Buenos Aires (but in English). If you are interested in participating just fill this form (programming experience required).

Nueva aventura: proyecto de investigación

Luego de algunas discretas expediciones esporádicas al mundo de la investigación, este año voy a embarcarme formalmente en un proyecto de investigación junto a Diego Fontdevila y Alejandro Oliveros.

Si bien aún estamos en etapa de definiciones nuestro trabajo entra en la temática ingeniería de software y más específicamente en el área de prácticas y procesos.

Hemos decidido intentar gestionar este proyecto de investigación de forma similar a como gestionamos cotidianamente nuestros proyectos de desarrollo software. En ese sentido hemos bautizado el proyecto con un nombre clave: Paladine (nombre del líder de los hechiceros en el mundo DrangonLance).

Como parte de mi formación para llevar adelante este trabajo estoy cursando un seminario de Introducción a los métodos experimentales de investigación en Ingeniería de Software. Hasta el momento llevamos tan solo dos encuentros y ambos me han resultado extremadamente enriquecedores.

Continuará…