Eventos (académicos) 2012

Durante el año pasado mientras estudiaba para las materias que cursé en la maestría de la UNLP, se me ocurrieron dos artículos que me gustaría desarrollar para presentar en algún congreso y casualmente recien empezado el año tengo tres posibles eventos donde presentarlos.

El primero es ArgenCon, organizado por la sección argentina de IEEE. El mismo se desarrollará del 9 al 13 de Junio  en Córdoba. La fecha límite para el envío de trabajos es el 15 de Marzo.

El segundo evento es la edición 41 de las JAIIO, este año organizadas en conjunto con la UNLP entre el 27 y 31 de Agosto. La convocatoria de trabajos trabajos esta abierta hasta el 30 de Abril.

Finalmente el tercer evento que tengo en el radar es Foro Mundial de Educación en Ingenieria (WEEF: World Engineering Education Forum). Sinceramente nunca había nunca había escuchado hablar de este evento (tal vez porque no siempre se realiza en Argentina). El mismo será organizado por UTN y se desarrollará en Buenos Aires del 15 al 18 de Octubre. La fecha límite para el envio de trabajo es el 2 de Marzo.

Volviendo a los trabajos que tengo en mente, el primero es sobre el enfoque que estoy utilizando en UNQ para dictar ingeniería de software. El otro es sobre algunas ideas que he venido madurando para la enseñanza de la programación en los cursos introductorios de programación.

Chau 2011

¡Adentro! se fué el 2011 y tal como lo dijera en su momento: 2010 fue un año bisagra y con 2011 empezó una nueva etapa. Entre los hechos destacados de esta nueva etapa debo mencionar:

Respecto de eventos fui orador en Codecamp y en Smalltalks,  participé activamente en el Agiles2011 y en el AO Tour y dicté un workshop en el contexto de ASSE/JAIIO.

Otro punto que quiero destacar es que he mantenido mi constancia en este blog. Durante 2011 escribí 88 post superando las 66 que había escrito durante 2010. Este incremento de casi 30% también se correlaciona con la cantidad de visitas que paso de casi 7.000 en 2010 a casi 11.000 durante 2011. Intentar superar estos números durante 2012 será sin duda una gran desafío.

Bueno, es todo, chau 2011. Me despido no sin antes agradecer a los lectores de este blog deseándoles un gran 2012 y esperando poder seguir aportandoles mis 2 centavos durante este nuevo año.

¡Salud!

Fin de mi primer cuatrimestre en Ingeniería de Software

Finalmente el lunes pasado cerramos la materia. Entregué las notas he hicimos una retrospectiva. Si bien la materia no salió exactamente como la había planeado, estoy conforme con el resultado. Creo que logré transmitir conceptos importantes y algunas herramientas concretas para el desarrollo profesional, la organización personal y el trabajo en equipo. Comencé el cuatrimestre con 15 alumnos y lo terminé con 12. Por lo que pude hablar con algunos alumnos, aquellos que dejaron la materia lo hicieron principalmente porque tenían otra expectativa respecto de la dedicación que la materia requería. Incluso los alumnos que completaron la materia, también coincidieron en este punto. Esto me parece totalmente entendible, pues hubo efectivamente un cambio de docente y con el ello también un cambio de dinámica. Varios alumnos venian con la expectativa de una materia más tradicional: asistir a clase, realizar un serie de trabajos prácticos y rendir un examen. En lugar de ello se encontraron con tareas semanales, muchas lecturas y varios entregables. Todo esto de forma constante a lo largo de todo el cuatrimestre. Y fue explícitamente así, pues a mi entender los proyectos se hacen día a día TODOS los días, de forma constante. Al mismo tiempo les pedí a los alumnos que dieran visibilidad constante y temprana, avisando cada vez que iban a faltar a clase o llegar tarde. Los alumnos que completaron la materia, comprendieron el objetivo de este pedido y reconocieron su importancia. La importancia no radica en avisar si faltan a la materia, sino en generar el hábito, hacer que los alumnos se acostumbren a dar visibilidad. En el contexto de toda actividad uno puede sufrir atrasos, imprevistos, etc, pero lo que NO puede hacer bajo ningún punto de vista es no dar visibilidad.

En fin, por ahora, esto es todo, más adelante comentaré algunas conclusiones de la retrospectiva.

Finalmente les dejo la foto de mi primera promoción de Ingeniería de Software, ¡felicitaciones estudiantes! (y gracias por aguantarme)

Pharo Sprint en Quilmes

Aprovachando la movida de la Smalltalks 2011, el miércoles 2 de noviembre de las 14:00 a las 20:00, el día previo a la conferencia vamos a estar llevando a cabo un Pharo Sprint.Para explicar lo que es un Pharo Sprint voy a utilizar la explicación que puso Guille Polito en el mail de difusión.

¿Qué es un Pharo Sprint?
Básicamente es una reunión de gente  que se junta gente  a programar en Smalltalk, en particular para Pharo.

¿Y qué programamos?
Y… programamos cosas locas.  Nos metemos adentro de Pharo a arreglar errores, o algunos tienen sus propios «modulos» dentro de Pharo y algunos otros simplemente vamos a aprender.

¿Y qué necesito?
¡Ganas!  El resto se consigue fácil, lo charlamos si te anotas.

¿Quién puede venir?
Todo el mundo.  La idea no es que estes solo, si no que nos sentemos de a pares así todos aprendemos un poquito, no solo del código, si no del que esta al lado…

¿Y si apenas se objetos? Me asusta esa cosa!!
Pegate una vuelta, mira la onda y si te cabe te quedas.

¿Y si ese día curso? ¿Si no puedo ir todo el rato?
Venite cuando y cuanto puedas!  No hace falta estar las 6 horas… Eso es para los limados como yo, no se preocupen.

¿Por qué habría de ir?
Uff..
– es divertido.  Vamos a codear :D.
– vas a conocer otras personas que sean igual de nerds (o no)
– se aprende banda
– podes sumar un poquito a la comunidad open source de Pharo

Me convenciste ¿Dónde me anoto?
https://spreadsheets.google.com/spreadsheet/viewform?formkey=dHlKdUdvYnF3c3VsMHB6Ny1oamJiTkE6MQ

Por último les digo que yo participé una sola vez de un Pharo Sprint y fue una gran experiencia :-).

Nos vemos.

Se viene la Smalltalks 2011

A modo de previa, el GITI ha organizado un conjunto de charlas introductorias a Smalltalk a desarrollarse en la UTN-FRBA y en UNQ durante esta semana.

Por otro lado, ya está publicado el listado de sesiones. donde van a encontrar mi sesión «Customizing Pharo«. Muy relacionado al tema de mi sesion, habrá otra sesión de Mariano Peck quien hablará ya en términos más avanzados de generación de images utilizando Metacello.

Entre otras sesiones que han llamado mi atención y a las que intentaré asistir están: Bringing BDD ideas to Pharo y Monsters from the IT: what has IT done for education?What I learned from teaching and why I’m so happy with Smalltalk y Research at RMOD presentada por el super groso Marcus Denker.

El evento es gratuito pero requiere registración.

¡Nos vemos allí!

Práctica de estimación en UNQ

(parte 5 de la serie: Ingeniería de Software en UNQ)

El jueves pasado en Ing. Soft, hicimos un ejercicio de estimación basado en la dinámica de fábrica de aviones (no voy a entrar en como es la dinámica pues si un futuro alumno lo lee, va a perder «punch»). Hicimos 3 iteraciones y en la última metimos algunas variaciones (rotación de gente, nuevos requerimientos, etc) para representar algunas situaciones comunes proyectos reales.
Creo que todos nos divertimos y me parece que algo aprendieron. De todas formas, estimación es un tema que vamos a seguir trabajando. Les dejo algunas fotos de la actividad.

Agiles 2011: Colaboración Académica Internacional

Esta fue una de las sesiones que propuse en el Open Space de Agiles 2011 y aquí voy intentar resumir en un par de líneas lo que se habló en dicha sesión.

Yo dicto Ingeniería de Software en la Universidad Nacional de Quilmes (Argentina) y la propuesta de esta sesión surgió a partir de una necesidad mía en dicho contexto. Dado que el trabajo en equipos distribuidos es algo cada vez más común, me parece importante que mis alumnos realicen una experiencia de desarrollo distribuido durante mi materia. Para eso pensé que sería interesante hacerlo trabajando en conjunto con alumnos de otras instituciones. Las formas de colaboración pueden ser diversas pero es un punto que no voy a desarrollar ahora.

Hablando de la sesión, la misma comenzó con la introducción del párrafo anterior y luego sentados en ronda nos fuimos presentando.

Luego de la presentación quedó evidencia que algunos de los asistentes se habían acercado con una inquietud diferente a la planteada por mí, que era “Cómo enseñar métodos ágiles en ámbitos académicos”. Es por esto dividimos la sesión en dos sub sesiones: una (sub)sesión centrada en mi planteo inicial y otra centrada en “Cómo enseñar métodos ágiles en ámbitos académicos”.

Al mismo tiempo en la (sub) sesión de colaboración (la planteada originalmente) surgieron tres formas distintas de posible colaboración:

  1. En el contexto de un semestre alumnos de dos (o más) instituciones trabajan en el desarrollo de proyecto que comienza y termina dentro de un semestre.
  2. En el contexto de trabajos finales de carrera (o tesis) alumnos de una institución co-dirigidos por un docente de otra institución. O bien alumnos de distintas instituciones trabajando juntos en un trabajo final.
  3. Alumnos de distintas instituciones trabajando en el desarrollo de un sistema “grande” a lo largo de varios cuatrimestres, implementando en cada materia un par de funcionalidades por cuatrimestre.

En particular (3) absolutamente integrable con (1) y (2) y tal vez sea la más simple de implementar.

Respecto a la otra (sub) sesión, desconozco como se desarrolló, pero me consta de varios casos, yo mismo sin ir más lejos estoy enseño métodos ágiles, pero cómo lo hago será tema de otro post.

Ya mandé un mail a todos los participantes de la reunión, ahora veremos cómo gira la rueda.

Primera semana Ing. Soft – UNQ

(parte 4 de la serie: Ingeniería de Software en UNQ)

Pasó la primer semana, o sea, las primeras dos clases. En el curso hay 15 inscriptos, pero solo 14 asistieron a clase. En su gran mayoría sin experiencia laboral en desarrollo de software, pero con sólidos conocimientos de programación y conocimientos al menos básicos en temas relacionados como patrones de diseño, base de datos y uso de controladores de versiones.

Durante esta primera semana el foco estuvo en establecer las expectativas del curso, entender el contexto profesional de un técnico en programación y algunas características y fundamentos de la ingeniería de software. El libro de la semana fue The Mythical Man-Month de Fred Brooks.

Por último, al finalizar la primera clase pedí feedback con la clásica técnica de las caritas y este fue el resultado.

continuará…

Elementos de Ingeniería de Software

(parte 3 de la serie: Ingeniería de Software en UNQ)

Este es el nombre formal de la materia que voy a dictar el próximo cuatrimestre en UNQ. La materia está en el contexto de la Tecnicatura en Programación Informática, una carrera de pre-grado de 6 cuatrimestres de duración cuyo objetivo es:

Formar técnicos/as capaces de elucidar e implementar soluciones en un amplio espectro de problemas asociados a las tareas de diseño/programación dentro del desarrollo de software, en un alcance razonable para un egresado/a pre-universitario, siendo capaces de aprovechar los conceptos aprehendidos en la carrera para pensar y resolver situaciones concretas, y basados en una amplia experiencia práctica obtenida durante el recorrido de la carrera.

He resaltado con negritas algunos puntos importantes que se reflejan claramente en el dictado de las materias, según me he hablado com docentes y alumnos.

Si bien en la UNQ no existen correlatividades, en el plan sugerido de cursada, la materia está ubicada en el 4 to cuatrimestre de la carrera. Al mismo tiempo, la inscripción en la materias se realiza personalmente con un docente tutor, quien tiene la posibilidad de no anotar al alumno en un materia, si considera que el alumno no está en condiciones de cursarla. El punto es que en general, los alumnos que llegan a cursar esta materia, vienen con sólidos conocimientos de  en lo que respecta a programación orientada a objetos, patrones, algoritmia y base de datos, pero sin conocimientos en cuanto a requerimientos, arquitectura, gestión de proyectos y demás cuestiones «blandas» de la ingeniería de software. Otro punto a considerar es que en el resto de las materias de la carrera, los alumnos siguen aprendiendo cuestiones técnicas como programación concurrente, construcción de interfaces de usuario y tienen una materia llamada Desarrollo de aplicaciones que auspicia en cierto modo como materia integradora. Esto hace que Elementos de Ingeniería de Software sea la única materia en la que ven cuestiones generales de ingeniería de software que no son de índole técnica.

Luego de haber analizado todas estas cuestiones y  haber consultado con varios profesores, ya tengo una idea como encarar la materia. Como libros de texto voy a utilizar Software Engineering de Pressman y The Art of Agile Development de Shore. Dado el contexto de la materia, no voy enfocarme en cuestiones de management (aunque si las vamos a ver) si no más bien en cuestiones de self-management que todo programador tiene que poder hacer:

  • Entender el contexto de su trabajo
  • Entender los requerimientos e incluso poder modelarlos y transmitirlos.
  • Organizar su trabajo y estimarlo.
  • Comunicar su trabajo: progreso, dudas, impedimientos y siguientes pasos.
  • Identificar potenciales inconvenientes relacionados a su trabajo.

Para todos estos puntos voy a tomar como referencia complementaria el Personal Software Process de Humphrey. Tengo la intención de que estos temas no queden solo en la teoría y para ello planeo hacer un par de coding dojos/katas y algunas otras actividades de índole práctica para poner justamente en práctica cada uno de los temas que vayamos viendo.

Por otro lado, también voy a dar algunas cuestiones un poco más técnicas relacionadas a arquitectura, atributos de calidad y diseño de alto nivel, principalmente porque no hay ninguna otra materia en la que se vean.

Finalmente hay una serie de temas complementarios que quiero dar como ser:

  • Modelos de calidad (CMMI, ISO, etc)
  • Administración de servicios de sofware
  • Emprendedurismo
  • Desarrollo Open source

Para todos estos temas complentarios y también para algunos de los temas principales, pienso convocar a algunos profesores invitados. En particular quiero invitar a gente de la industria a contar como llevan a la práctica las cuestiones que vamos a estudiar en la materia. Y para esto mi idea es traer representantes de empresas de distintos tamaños:

  • Un pequeño emprendimiento (entre 3 y 8 personas)
  • Un empresa mediadiana (unos 200 empleados)
  • Una empresa grande/multinacional (más de 500 empleados)

Bien, creo que esto es todo por el momento. A medida que se me vayan ocurriendo más cosas las iré publicando.

Software, Hardware y Peopleware

(parte 2 de la serie: Ingeniería de Software en UNQ)

Como ya mencioné en una entrada anterior, durante la segunda mitad de este año voy a dictar ingeniería de software en UNQ. Esto me ha llevado a plantearme explícitamente mi visión de esta disciplina.

Estoy absolutamente convencido que la ingeniería de software es una disciplina con un gran contenido social/humano más allá del contenido técnico. Si bien seguramente haya gente desarrollando software en «forma aislada», creo que no es lo más común, en general el software se desarrolla en equipos de personas. En forma más o menos directa el software es utilizado por personas. Y aunque no suene muy lindo, podríamos decir que la materia prima del software son las ideas/experiencias de las personas que participan en el proceso de construcción.

Del párrafo anterior se desprenden algunos corolarios.

El trabajo en equipo requiere de ciertas habilidades «blandas» que en determinados contextos pasan a ser incluso más relevantes que las habilidades «duras o técnicas».

Puede que las personas sean más importantes de lo que parece a simple vista. Y ya que hablamos de las personas no puedo dejar de recomendar este sorprendente video sobre motivación.

No estoy solo en esta posición, pues de hecho no la «invité» yo sino que la «escuche» de Tom De Marco y Fred Brooks y he tenido la posibilidad de confirmarla día a día en los años que llevo trabajando tanto en la industria.

Por último repito la frase que puse en mi página personal

Estoy absolutamente convencido de que el principal factor para el éxito de los proyectos no es ni el software ni el hardware, sino el peopleware, y es por eso que adhiero fervientemente al manifiesto ágil.

continuará…