Libros sobre estimación y planificación Ágil

Durante mucho tiempo mi libro de referencia sobre esta temática fue el clásico Agile Estimating and Planning de Mike Cohn. Pero hace un par de años lei otro libro que me pareció mucho mejor: Planning Extreme Programming, de Kent Beck y Martin Fowler. Este libro fue publicado en 2001, 5 años antes del libro de Cohn y si bien tiene mucho puntos en común con este, tiene también un conjunto de cuestiones muy prácticas que no están presentes en el libro de Cohn. Entre las cuestiones que me gustan de este libro es que sugiere como proceder cuando las cosas no funcionan «felizmente». Por otro lado creo que es un libro para leer de punta a punta, ya que -al igual que todos los libros de la serie XP- tiene capítulos cortos que hacen muy amena su lectura.

Resulta que ayer estaba preparando una clase para FIUBA y tomé algunas cosas de este excelente libro de Beck y Fowler y me pareció que sería interesante compartir esta opinión pues tengo la sospecha que no es muy popular.

Preparando la segunda edición de MeMo2 (95.21 / 75.10)

Dados ciertos cambios a nivel administrativo/curricular, a partir de 2018 el curso que dicto como MeMo2 (95.21) también estará disponible para alumnos que deban cursar TdD (75.10). Entiendo que lo mismo vale para el curso del Ing. Pantaleo que venia dictando TdD y que de ahora en más podrá recibir alumnos de MeMo2.

A partir de este cambio es posible que este cuatrimestre tenga más alumnos que el cuatrimestre pasado, hecho que sin duda podría impactar en la dinámica de la materia. Otro punto que también impactará en la dinámica de cursada será la posibilidad de que la universidad designe un docente auxiliar para el curso, yo ya presenté candidato y estoy a la espera de una respuesta.

Conceptualmente la dinámica está descripta en este artículo que presente en SECM el año pasado. Para quienes cursaron MeMo1 con Sergio Villagra, encontrarán muchas similitudes. Debo aclarar en términos de implementación aún hay un delta con la idea conceptual, pues la materia es aún muy nueva y entre otras cuestiones aún no he generado todos los videos que quisiera.

Para quienes esten considerando cursar 95.21/75.10 este primer cuatrimestre de 2018 les comparto algunos puntos del curso que estará a mi cargo y puede ser relevante tener presente en el momento de la inscripción:

  • Adicionalmente a las 6 horas semanales de clase, se espera una dedicación semanal constante de entre 4 y 8 horas (el cuatrimestre pasado los alumnos reportaron una dedicación promedio extra-clase de 5 horas semanales) .
  • Los contenidos de la materia incluyen varias cuestiones de índole técnica, las cuales en ocasiones suelen generar imprevisto (por alguna cosilla que no funciona) y las tareas pueden terminar llevando más de lo esperado)
  • Los contenidos de MeMo2 están relacionados de una forma tal que hace muy difícil poder completar la tarea N+1 si primero no se completo la tarea N. Esto hace que la hora de hacer las tareas, uno se encuentre casi obligado de hacerlas en el orden estipulado sin poder saltearlas.
  • Las tareas de programación se realizarán con lenguaje Ruby, pero no se enseñará como parte de la materia, habrá una clase de introductoria y links para profundizar, nada más (se espera que a esta altura de la carrera los alumnos sean capaces de aprender un lenguaje por sus propios medios)

Para quienes quieran leer algo más de información de la materia, pueden consultar estos artículos del cuatrimestre pasado.

 

Fin de cuatrimestre en MeMo2 @ FIUBA

Y así pasó el primer cuatrimestre de Métodos y Modelos en la Ingeniería de Software 2 (a.k.a. MeMo2). Hay mucho por mejorar pero para ser una primer corrida de una materia armada de cero, creo que estuvo muy bien.

Comparto algunos números concretos para la estadística:

  • Se inscribieron 3 alumnos pero uno abandonó en la semana 4. Los otros dos completaron la  materia.
  • La nota promedio de aprobación fue 8.5
  • La evaluación general del curso por parte de los alumnos fue 9
  • Los alumnos dedicaron en promedio unas 5 horas semanales de trabajo extra clase

Entre los puntos a considerar para futuras ediciones:

  • Como escalar la dinámica de clases para más alumnos (la dinámica actual, con un solo docente puede andar hasta unos 8 alumnos)
  • Agregar videos sobre algunos temas faltantes
  • Mejorar el flujo de entrega/devolución de tareas
Selfie de cierre de cursada

Recuerdos a 10 años de haberme recibido

Hoy se cumplen 10 años de que terminé mi carrera de grado en ingeniería en informática. Fue el día 17 de diciembre de 2007 que defendí mi tesis, curiosamente no escribí un reseña de la defensa en este blog, por lo cual me parece que al cumplirse 10 años es un momento propicio para hacerlo.

Empecé a trabajar en mi tesis (muy a cuenta gotas) en 2005 mientras cursaba el último tramo de la carrera. Tenia en mente trabajar sobre programación orientada a aspectos (AOP), un tema que por aquel momento se mostraba prometedor, pero no estaba seguro del tema concreto.

Recuerdo haber leído la tesis de Fernando Asteasuian la cual me resultó una muy buena fuente para entender el estado del arte de AOP en aquella época. Curiosamente en 2016 tuve la oportunidad de conocer a Fernando personalmente durante el CONAIISI 2016 en Salta.

También recuerdo haber asistido a la defensa de tesis de Alan Cyment y Ruben Altman quienes también trabajaron sobre AOP. Más aún, recuerdo una charla con Alan en el café de una estación de servicio en la zona de la estación Bulnes del subte D en la que le conté algunas de las ideas que yo estaba considerando para mi tesis. Por esas vueltas de la vida volví a cruzarme con Alan algunos años más tarde durante el surgimiento del movimiento ágil en Buenos Aires.

No fue hasta fines de 2006 que empecé a trabajar de forma constante en la tesis.  Recuerdo dedicar consistentemente todas las mañanas de sábado de 2007 a la escritura de la tesis, volcando en texto ideas que maduraba de durante la semana. Mi directora de tesis fue Rosita, excelente profesora con la hoy en día sigo en fluido contacto. El título final de mi tesis fue: «Utilización de Programación Orientada a Aspectos en Aplicaciones Enterprise». Los jurados evaluadores fueron los profesores Osvaldo Clua, Carlos Fontela y Guillermo Pantaleo.

El texto completo de la tesis está disponible aquí.

Finalmente comparto dos fotos de aquel día de la defensa.

 

Comienzo de MeMo2 @ FIUBA

El lunes pasado comenzamos las clases de Métodos y Modelos en la Ingeniería de Software 2 en FIUBA (aka MeMo2). Tan solo 3 alumnos inscriptos, lo cual está bien para una primera edición de la materia, creo que nos va a permitir experimentar y pivotear a nivel planificación y dinámica de clases. Más allá de esto, debo decir que en los casi 20 años que llevo en FIUBA, nunca estuve en un curso con tan pocos participantes.

Los tres alumnos tienen experiencia laboral en el rubro informático, un detalle que me parece importante dados los temas que pensamos abordar en la materia. Si los alumnos no tuvieran experiencia laboral, se corre el riesgo de que no vean el valor de los temas abordados. Es como si uno les estuviera explicando soluciones a problemas que ellos aún no imaginan.

Continuará…

Materias interesantes del nuevo plan de Lic. en Sistemas @ FIUBA

Como parte del trabajo de preparación de MeMo2 estuve revisando el nuevo plan completo de la Licenciatura en Análisis de Sistemas @FIUBA para tener una visión global y entender como MeMo2 encaja en esa visión.

Como su nombre formal lo indica, MeMo1 y MeMo2 son materias de Ingeniería de Software. Pero no son las únicas materias de dicha temática en el nuevo plan, hay algunas otros como ser:

  • Algoritmos y Programación 3
  • Administración y Control de Proyectos Informáticos 1
  • Estándares de Calidad y Modelos de referencia
  • Diseño, Operación y Gestión de Servicios Informáticos

Las dos primeras materias de la lista precedente son materias existentes en el plan anterior y cuyo contenido no ha sufrido modificaciones relevantes en el nuevo plan.

Estándares de Calidad y Modelos de referencia (95.30) es una materia nueva en cuanto al nombre, pero su contenido coincide bastante con una materia existente: Modelos de Procesos de Desarrollo (75.57).

Finalmente Diseño, Operación y Gestión de servicios Informáticos (95.59), es una materia totalmente nueva, tanto a nivel nombre como de contenidos. Personalmente creo que esta materia representa una de las principales mejoras en el nuevo plan de estudio y al mismo tiempo es en cierto modo una innovación a nivel académico pues no conozco en el país otro carrera que incluya cuestiones de gestión de servicios que resultan muy relevantes para la actualidad de la industria informática en nuestro país.

MeMo2 @FIUBA: planeado la dinámica de cursada

MeMo2 @FIUBA: planeado la dinámica de cursada

La primera edición de la materia va a ser bastante particular porque esperamos alrededor de 5 alumnos. Esto nos va a permitir dar algunas libertades poco habituales como que podamos tener la clase sentados todos juntos en una mesa sin siquiera necesitar pizarrón y/o proyector.

Pero más allá de esta primera edición, la idea es que a mediano/largo plazo la materia tenga una dinámica similar a la materia Ingeniería de Software que dicto en UNTREF y que no dista mucho de la dinámica de MeMo1. Siendo más concreto la idea es:

  • Clase invertida y «desde el fondo del aula»: la mayoría de los contenidos teóricos serán provisto en video para que los alumnos los puedan ver en sus casas. De esta forma el tiempo en el aula se dedica a actividades interactivas donde los alumnos toman más protagonismo y el docente pasa a un segundo plano poniéndose «al fondo del aula». Para esta primera edición tendremos algunos pocos videos.
  • Tareas semanales y evaluación continua: al igual que ocurre en los proyectos de desarrollo, hay que trabajar de forma continua y sostenida. Ese trabajo continuo se evalúa de forma continua sin necesidad de los tradicionales parciales en papel. Esto ya lo estaremos haciendo en la primer edición.
  • Aula extendida: más allá de trabajo en clase, utilizaremos una plataforma virtual que nos permita compartir el contenido y extender la interacción más allá de aula física. La plataforma que vamos a utilizar es CanvasLMS.

Continuará…

Programa analítico de MeMo2 @ FIUBA #nuevaMateria

Como mencioné hace un tiempo en otro artículo, estoy trabajando junto a Sergio Villagra en preparar una de las nuevas materias de la licenciatura. El nombre formal de la materia es Métodos y Modelos en la Ingeniería de Software 2 (95.21) aunque informalmente es posible que termine siendo MeMo2 o Ingeniería 2.

Hace un par de semanas cumplimos con la formalidad de presentar el programa analítico que obviamente esperamos ajustar a medida que corra el cuatrimestre. Comparto a continuación lo presentado:

  • Semana 1: presentación del materia. El desarrollo de software: ingeniería vs. artesanía.
  • Semana 2: Breve historia de los movimientos de calidad. Ciclo de vida del software (procesos típicos) Más allá del software: operaciones, servicios, gestión y gobierno.
  • Semana 3: Proyectos, programas y portafolios. Por qué los proyectos de software son diferentes ¿De dónde vienen los proyectos?: ideas y oportunidades.
  • Semana 4: Modos de contratación: fix-price vs. time&materials. Visual Story Mapping, Impact Mapping, Técnicas de particionamiento de User Stories. Planificación basada en control de alcance. Iniciativa #NoEstimates.
  • Semana 5: Técnicas de priorización de requerimientos. Lean Startup.
  • Semana 6: Conceptos de arquitectura. Atributos de calidad. Modelización, diseño e implementación de los atributos de calidad. Métodos de evaluación de la arquitectura. Walking Skeleton y otras técnicas de arquitectura emergente. Diagrama UML para presentar la arquitectura.
  • Semana 7: Herramientas de soporte al proceso de desarrollo. Control de la configuración. Ambientes. Modelos de branching. Técnicas avanzadas de branching: branch-by-abstraction, feature-branching, feature toggling
  • Semana 8: Especificación con ejemplos. Ciclo BDD+TDD. Domain Driven Design.Tipos de TDD.  Estrategias de integración de aplicaciones. Definición de interfaces.Protocolo REST.
  • Semana 9: Control de calidad. Tipos de pruebas. Pirámide de pruebas de Cohn. Cuadrantes de prueba de Marick. Automatización de pruebas.Arquitectura de prueba. Dobles de prueba.
  • Semana 10: Pruebas de performance. Pruebas A/B
  • Semana 11:Infraestructura como código. Tecnologías de virtualización y conteinerización. Plataformas cloud. X as a Service: IaaS, PaaS, SaaS.
  • Semana 12: Integración y despliegue continuo. Pipeline de deployment. Estrategias de deployment: blue-green, canaries.
  • Semana 13: Monitoreo, Auto-Scaling y Failover. Antifragile
  • Semana 14: Evaluación e implantación de software de terceros.
  • Semana 15: Presentación y puesta en común de trabajos prácticos finales
  • Semana 16: Cierre y conclusiones

Preparando Ingeniería de Software 2 @ FIUBA

Preparando Ingeniería de Software 2 @ FIUBA

Desde hace un tiempo estoy trabajando en preparar la materia Métodos y Modelos en la Ingeniería de Software 2 (95.21) perteneciente al nuevo plan de la Licenciatura en Análisis de Sistemas de la Facultad de Ingeniería de la UBA.

Formalmente el programa de la materia incluye una importante gama de temas que van desde procesos de adquisición hasta métodos de evaluación de arquitectura pasando por operaciones y sistemas de tiempo real.

La materia otorga 6 créditos y tiene una carga horaria de 6 horas semanales. Si bien aún no lo hemos hablamos explícitamente es muy posible que la materia se dicte en 2 clases semanales de 3 horas cada una.

Como primer paso tomamos el programa formal y lo desglosamos en capítulos/módulos que agrupan los principales temas.

En términos de enfoque pedagógico la idea es seguir con la misma estrategia que en la materia anterior (Métodos y Modelos en la Ingeniería de Software 1) el cual es muy similar al enfoque  que utilizo en UNTreF.

Continuará…

 

Pase: de Algo3 a MeMo2

Pase: de Algo3 a MeMo2

Después de más 15 años como parte del equipo docente liderado por Carlos Fontela y a cargo de la materia Algoritmos y Programación 3, este año emprenderé un nuevo camino.

Resulta que a partir de la implementación del nuevo plan de estudios de la Licenciatura hay que empezar dictar nuevas materias y eso requiere del nombramiento de nuevos docentes o de la reubicación de los docentes existentes. Este segundo caso es el mío.

En particular en el segundo cuatrimestre de este año debe comenzar a dictarse la materia Métodos y Modelos en la Ingeniería de Software 2 (a.k.a. MeMo2). Como su nombre lo sugiere, esta nueva materia es la continuación de Métodos y Modelos en la Ingeniería de Software 1 (a.k.a. MeMo1) que es una materia (hoy en día) equivalente a la materia Análisis de la Información del plan anterior. MeMo1 empezó a dictarse hace un par de cuatrimestres y su equipo docente está liderado por Sergio Villagra. Para asegurar cierta consistencia entre MeMo1 y MeMo2, Sergio también estará involucrado en MeMo2. Por mi parte, durante este primer cuatrimestre estaré participando de MeMo1 y trabajando en el armado de MeMo2.

Debo admitir que dejar Algo3 no fue una cuestión fácil. Si bien el equipo docente de Algo3 ha ido variando a lo largo de todos estos años, somos varios los que llevamos más de 10 años trabajando juntos. Creo que justamente es esa combinación del «núcleo de veteranos» con «la sangre de los nuevos colaboradores» y el compromiso de mejora continua de todo el equipo, lo que ha motivado a que la materia este en una constante evolución. Al mismo tiempo armar y dictar MeMo2 representa un gran desafío y una importante oportunidad de crecimiento en mi carrera docente y es por ello que acepté el pase.

Me voy de Algo3 muy contento de haber trabajado con ese gran equipo docente e infinitamente agradecido a Carlos Fontela por haberme invitado a sumarme al equipo allá por el año 2000.