Cierre de AyDOO 2017 en UNTreF

Se fue otro cuatrimestre y como de costumbre es momento del informe de cierre.

El primer punto a destacar es que, incorporando el feedback de la edición anterior, ajustamos la carga de trabajo y ampliamos el equipo docente. En la edición anterior yo fui el único docente, mientras que en este caso, también participaron de la materia Facundo Arcieri y Diego Fontdevila. Personalmente creo que esta extensión del equipo fue muy positiva. Más allá de esta cuestión contextual, las métricas del curso fueron:

  • 14 inscriptos, 2 abandonos, 8 aprobados y 4 desaprobados.
  • La nota promedio de cierre de cursada fue 8/10.
  • La evaluación general de la materia realizada por los alumnos (vía encuesta anónima) fue de 7,9/10.

Como siempre cerramos la materia con una retrospectiva. Entre los puntos a probar/mejorar surgieron:

  • El tiempo de corrección, en varios casos nos demoramos más de una semana en entregar las correcciones de las tareas semanales
  • Cambiar el campus, pues el que usamos tuvo varias caídas y algunas de las funcionalidades ofrecidas no están muy logradas
  • Hacer más ejercicios con Ruby y/o empezar a trabajarlo antes
  • Armar el calendario de entregas de forma tal de tener 2 semanas de trabajo entre la fecha de publicación de cada tarea y la fecha de vencimiento

Por otro, entre los puntos positivos de la materia los alumnos identificaron:

  • El uso del campus virtual
  • El stack de herramientas utilizado
  • La dinámica de cursada con evaluación constante

 

 

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.

Meetup Agiles@BAires: Infrastructure Patterns for Continuous Delivery

El próximo jueves 20 de Julio en el Meetup de Agiles Argentina estaré dando esta sesión. El título está en inglés porque la sesión la preparé originalmente para darla en la conferencia Agile 2017 y darla ahora en Buenos Aires me sirve en cierto modo como un ensayo.

Comparto algunos datos de esta sesión que pueden resultar de interés para la audiencia:

  • Formato: charla tradicional, basada en diapositivas, condimentada con algunas actividades interactivas.
  • Duración: ~80 minutos
  • Audiencia: gente de perfil técnico sin ningún conocimiento previo en particular
  • Palabras clave: continuous-delivery, devops, automation, infrastructure as code

La sesión está estructurada en 2 bloques:

  • un primer bloque introductorio donde repasamos algunos conceptos básicos de continuous delivery/devops
  • un segundo bloque dedicado a presentación de diversos patrones entre los que se incluyen: incremental environments, automation layers, multi-versioning y split pipeline entre otros.

La cita es en la Facultad de Ingeniería de la UBA (Paseo Colón 850), en el aula 403 a partir de las 19 horas (puntual). Obviamente es totalmente gratis pero por favor los interesados registrarse en la página del Meetup.

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á…

Historia de una primera salida a producción

Finalmente luego de 9 iteraciones(~4 meses) llegamos a producción. Mmmm, no, en realidad fue casi un año de trabajo. El proyecto comenzó con un sistema legacy desarrollado en Asia durante 6 años [1]. Sobre dicha plataforma hicimos una reingeniería para reemplazar algunos módulos y agregar uno totalmente nuevo. En ese contexto se comenzó a trabajar con un equipo de 4 personas que fue creciendo a lo largo del año hasta llegar a ser más de 25 personas (yo me sumé cuando rondábamos las 10).

A medida que la cantidad de personas se fue incrementando fuimos partiendo el proyecto/equipo en sub-proyectos/sub-equipos hasta llegar a ser 5 sub-equipos/sub-proyectos [2].

En Enero tuvimos el release del primer módulo que reconstruimos de cero [3]. En Mayo fue el release del segundo módulo y finalmente el viernes pasado tuvimos el release de 3 módulos más. Los primeros dos módulos había sido producto del trabajo de 2 sub-equipos, mientras que los módulos liberados el pasado viernes fueron resultado del trabajo del “big-team”, o sea, el release incluyó productos de todos los sub-equipos.

En este año de trabajo he compartido experiencias muy enriquecedoras con un excelente grupo de trabajo. Siendo alrededor de 30 personas, hubo algunos con los que compartí muchas situaciones y otros con los que apenas hablé. Entre todas las cuestiones acontecidas durante este año me parece importante destacar:

  • El foco en la mejora
  • El espíritu colaborativo
  • La especial atención a las personas
  • La disciplina en la forma de trabajo
  • El manejo de los esfuerzo extraordinarios (horas extra)
  • El manejo de las situaciones “no tan felices”

[1] En el artículo Aplicaciones legacy, monolitos y microservicios escribí más detalladamente sobre esta situación.

[2] En el artículo team.split() & project.new(), conté sobre la creación de uno de los sub-equipos/sub-proyectos

[3] En el artículo projifm, estadísticas del primer release compartí algunas estadísticas de ese primer release.

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

Mis sesiones en Agile 2017

En agosto estaré participando por primera vez en la conferencia Agile donde estaré presentando dos sesiones:

Ambas sesiones están inspiradas en las experiencias y lecciones aprendidas que he recolectado en los últimos años. Ambas sesiones son en formato presentación con una duración de 75 minutos (con espacio de preguntas incluido).

A modo de ensayo, estaré dando la segunda de estas sesiones el próximo Jueves 20 de Julio en el contexto del Meetup de Ágiles Argentina. La cita es en la Facultad de Ingeniería de la UBA a las 19 horas (aula a confirmar).