Día del profesor

Hoy 17 de Septiembre es el día del Profesor en conmemoración del paso a la inmortalidad de José Manuel Estrada. Les comparto esta breve reseña publicada por el diario El Tribuno (Jujuy).

Les deseo un feliz dia todos mis colegas y les dejo esta frase que refleja claramente mi elección

«Ser profesor es la elección de una forma de vida que se asume desde la labor diaria, las exigencias, la lucha, el agotamiento, la esperanza y la alegría de hacer lo que eligieron ser.»

PD: bracias Gabi Arevalo por compartir

Continuous Delivery en FIUBA

La semana pasada asistí a la presentación del trabajo profesional de Hernán Carrizo.

El trabajo consistió en la implementación de un pipeline de continuous delivery en un proyecto existente. Tomé algunas notas interesantes, de directa aplicación en mi actividad profesional actual. Pero sin duda lo mejor de todo es ver que en Fiuba se hacen trabajos sobre temáticas actuales e incluso innovadoras en un punto.

Algo que me llamó la atención fue una de las preguntas de apertura de la presentación:  ¿Cuanto tiempo lleva poner en producción el cambio de una línea de código?

La presentación y el trabajo en general me resultaron muy interesantes, lo cual no me extraña considerando quienes fueron los directores del trabajo: Carlos Fontela y Juan Gabardini, Say no more.

Dia del programador 2012

El próximo martes 11 es el Día del Programador y el MUG organizó un evento del cual me invitaron a participar dando una sesión. El tema que elegí para presentar es Smalltalk, en particular voy hablar de Pharo y algo de Amber.

¿Por qué Smalltalk? En primer lugar porque me parece que va muy bien con la ocasión. Una incumbencia central de todo programador es el lenguaje de programación, para ser considerado programador es necesario saber programar y para ello es necesario un lenguaje. En la actualidad hay muchos lenguajes y entre los más usuados podemos sin duda mencionar: Java, Ruby, C# y PHP.  ¡Ups! no mencioné Smalltalk, pues nó, Smalltalk no está actualmente en la lista de lenguajes más usados, pero sin duda Smalltalk ha inspirado a muchos de estos lenguajes. Varias características que vemos en la actualidad en los lenguajes populares fueron introducidas/impulsadas por Smalltalk.

Pero no quiero quedarme solo con este  reconocimiento «histórico» a Smalltalk, quiero hablar del presente y del futuro de Smalltalk. Desde hace un par de años Smalltalk está tomando envión, han aparecido nuevas herramientas que lo han puesto a competir mano a mano con los lenguajes populares. Personalmente creo que Pharo es en gran medida responsable de la «ola renovadora» de Smalltalk y es por ello que mi presentación estará basada en Pharo.

El evento es totalmente gratuito y se llevará a cabo en el Salón Dorado de la Legislatura de la Ciudad de Buenos Aires, Perú 160. La agenda completa esta publicada aquí.

Desarrollo y publicación de aplicaciones con cero costo

La semana pasada estuve trabajando en una aplicación de ejemplo que voy a utilizar para ejercitar algunas cuestiones en mi materia en UNQ. Mi idea es trabajar con esta aplicación mostrando todos los aspectos de su desarrollo, desde la concepción hasta la puesta en producción, pasando por cuestiones técnicas como prácticas de refactoring pero también por cuestiones más bien de infraestructura como el setup de un dominio.

Esto me llevó por un lado a configurar un ambiente de desarrollo y un ambiente productivo. Comparto aquí algunas herramientas/servicios que utilicé.

Para la administración y versionado de la aplicación utilicé GitHub.

Para integración contínua utilicé Travis.

Tanto para el ambiente de staging como también para el de producción utilicé Heroku.

Para el setup del dominio del ambiente productivo utilicé el servicio de Free DNS.

Obviamente para una aplicación real puede que todo esto no resulte suficiente, pues hay cuestiones operacionales (como disponiblidad, backup, etc) que no están siendo contempladas. Pero más allá de este detalle, la cuestión es que todo esto me permite mostrar muchas cuestiones sin tener que pagar por servicio alguno.

Jenkins: Plugins infaltables

De cara a automatizar parte de la corrección de los trabajos de los alumnos de la materia que dicto en UNQ, ayer estuve configurando un Jenkins. La idea es que los alumnos entreguen sus trabajos via Github, o sea, cada alumno tendrá un repositorio en GitHub. Llegada la fecha de entrega de cada trabajo, el build server (Jenkins en este caso) descaga los repositorios y verifica que existan archivos correspondientes a la entrega.

Como parte de la configuración de este Jenkins, instalé los siguientes plugins que me parecen fundamentales:

  • Git: la función de este plugin es obvia, permite a Jenkins conectarse con repositorios Git
  • Green Balls: por defecto, Jenkins representa el estado «build exitoso» con el ícono de una pelotita azul. Este plugin cambia dicha pelotita azul por una pelotita verde.
  • Copy Artifact: permite copiar artefactos de un proyecto a otro
  • Email Ext: extiende la funcionalidad de notificaciones de email provista por nativamente por Jenkins

Anteriormente había comentado sobre un plugin para enviar notificaciones via Jabber (particularmente gtalk), en esta ocasión no lo instalé, pues creo que dicho plugin resulta útil para cuando uno trabajar en desarrollo y este no es el caso.

Primer Balance TPI 2012

Al final de cada cuatrimestre en TPI, Fidel, el director de la carrera, organiza la denominada «reunión de balance». En dicha reunión Fidel comparte con los alumnos y profesores de la carrera los hechos y novedades relevantes acontecidas durante el cuatrimestre.

Tradicionalmente estas reuniones han tenido una forma de «pseudo-monólogos», lo cual es casi inevitable ya que es Fidel quien concentra casi toda la información de lo acontecido. A pesar de esto, este cuatrimestre Fidel decidió intentar un cambió y convocó a dos «maestros de ceremonias» para facilitar la reunión. Yo tuve el honor de ser uno de esos maestros de ceremonias, el otro fue Victoria Fabrice, una alumna de la carrera.

La reunión estuvo dividida en 3 partes:

  1. Dado que Fidel concretaba mucha de la información a compartir, la primera parte de la reunión, unos 40 minutos, Fidel hizo un resumen de los hechos más relevantes: estadísticas generales de la carrera, anuncios sobre las inscripciones, novedades en el equipo docente y en la infrastructura de la universidad, etc, etc.
  2. Una vez finalizada la exposición de Fidel, junto con Victoria falicitamos una dinámica para romper el hielo y que la gente se relaje. Al finalizar la dinámica cada participante escribió en post-its sus inquietudes/problemas/sugerencias/consultas y los pegó en el pizarrón.
  3. Una vez terminada la lluvia de post-its, pasamos a la parte de debate para lo cual utilizamos la técnica de Fishbolw. Victoria y yo fuimos agrupando los post-its por temática y los fuimos compartiendo en voz alta para ir tratándolos. La idea era que entre todos contestaramos las consultas y debatieramos posibles soluciones a los problemas.

Los principales temas de discusión estuvieron alrededor de la oferta horaria, la infraestructura de la universidad, la nueva Licenciatura en Desarrollo de Software, la publicación de notas, la organización/representación de los alumnos y comunidad TPI. Personalmente me resultó muy enriquecedor.

Al finalizar, utilizamos la técnica de las caritas para ver si los asistentes preferian está forma de reunión o la tradicional, los resultados fueron:

  • 🙂 , 25 personas prefieron está forma de reunión por sobre la anterior
  • 😐 , 3 personas opinionaron que esta forma de reunión o la anterior le dan lo mismo
  • 😦 , no hubo gente prefieriera la forma anterior

Hay un voto que me llamó la atención, ya que el dibujo no correspondia con la consigna, me queda la duda si es una carita asombrada o enojada.

Open Space de Educación

Desde la comunidad de métodos ágiles de Buenos Aires, estamos organizando un open space sobre esta temática. La idea es compartir técnicas/problemáticas/estrategias de enseñanza de cara me mejorar las clases, la llegada a los alumnos y el proceso de enseñanza/aprendizaje en general.

La cita es el próximo sábado 4 de agosto en las instalaciones de la UNTreF en el Centro Cultura Borges (Viamonte esq. San Martín 3 piso, Ciudad de Buenos Aires)

Como de costumbre el evento es totalmente gratuito pero con previa registración. Más info y registración aquí.

¡Nos vemos!

Cierre de cuatrimestre a puro TDD (algo3, 1c-2012)

Y se fué uno más, pero distinto y para bien. En líneas generales mantuvimos la misma modalidad que los cuatrimestres anteriores, pero creo que en esta ocasión hemos manejado mejor los tiempos y hemos resultado «más convincentes» en algunas cuestiones.

Entre los cambios del curso Jueves-tarde sumamos un nuevo colaborador docente: Diego Marcet, graduado de la casa, ex-alumno de la materia y ex-compañero mio de trabajo en Southworks.

Otro de los cambios implementados fue el uso del campus virtual (basado en Moodle) para la publicación del material de estudio. Yo personalmente fuí un poco más allá y lo utilicé para manejar la interacción con mis grupos vía los foros. La ventaja que le veo al uso de foros tiene que ver con que la resulta muy cómodo visualizar el hilo completo de la conversación.

A mi parecer la particularidad más destacada (al menos de nuestro curso) fue el fuerte incampié que hicimos en el uso de TDD, lo cual dió sus frutos en el trabajo final, donde varios alumnos desarrollaron gran parte de trabajo usando esta técnica.  Es más, la cantidad de pruebas unitarias de los TP finales fue record en el caso de los TPs que yo corregí: me entregaron TPs con más de 200 pruebas unitarias, llegando a niveles de cobertura llegando al 80%.

La última innovación a mencionar es la práctica de integración contínua. Si bien este tema lo vemos en la teoría desde hace varios cuatrimestres, este año fui más allá y levante un servidor de integración contínua para mis alumnos (lamentablemente no tenía una gran infraestructura, asi que solo lo pude hacer para los 3 grupos a mi cargo). El proceso de build incluyó: compilación, ejecución de pruebas y medición de cobertura.

Si bien no hicimos la dinámica de retrospectiva global, yo hice una más reducida con los alumnos de mis grupos y el feedback fué muy positivo: solo surgieron algunas cosas menores para mejorar que comentaré en un próximo post.

Retrospectiva de Ing. de Software, primer cuatrimestre 2012

Antes de entrar en detalle sobre los resultados de la retrospectiva, quiero destacar por qué hacemos restrospectivas. La respuesta es simple: para mejorar. La idea es revisar como se desarrolló la materia intentando identificar puntos positivos y negativos, y partir de su análisis definir: qué cosas mantener, qué cosas cambiar y que cosas probar. Ahora sí, vamos a la restrospectiva.

Para la retrospectiva, utilizamos la técnica del timeline, mi favorita para estos casos (cierre de cuatrimestre). Lamentablemente, solo participaron 5 de los 7 alumnos. De todos los items identificados, una cuarta parte estaba relacionada a cuestiones «de ambiente» ajenas a la materia y sobre las cuales prácticamente no tengo posibilidad de influencia (por ejemplo: fallas en la infrastructura informática de la universidad). Respecto del resto de los items, esto es lo relevante:

Items a mantener

  • Estructurada iterativa de la materia
  • Actividades de aplicación
  • Dictado de una clase en forma remota
  • Presentación de invitados de la industria
  • Dinámica de evaluación final
  • Restrospectiva al final de cada iteración y restrospectiva final

Cuestiones a mejorar

  • Dificultades varias con Sinatra
    • Recomendar un tutorial y darlo con anticipación suficiente
  • Evaluación online
    • Hacer revisar las preguntas por un tercero para asegurar que sean claras y evitar posibles ambigüedades
    • Hacer una al final de cada iteración
    • Resolver las dificultades técnicas de la herramienta para permitir ver el resultado y las respuestas correctas al finalizar la evaluación
  • Retos del profesor (si, yo, los sermoneo mucho cuando no cumplen con las tareas)
    • No calentarme tanto
    • Mejorar las formas
    • Automatizar la corrección y parte del feedback con alguna herramienta
  • Material utilizado en clase no disponible (en algunas clases utilicé ppts que luego no compartí)
    • Publicar el material utilizado o bien ser explícito de antemano que no será publicado
  • Poca visibilidad de las notas
    • Publicar las notas al final de cada iteración

Para probar

  • Lecturas voluntarias: compartir algunas lecturas/videos opcionales que les permitan sumar «puntos adicionales» al presentarlos al resto de la clase
  • Proveer una guia de lectura para todas las lecturas, asi leen más enfocados
  • Dedicar los primeros 10 minutos de la primer clase de la semana para repasar los puntos destados de la lectura realizada

Bueno, esto es todo, voy a intentar incorporar todas estas cuestiones el próximo cuatrimestre.

Cierre de cuatrimestre en UNQ, segunda promoción

El jueves pasado realizamos la restrospectiva de cierre del cuatrimestre. Comparto aqui algunos números:

  • Este cuatrimestre se anotaron 7 alumnos
  • Los 7 completaron la materia
  • La nota final promedio fue 7,42
  • Tuvimos 30 clases organizadas en 4 iteraciones
  • Tuvimos 2 visitas de profesionales de la industria
  • Leimos más de 12 artículos
  • Hicimos varios ejercicios de BDD y TDD con Ruby
  • Desarrollamos 3 aplicaciones trabajando en grupo, utilizando Scrum, user stories, cucumber, sinatra y github.
  • Hicimos varias actividades para ejercitar diferentes prácticas: pajarraco scrum, fábrica de aviones, estimación de subastas, etc.

Creo que este segundo cuatrimestre ha sentado las bases para lo que pretendo que sea la materia, con lo cual el próximo cuatrimestre será muy parecido.

En el siguiente post, compartiré los resultados de la retrospectiva.

Nota: los iconitos representan a los alumnos ausentes el día de cierre que fue cuando tomamos la foto.