Comunidad Ágil y Lean de Chile

Los fundamentos de lo ágil

Posted by on ene 2, 2008 in General | 3 comments

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.

3 Comments

Join the conversation and post a comment.

  1. Mauricio Cerda

    Un aspecto que no es del todo similar a la analogia de la produccion de bienes en serie y que no me parece suficientemente remarcado, es el hecho que la confeccion de software es para mi una actividad creativa, me explico.

    Una persona/institucion, quiere hacer un software por tanto debe tener una idea, esta idea se la transmite a quien tiene los elementos tecnicos para hacerla, programador, ingeniero, equipo desarrollo, etc., pero la manera de transmitir la idea, es siempre entre dos o mas personas, por tanto es algo humano, imperfecto por naturaleza.

    Xp a mi me parece que es una manera natural de pasar una idea a lo concreto, haciendo cosas de a poco, viendo como va el desarrollo, discutiendo, ajustando. Evitar sobretodo estar encerrado en una oficina y decir “esto es lo que hay que hacer” ahi es desastre asegurado (que seria la tipica cascada).

    Tampoco se puede caer en el desarrollo a parches, se debe combinar con algun tipo de estructura (planifico, discuto, pruebo, evaluo, por decir algo), y ahi esta la parte creativa, combinar la estructura necesaria para poder hacer ingenieria, con la flexibilidad necesaria para soportar un proceso XP, generando resultados finales de calidad.

    salu2!

  2. Agustin Villena

    Tu haces énfasis en la distancia que existe entre la comprensión del problema por parte de los que entienden el negocio y los que desarrllan el software, que obviamente es algo que hay que sincronizar lo más posible. Pero no olvides también que muchas veces ni el cliente ni los desarrolladores conocen suficiente del problema a resolver, y la única forma de lograr dicho conocimiento es avanzando en resolver el problema.
    La creatividad que tú mencionas tien mucho que ver con la capacidad de aprender rápidamente y con ello poder generar mejores soluciones, que es una de las bondades del modelo ágil.

  3. Sincklation

    Muy buena analogía, sobretodo para quienes estamos recién ingresando al mundo ágil, creo que es importante primero darse cuenta de lo que hacemos mal, darse cuenta que “mejor que sobre a que falte” no es una buena práctica.

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>