#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

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

Y así pasó ASSE 2014

Ayer terminó ASSE 2014, fueron tres días muy intensos en las instalaciones de la Universidad de Palermo. Como mencioné previamente, el simposio comenzó con el taller de Arquitectura emergente.

Entre las cosas que más me gustaron destaco el taller de Arquitectura emergente, las charlas de los conferencistas, la gran variedad de las temáticas de los trabajos presentados y el debate sobre enseñanza de la ingeniería de software. Bueno, básicamente todo, ;-)

Un punto para destacar es que por primera vez en el contexto de las JAIIO se entregaron los Premios Sadosky a los mejores trabajos seleccionados entre todos los simposios de JAIIO y fue justamente un trabajo de ASSE el que se llevó el primer premio: An energy-saving model for service-oriented mobile application development, de  Ignacio Lizarralde, Cristian Mateos y Alejandro Zunino.

Si bien el evento ya terminó, mi trabajo como parte de la organización todavía continúa pues aún tenemos que consolidar información estadística del simposio y gestionar la publicación de algunos trabajos en el Journal de SADIO.

banner_jaiio

 

 

 

 

ASSE 2014, largamos

Hoy tuvimos la primer actividad de ASSE, fue un taller de Arquitectura Emergente de dictado por Diego Fontdevila. El taller duró 4 horas y estuvo dividido en una primera parte teórica y una segunda muy práctica que sorprendió muy positivamente a los asistentes.

Del taller participamos unas 9 personas con perfiles muy variados incluyendo desde alumnos de grado hasta empresarios pasando por docentes, doctores y profesionales de la industria. Esta gran variedad resultó muy enriquecedora para las charlas y actividades del taller.

Más allá de las cuestiones compartidas en el taller, cada asistente se llevó su ejemplar de Construcción de Software: una mirada ágil.

arq_asse

Se viene el libro….

Hace un par de días entró en imprenta el libro de ingeniería de software que empecé a escribir hace unos dos años junto a un grupo de colegas de la Fiuba.

La idea era escribir un libro sobre métodos ágiles, luego de un par de charlas refinamos el objetivo y decidimos escribir un libro sobre métodos ágiles que cubriera el proceso completo de desarrollo de software.

Una de las motivaciones para escribir el libro fue que no existen en la actualidad (o al menos no han tenido mayor difusión) libros escritos en castellano sobre métodos ágiles que cubran el proceso de completo de desarrollo de software. Los libros existentes sobre esta temática escritos en castellano están enfocados en algún aspecto particular. Por ejemplo los libros de Martín Alaimo tienen un foco humano/de gestión, mientras que el libro de Carlos Blé está enfocado en TDD. Existe un libro que cubre en gran medida el proceso completo de desarrollo software llamado Scrum y XP desde las trincheras, pero es una traducción de una obra originalmente en inglés.

Al mismo tiempo, la motivación va más allá del idioma. Los métodos ágiles ponen un foco importante en las personas y en ese sentido creemos que la idiosincrasia latinoamericana merece un libro a medida escrito por latinoamericanos.

El libro, más allá de lo que el título pueda sugerir, es un libro de ingeniería de software. De hecho la mayoría de los contenidos son parte de la materia que dictamos con @pablitosuarez en UNQ.

Todos los autores somos docentes y también trabajamos en la industria, por ello creemos que el libro puede resultar muy útil como libro de texto para el dictado de una materia y para profesionales de la industria con intenciones de conocer y experimentar con métodos ágiles.

En los próximos días compartiré algunos detalles y curiosidades del libro, por el momento les dejo una de las imágenes del libro que más me gusta.

15.1

Próximos eventos en lo que resta del 2014

Como es costumbre, la primera mitad del año no pasa nada y la segunda está tan cargada de eventos que resulta difícil decidir a cuales asistir. Comparto aquí una lista de los evento que personalmente me resultan de interés:

Del 14 al 15 de agosto se llevará a cabo en Facultad de Ingeniería de la UBA, el Simposio Argentino de Sistemas Embebidos, SASE 2014. Un evento del que nunca participé pero del cual planeo participar este año.

Del 1 al 5 de Septiembre tendrá lugar en la Universidad de Palermo la edición número 43 de las Jornadas Argentinas de Informática. Estas jornadas incluyen una serie de Simposios entre los que se encuentra el Simposio Argentino de Ingeniería de Software del cual tengo el honor de ser co-chair.

También en Septiembre, más precisamente 26 y 27, tendremos las primeras Jornadas Nacionales de Métodos Ágiles que se realizarán en las instalaciones de la Universidad de Belgrano con formato completamente Open Space.

Octubre viene cargado con 3 eventos en la semana del 20 de Octubre.

Del 23 al 25 de Octubre tendremos la séptima edición de las Jornadas Latinoamericanas de Métodos ágiles, Agiles 2014 a desarrollarse este año en Medellín (Colombia).

Casi al mismo tiempo que Agiles 2014 tendremos la RubyConf Argentina, una vez más en las instalaciones del Konex.

El tercer evento en esos mismos días es el Congreso Argentino de Ciencias de la Computación, CACIC 2014, que se desarrollará en las Universidad Nacional de la Matanza.

Ya en noviembre (5,6 y 7), en la ciudad de Córdoba, tendremos la Smallktalks 2014. Esta vez en las instalaciones de la Universidad Tecnológica Nacional.

Más allá de los eventos aquí mencionados, me consta que hay programados algunos más, pero no menciono pues no estan entre los que suelo asistir.

Fin del taller de prueba automatizada

El jueves pasado tuvimos el quinto y último encuentro del taller de prueba automatizada que dictamos junto con Pablo Tobia en FIUBA. El taller era abierto y gratuito pero con inscripción previa. Justamente al ser totalmente gratuito implicaba cierto riesgo en lo que hace a la planificación, pues es común que mucha gente se inscriba y luego no asista. Para mitigar esto, pedimos a todos los interesados que para confirmar su vacante resolvieran un pequeño ejercicio de programación.

Inicialmente tuvimos unas 40 personas que manifestaron interés en participar del taller cuando aún no estaba definido el horario. Una vez que definimos el horario le informamos a estas ~40 personas y les pedimos que resolvieran el ejercicio para completar su inscripción. Sólo 12 de los 40 lo hicieron. Y aún así, de esos 12 solo 10 participaron del taller.

El taller consistió en 5 encuentros de  ~3 horas. Como guía del taller utilizamos los cuadrantes de testing de Marrick con lo cual el contenido quedó organizado de la siguiente forma:

  • Encuentro #1: conceptos básicos de testing y presentación del enfoque de los cuadrantes
  • Encuentro #2:
    • foco en el cuadrante #1 (support programming & technology facing),
    • test automation manifest
    • xUnit test patterns
    • Test doubles
    • Coverage
  • Encuentro #3 y #4:
    • foco en el cuadrante #2 (support programming & business facing)
    • tipos de herramientas para automatización de pruebas
    • arquitectura de las herramientas de automatización de pruebas
    • testing de aplicaciones tipo enterprise
    • SeleniumIDE, Cucumber, Fitnesse
    • Phantom, Slimer and CasperJS
    • Watir & PageObjects
  • Encuentro #5:
    • foco en los cuadrantes #3 y #4 (test que critican el producto)
    • Stress testing, JMeter
    • AB testing
    • Calidad del software más allá del testing
    • Testing en distintos tipos de proceso de desarrollo
    • El rol de tester

Tanto docentes como alumnos quedamos muy contentos con el taller y concluimos que perfectamente podria ser una materia de las carreras de informática de FIUBA (en realidad es posible que también aplique a otras carreras pero sabemos que en FIUBA estos temas no estan cubiertos por ninguna materia en la actualidad). En caso querer convertir este taller en un materia (o en un curso más amplio) deberíamos agregar temas talles como: planificación de la prueba, definición y administración de casos de prueba, herramientas de soporte, Testlink, modelos de calidad, etc.

Finalmente quiero agradecer a todos los que participaron este experimento para mi ha sido un gran placer el tiempo compartido.

Sobre las carreras de informática en FIUBA

La Facultad de Ingeniería de la Universidad de Buenos ofrece dos carreras en el área de informática: Ingeniería en Informática y Licenciatura en sistemas. Como docente de dicha casa de estudio suelo recibir consultas del tipo:

“Me gustaría trabajar en XYZ, ¿me conviene hacer la licenciatura o la ingeniería?”

Luego de haber respondido esta pregunta N veces, decidí tomarme unos minutos para grabar los siguientes dos videos. Espero les resulten útiles.

 

 

Cierre de cuatrimestre en UNQ (2014-1)

Este cuatrimestre batimos algunos records. En primer lugar tuvimos record de alumnos: 14, al mismo tiempo tuvimos record de deserciones: 5, ¡ups! demasiado para mi gusto.

Hablo en plural pues ya desde el cuatrimestre pasado la materia la estoy dictando junto con @pablitosuarez

Como teníamos planeado, continuamos trabajando con el campus y más aún, potenciamos su utilización. Creamos varios cuestionarios como evaluaciones complementarias para algunos temas.

En lo que respecta a los TPs finales, hicimos algunas variantes. En primer lugar nos dividimos los grupos de manera que cada docente fuera product owner de dos grupos. Al mismo tiempo los grupos trabajaron sobre dos aplicacione distintas. Una de ellas era una aplicación creada de cero, mientras que la otra era una aplicación existente a la que debía agregarse funcionalidades. Quedamos muy conformes con la dinámica y los resultados, por lo cual estimo que repetiremos el cuatrimestre próximo.

Mantuvimos la dinámica de visitas de gente de la industria, en este caso tuvimos 3 visitas de excelente nivel de empresas radicalmente distintas:

Adicionalmente a la ya clásica retrospectiva de fin de curso, este cuatrimestre hicimos una encuesta anónima que nos permitió obtener una evaluación más cuantitativa. De esta encuesta sacamos que la evaluación general de la materia por parte de los alumnos fue: 8.4.

De la retrospectiva y la encuesta destacamos algunos puntos en los que trabajaremos el cuatrimestre próximo:

  • Comenzar con la kata de ruby en forma temprana para que los alumnos tenga más tiempo de familiarizarse con Ruby antes de comenzar con el trabajo final
  • Planificar con mayor anticipación las últimas semanas de clase de manera de poder hacerlas más interactivas
  • Alinear mejor entre los docentes los criterios de evaluación de los grupos

Aprovechando la moda, cierro el post con una selfie junto a los alumnos que estuvieron presentes la clase de cierre (solo falta uno que estuvo ausente por razones de salud).

unq-promocion-sexta

Sexta promoción de la materia desde que está a mi cargo

 

 

Cierre de cuatrimestre en Algo3

Este cuatrimestre afrontamos algunos nuevos desafíos, a partir de ciertos cambios en el equipo docente.

Uno de los cambios fue el horario de dictado de la materia. Las clases  teóricas pasaron a la tarde (16 hs) y lo mismo hicimos con el curso de los miércoles. Posiblemente por influencia de este cambio tuvimos una interesante variación en la cantidad de alumnos de los diferentes cursos de práctica. Generalmente el curso de los miércoles (que solía dictarse a las 19 hs) era el que menos alumnos tenía (~20), sin embargo este cuatrimestre movimos el curso a las 16 hs y tuvimos ~ 55 alumnos.

Otro de los cambios que hicimos fue en las clases teóricas, donde Carlos decidió experimentar un poco más en profundidad con algunas técnicas de educación centrada en el alumno. Creemos que eso ayudó a mejorar las clases pues recibimos comentarios positivos de los alumnos al respecto.

En las prácticas de los miércoles generalizamos una estrategia que yo venía utilizando desde hace un tiempo: guiar el desarrollo del trabajo práctico final con escenarios de prueba. El trabajo práctico final se hace con lenguaje Java, trabajando en grupo junto a un docente tutor y dura unas 5 semanas en las que se espera que los alumnos trabajen de forma continua demostrando avance semanal.

leyen

El TP final de este cuatrimestre fue un juego del tipo Carmen San Diego

En una época solíamos pedirle a los alumnos que las primeras semanas se concentrarán en el diseño haciendo diagramas UML y luego de tener un modelo del dominio base, recién entonces pasaran al código. Con el correr del tiempo eso ha ido cambiando. Ya desde el año pasado comencé a guiar a mis grupos especificando semana a semana un conjunto de casos de prueba a resolver de manera que funcionaran como “pruebas de aceptación” y que los guiaran en la implementación incremental de la aplicación.

Otra práctica que hemos establecido por completo en el curso de los miércoles es el uso de Jenkins como servidor de integración continua para el desarrollo de los trabajos finales. El uso de Jenkins en conjunto con Ant y algunas otras herramientas más, nos permitieron obtener ciertas métricas sobre el código de los alumnos al mismo tiempo que les facilitó la integración del trabajo a cada equipo.

Mé

Métricas de un trabajo final

Al terminar el cuatrimestre, además de la clásica retrospectiva hicimos una encuesta online anónima para obtener algunos números concretos de manera de poder medir la mejora de un cuatrimes a otro. Entre el feedback que recogimos destaco los siguientes puntos:

  • (a mejorar) Que las correcciones del TP1 sean entregadas antes de rendir el primer parcial
  • (a mejorar) Actualizar el template del proyecto ant para incluir la ejecución de la aplicación
  • (mantener) Clases participativas y juegos de rol
  • (mantener) Videos complementarios de explicación sobre las herramientas
  • (mantener) Jenkins

 

retro-algo3

Post-its de la retro