Monthly Archive for January, 2008

La evolución de la sintaxis y semantica en las Pruebas de Unidad (Unit Testing)

Roy Osherove escribe en su blog un interesante artículo acerca de los diversos tipos de “Unit Testing” y su evolución.

“The semantics of how you write a unit test, the basic syntax, or Domain Specific language of how we write them, has been relatively stale for quite some years now. But under the covers, the syntax revolution seems to be brewing, as people try to come up with newer, hopefully better and more readable syntaxes for tests and specifications that become more and more complex as the current Agile community struggles to accept best practices in this arena.

I’m guilty of that too, but a recent post by Jeremy Miller prompted me to try and list all the different syntax variations I’ve come across in the .net and some in java world (not necessarily in chronological order). Most ofthese didn’t necessarily catch on as de facto standards, but are real world attempts to make a better world or explore new horizons.”

Continuar Leyendo: “The evolution of Unit Testing Syntax and Semantics”

Acerca del XPDay Chile 2007

Hoy hace un mes desde el primer XP Day realizado en Chile. La locura de fin de año hizo que nos costase el encontrar el tiempo para publicar esta mini-reseña.

Primero que nada algo de historia: Ya habiendo trabajado desde el 2002 en el curso CC62V (Taller de Metodologías Ágiles de Desarrollo de Software) del Departamento de Ciencias de la Computación de la U. de Chile y formado a decenas de ingenieros en Extreme Programming (XP), y viendo cómo éste ha pasado de ser una novedad a una de las formas más importantes de hacer software en “el mundo desarrollado”, me pregunté: ¿Qué pasará acá en Chile? ¿Hay más gente realmente interesada en este tema? ¿No sería bueno juntarse a compartir experiencias?

Así fue que buceando por la lista “oficial” de Extreme Programming en Yahoo Groups encontré que era ya tradición el que los XPadictos y/o ágiles se juntasen en el llamado “XP Day”, del cual hay versiones en varias partes del mundo. Así que me atrevi a pedir consejo en la lista antes nombrada acerca de cómo organizar un encuentro de estos. Incluso con el feedback del propio Kent Beck

Agustin ,It sounds like you are building community there in Chile. I think that’s an
excellent way to support the changes required to apply XP.
“XP” itself has always been protected by community instead of trademarks. I
would expect that you could use XP and day together without violating
trademark or copyright. People coming to an XP day will have certain
expectations of quality and style of interaction based on experiences from
previous XP days held in other parts of the world.
Best of luck,Kent Beck
Three Rivers Institute

(poner gritos de colegialas aqui, plis :) )

Mi posición de profesor de Jornada Parcial en la U al fin rindió frutos y me permitió conseguir un lugar adhoc sin costo. Luego convoqué a dos de mis más cecanos ex-alumnos para que actuásemos como comité organizador (Daniel Pizarro y hernán Sánchez) quienes se aportaron no sólo con su tiempo sino que se sumaron para financiar el dominio del evento. Así fue pasando el tiempo hasta que llegamos a la fecha, sin tener claro cuanta gente sería la que finalmente expondría y cuantod asistirían.

¿Y cómo estuvo el día?

Como toda gran iniciativa partió con pocos: no éramos más de 6 o 7 al partir el día, pero de a poco se fue sumando hasta completar unos 15 que estuvimos hasta el final. La gente nos preguntaba si había que pagar el aporte simbólico de $2000, pero con Hernán y Daniel decidimos que mejor se lo guradaban para el almuerzo.

Hubo varios momentos álgidos:

  • Hice una presentación en donde explicaba XP a la luz de los años de tratar de entenderlo, y me asombró ver un auditorium bastante lleno.
  • El almuezo, a pesar de la broma del Chino Godo, fue muy del estilo ágil: una parrillada compartida por los 10 que almorzamos juntos.
  • Y al final del evento tuvimos una mesa redonda acerca de cómo se vendía un proyecto ágil. las notas las tomó Daniel y espero que tenga algún tiempito para subirlas. Lo bueno de la conversa se demuestra en que nos pasamos más de una hora de lo planificado, tanto así que nos tuvimos que cambiar de sala porque el auditorium iba a ser ocupado por otra gente al final del día.

Me quedan en la retina además las dudas del Mauro Palma con respecto a la efectividad de la Programación de a Pares ( supongo que a estas fechas lo habrá intentado :) ), el que el “break” no tuvo financiamiento para darle café a la audiencia, el entusiando de Pedro Fuentes, uno de los pocos “agilistas” a los que llegamos que no son de la U, y que gracias a su apoyo podemos contar con este blog. Dentro de lo malo estuvo que no pudo asistir la gente que trabaja con Scrum en la Universidad Católica, y que, quizás, todavía estamos muy lejos de llegar a aquellos agilistas que en nuestra precaria industria tratan de hacer mejor su pega desde la mirada ágil.

Las presentaciones del XP Day 2007, primero realizado en Chile, las iremos publicando en este sitio. Por ahora, les doy un anticipo con la charla motivacional inaugural que preparó Hernán Sánchez.

Fotos de XPDay 2007

Como un adelanto al review del evento les dejamos una selección de fotos.

Prototipos de papel para análisis de requisitos y usabilidad ágiles

“Cuando el cliente no termina de tener claros algunos puntos o cuando la usabilidad es un valor clave del sistema, el prototipado en papel es una excelente técnica de trabajo; y como estos son factores habituales en los proyectos ágiles, es muy útil disponer en el inventario de recursos esta forma de prototipado ligero para echar mano de ella cuando se necesite.”

Link: Prototipos de papel para análisis de requisitos y usabilidad ágiles

Los fundamentos de lo ágil

A fines de los 90′, cuando se comenzaba a hablar de Extreme Programming y otras propuestas similares como Scrum, DSDM u otros, se les llamaba en conjunto “metodologías livianas”, en contraste con el sobrepeso del imperante ciclo de cascada basado en “analizar-diseñar-implementar-probar”. Sin embargo el término “liviano” poseía un sesgo negativo, por lo que al juntarse los mayores proponentes dichos métodos, decidieron que era mejor hablar de “agilidad”.

La agilidad es entendida como la capacidad de adaptarse de buena manera a los cambios, lo que en el incierto mundo del desarrollo de software es la norma. Sin embargo, este concepto halla sus raíces en una industria que, al igual que la informática, en algún momento lideró la inventiva humana: la automotriz.

Luego de que Ford aplicara como innovación en la producción de automóviles la llamada “gestión científica” promovida por Taylor, logró efectivamente disminuir brutalmente los tiempos de producción al planificar en detalle cada paso de la línea de ensamblaje y al especializar radicalmente a los obreros en tareas específicas y aisladas, pero con una gran falla, que Ford enunciaba como virtud : You can paint it any color, so long as it’s black”. - “Puedes pintarlo (el auto) de cualquier color, mientras sea negro” -

La empresa Toyota planteó un modelo que permitía pasar por sobre esta rigidez productiva, permitiendo configurar la fábrica de autos de manera ágil siguiendo un principio fundamental: “eliminar desperdicios”. ¿Qué es un desperdicio? Todo aquello que no aporte valor. En un proceso productivo, que se encarga de generar de manera repetitiva una línea de productos, podemos encontrar varios tipos de desperdicios (del excelente libro “Lean Software Development” de Mary y Tom Poppendieck), nombrando algunos:

  • Inventario: Productos estacionados en bodegas
  • Sobre-producción
  • Transporte
  • Esperas
  • Defectos

Si estamos hablando del mundo de la producción, ¿que pasa con el del desarrollo? Primero debemos notar que entre ambos existe una gran diferencia: mientras en el primero se buscar generar repetidamente un producto, en el segundo se está creando el producto. No es lo mismo hacer un queque de alguna fruta exótica, digamos sandía, que inventar la receta de dicho queque, en donde hay que enfrentar varias incertidumbres, como los es el uso de una fruta poco conocida para este tipo de pasteles. Aquí aparece el concepto de desarrollo de nuevo producto, que refleja la incertidumbre como parte de la naturaleza de toda invención.

Si aplicamos el principio de “reducción de desperdicios” al desarrollo de software en particular, podemos hacer un parangón entre los desperdicios anteriores y los de un desarrollo:

Producción Desarrollo de Software
Inventario: Productos estacionados en bodegas Funcionalidades a medio hacer
Sobre-producción Sobre-ingeniería: funcionalidades que no se necesitan realmente
Transporte Cambios de contexto entre tareas
Esperas Esperas
Defectos Bugs

¿Cómo está relacionado lo anterior con lo que conocemos de las metodologías ágiles? la primera relación obvia está en la generación de software funcional y útil para el cliente lo antes posible dentro del desarrollo de software a través la permanente retroalimentación con los desarrolladores, lo que a su vez evita cuellos de botella en el flujo de conocimiento y, por ende, tener que esperar información importante para poder continuar trabajando.

¿Qué sacamos de todo lo anterior? Que las metodologías ágiles no aparecieron de la nada, existiendo una vasta experiencia anterior. Pero lo más importante es que hay un Norte (o Sur si nos ponemos nacionalistas) al cual referirnos siempre si queremos adaptarnos nuestra forma de trabajar frente a imprevistos, y es la permanente y porfiada reducción de lo que no sirve, o dicho en positivo, la búsqueda permanente del mayor valor.