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

Agiles a JAIIO 40

El año pasado, algunos de los miembros de la comunidad ágil de Argentina, creamos un grupo de interés dentro del contexto de la Sociedad Argentina De Informática e Investigación Operativa (SADIO), para darle un marco formal a nuestras actividades. Desde entonces hemos establecido una muy buena relación con SADIO, que a su vez nos ha apoyado en la realización de diversos eventos como el Agile Open Tour y Agiles2011. Es asi que en las próximas Jornadas Argentinas de Informática e Investigación Operativa (JAIIO) organizadas por SADIO va a haber un conjunto de talleres a dictados por miembros del grupo de interés. Pueden encontrar más información al respecto en la página del evento, tal conozcan a alguno de los instructores ;-).

 

Retrospectiva 2011-1 (con video)

El jueves pasado hicimos la restrospectiva de fin de cuatrimestre en algo3. Utilizamos la misma dinámica que en los últimos cuatrimestres. Entre los positivos puntos destacados se destacaron:

  • El dinamísmo de las clases y en particular el de la clase de repaso
  • El uso de Smalltalk y también otros lenguajes
En los puntos negativos destacaron:
  • El alcance del TP1
  • El poco tiempo para hacer los parciales
Si bien a mi parecer el TP1 no era muy extenso, creo que tenia un complejidad importante a pesar de que dimos dos semanas para desarrollarlo, con lo cual sin duda es algo que tendremos que reveer.
En cuanto al tiempo de los parciales es algo que tendremos que hablar con Carlos.
Adicionalmente a esto hubo algunas sugerencias interesantes por parte de los alumnos:
  • Tener más clases en el laboratorio
  • Hacer una clase de repaso previa al segundo parcial
Más allá de todos estos puntos, mi evaluación personal del cuatrimestre es positiva ya que comparando con los resultados de años anteriores, veo que muchas cosas las hemos ajustado convenientemente. Es de destacar que un solo alumno hizo mención negativa respecto de las lecturas, tema que en cuatrimestre anteriores fue muy polémico.
Por último, un detalle adicional a mencionar es que hemos grabado algunos fragmentos de la actividad. Pueden ver el video resultante en: http://www.youtube.com/algo3fiuba#p/a/u/0/W-Z7joZjNyQ.

Actuando el mergesort

Hoy en Algoritmos 1 vimos algoritmos de ordenamiento y como ejercicio se nos ocurrió hacer una representación actuada de los algoritmos de ordenamiento mergesort y quicksort. Básicamente le pedimos a 10 alumnos que se pararan en hilera y que aplicaran el algoritmo para ordenarse por altura de menor a mayor. No se si a los alumnos les sirvio para entender mejor los algoritmos, pero a mi me pareció muy didactica y entretenido. Relacinado a esta temática les dejo este link de gente que baila representando diversos algoritmos de ordenamiento.

Agile Open Tandil 2011

Hace un par de horas que de Tandil luego de haber asistido a esta jugosa conferencia. Estimo que hubo unos 60 participantes los cuales se repartieron entre las más de 16 sesiones seleccionadas. Para mi sorpresa habia muy pocas personas que también habian de la edición anterior (2009), pero parece que en Rosario ocurrió lo mismo, curioso, ya que las ediciones anteriores tuvieron muy buenas repercusiones.

Siguiendo con curiosidades, me enteré que un porcentaje importante de los residentes de Tandil dedicados a sistemas, son originarios de Mar del Plata, lo cual según me explicarón algunos Marplatenses, se debe al hecho que en Mar del Plata no hay universidades públicas que dicten carreras de sistemas y al mismo tiempo resulta que el costo de estudiar en una universidad privada es comparable al costo de un mudarse a Tandil. Además de tandilenses y marplatenses me encontré en la conferencias con algunos colegas de Buenos Aires, puntualmente Martín Alaimo y Hernán Wilkinson.

Una de las sesiones más jugosas de las que participé, fue sobre la enseñanza de métodos ágiles en el ámbito académico. Esta sesión fue propuesta por una docente de ingeniería de software Mar Del Plata. Durante la sesión en la que participamos unas 20 personas, varios docentes expusieron sus experiencias. Algunos alumnos de la UNICEN mencionaron ellos ven una primera aproximación a métodos ágiles en la materia de ingeniería de software y luego tienen la posibilidad de cursar una materia optativa, exclusiva sobre métodos ágiles. En lo que a mi respecta, mencioné algunas de prácticas que usamos en Algo3fiuba y lo que hace JuanG en Administración y control de proyectos 2 y lo que hace CarlosF en Taller de Desarrollo de proyectos 2.

Luego del evento, que finalizó alrededor de las 17 hs., fuimos a tomar un café con MartínA, y los locales y JulianA y Carlos Walzer.

Finalmente, cerramos el dia con un excelente asado en las oficinas de Temperies con JulianA (alto asador), EstabanR, HernánW, MartínA y algunos otros miembros del eqeuipo de Temperies. Asi fue que entre carnes, vinos, guitarra y metegol, pasamos un excelente noche.

Resolución de conflictos @ AgilesBaires

Esta fue la temática del encuentro mensual que en esta ocasión estuvo facilitado por Ingrid de FuerzaTres. Contabilizamos un total de 20 asistentes y no deja de sorprenderme que al igual que todos los encuentros anteriores, sigue sumándose gente nueva.

El encuentro comenzó con una dinámica para romper el hielo facilitada Rick  Colusso. Luego se desarrollo con la modalidad presentación, pero la participación de la audiencia fue muy importante, sorprendiendo incluso a Ingrid, que no pudo terminar de presentar todos los slides que tenia preparados!!!

That’s all folks!

 

Técnicas para enseñar programación

Hace ya un largo tiempo que vengo leyendo sobre algunas dinámicas interactivas de programación como los coding dojos, pero recien hace un par de semanas tuve la oportunidad de particitar en uno. Dicha actividad se desarrolló en el contexto de los encuentros mensuales de la comunidad ágil de Buenos Aires y estuvo coordinado por Adrian Eidelman (pueden ver el video en code&&beyond). La actividad me resultó muy amena y me ayudó a confirmar una sospecha que tenia: definitivamente este tipo de dinámicas son una excelente herramienta para a enseñar a programar. Es por esto que voy a intentar incoporarlas a las materias que voy a dictar este cuatrimestre.

La técnica del dojo viene del mundo de las artes marciales, donde los practicantes suelen realizar ejercicios/movimientos en forma repetiva para dominar plenamente una técnica. Esta situación es fácilmente extrapolable a cualquier otra disciplina deportiva: todo deportista profesional mejora en base al entrenamiento. ¿cómo podríamos entonces llevar esta idea al ámbito del software? Si lo pensamos con detenimiento en general los programadores nos entrenamos dentro de los proyectos, es como si un futbolista no entrenara durante la semana y fuera directamente al partido el domingo . Alguien podría argumentar que en realidad los programadores nos entrenamos cuando estudiamos, pero en realidad eso seria como la etapa en la que un futbolista aprende las reglas del deporte y la técnica básica para patear un balón o en el caso de un arquero como armar la barrera para un tiro libre.

Un coding dojo es una reunión en la que programadores se juntan para trabajar en un desafio de programación, en cierto modo podria decirse que es un equivalente al entrenamiento de un deportista. Existen diversas variaciones en la dinámica, una llamada randori, consiste en trabajar  con una única computadora y un proyector, la solución es implementada  por pares de programadores que van rotando por la máquina según algún criterio predefinido (porque ejemplo cada 7 minutos).

Otra variante del dojo es la denominada  kata, en la cual un programador toma la máquina conectada al proyector y resuelve el desafio mientras los otro programadores lo observan atentamente  preguntando cualquier detalle que no les quede claro. Una vez finalizado, una programador de la audiencia toma la máquina y repitiendo los pasos previamente observados resuelve nuevamente el desafio comenzando desde cero.

Este post de Code&Beyond tiene varios recursos al respecto de esta técnica y explica la idea con más profundidad. También pueden leer este post de Dave Thomas, uno de los principales responsable de la popularización de esta dinámica.

Espero lo disfruten y prometo en un futuro compatir los resultados de la aplicación de esto en mi ámbito académico.

Juan @ AgilesBaires

¿Llegará el día en que escuche a una presentación de Juan y no aprenda nada? No lo sé, pero lo veo difícil. El martes tuve agrado de asistir al encuentro mensual de comunidad Agiles@ Buenos Aires donde Juan dió una presentación titulada: ¿Existe «la mejor manera» de probar?. Simplemente excelente: no solo la presentación fue muy buena sino que también me resultó enriquecedora la ronda de preguntas y respuestas.

Otro punto para destacar es la importante cantidad de asistentes (muchos de ellos primerizos en estos encuentros) sobre considerando que estamos en pleno período de vacaciones.

La sesión fue grabada, con lo cual dentro de un tiempo seguramente este disponible en el blog de Juan o en el sitio de comunidad, pero mientras tanto pueden leer este blogpost de Juan que resume lo presentado.

Aquí les dejo algunas fotos del evento.

And one day I visited Dublin

I am writing this entry in English because I expect some English speaking visitors: a couple of hours ago I did a presentation in Dublin in the context of the Agile Tour 2010. In future posts I will share some more information about the event. Now, I just give you the links to the material of my presentation:

Here is the slide deck I used: click to download.

And here is the original paper in witch the presentation was based: click to download.

Finally, I just to thank to the organizers for giving me the opportunity to present my work.

Simposio Argentino de Ingeniería de Software (JAIIO 2010)

Durante esta semana se está llevando a cabo el evento de referencia en la instalaciones de Universidad Argentina de la Empresa (UADE). Como comenté hace un tiempo en un post anterior, junto con Shaggy escribimos un paper que fue aceptado en este simposio.  Para los interesados, la cita es el viernes 3 de septiembre a las 16.30 hs. en el Aula Magna y el orador será mi colega y co-autor el Ing. Ariel Schapiro (Shaggy).

El título de la presentación es: Lightweight framework for quality assurance in SMEs y aquí les dejo un resumen:

«Based  on  their  business  needs, many  software  Small  and Medium Enterprises (SMEs) differentiate  through  the high quality of  their deliverables, compliancy with standards and alignment with engineering best practices. This paper  explains  how  an  SME  in  that  context,  successfully  used  a  lightweight framework  based  on  premises  like  self-assessment,  tailoring,  automation  and positive  peer  pressure  that  assured  a  high  level  of  service  quality  while removing the implied costs that would be derived from implementing a Quality Assurance (QA) department. The framework aligned with  the company’s agile processes  allowing  teams,  through  the  implementation  of  short  iterations,  to assess their compliancy with a tailored quality baseline and make reviews with the  help  of  cross-teams  Quality  Reviewers.  The  result  was  a  low  cost framework  that  helped  to  grow  factors  like  overall  process  quality  while increasing quality perceived from the customer. »

Espero que lo disfruten.