Historia de las Metodologías Ágiles en Contexto
Investigando un poco me llamó la atención que el modelo Waterfall fue recién definido en 1970 por Wiston Royce en su artículo "Administrando el desarrollo de sistemas de software grandes" -todavía sin el nombre "Waterfall" y sin las etapas con las que finalmente se usó ampliamente- mientras que la ideas metodologías ágiles son anteriores. La idea de desarrollo en ciclos cortos iterativos e incrementales data de 1939 y el término Scrum como analogía del Rugby para el desarrollo de software data de 1986.
Otro dato curioso, es que el paradigma de programación orientada objetos fue creado antes que el paradigma de programación estructurada cuando en la práctica vemos al primero como más moderno que el segundo.
Preparé una línea de tiempo con algunos hitos importantes en la historia del desarrollo de software y de la informática en general para un análisis más profundo y poner también a las metodologías de desarrollo en contexto.
Nota:
El presente documento es fruto de investigación propia y se encuentra en constante actualización a medida que encuentro información nueva y más precisa. Las fuentes consultadas son páginas de internet, artículos y libros que pueden consultarse al final de la página. Te invito a aportar con datos que te resulten de interés en los comentarios de este artículo y serán incorporados a la Línea de Tiempo.Línea de Tiempo:
- 1835: Las primeras ideas sobre el desarrollo de manera iterativa e incremental (no aún con esos términos) fue descrito por Darwin en la Teoría de la Evolución. Como describo en mayor profundidad en este post.
- 1891: Frederick Taylor define la Administración Científica del Trabajo. Expandiendo ideas sobre la división del trabajo a tareas simples y rutinarias, la motivación extrínseca, productividad a través del control y supervisión de los empleados. (EEUU).
- 1924: Sakichi Toyoda (Japón) inventa e implementa por primera vez la automatización "con un toque humano". Concepto conocido como Jidoka. Inventa una máquina de telar capaz de detectar automáticamente cuándo el hilo se rompía y deteniendo la producción para evitar desperdicios o defectos en el tejido final. Sakichi Toyoda, quien luego en Toyota, aplicaría estos conceptos conocidos hoy en día como Manufactura Lean. Ideas que confrontan directamente al Taylorismo.
- 1936: Alan Turing desarrolla la Máquina de Turing, que sirve para explicar el funcionamiento lógica de una CPU. (Inglaterra)
- 1939: Walter Shewhart (EEUU) -conocido como "El padre de la calidad"- publica en su libro Statistical Method from the Viewpoint of Quality Control el proceso de mejora continua y trabajo iterativo e incremental a través de ciclos cortos de "Planificar, Hacer, Analizar y Actuar" (“plan-do-study-act”).
- 1946: El ENIAC, la primera computadora digital de la historia. (EEUU)
- 1948: El ingeniero chino Taiichi Ohno comienza a crear Kanban en Toyota (Kanban & Toyota Production Systems / Lean ) (Japón)
- 1950: El Jet hipersónico X-15 el primer proyecto de tecnología desarrollado con metodología Iterativa e Incremental, Referencia [1]. (EEUU)
- 1957: FORTRAN, el primer lenguaje de programación de alto nivel (IBM)
- 1958: NASA empleó una metodología Iterativa e Incremental para el proyecto Mercury, para el primer viaje de un hombre al espacio, de acuerdo a [ref].
- 1962: J.C.R. Licklider de MIT hizo la primera propuesta de una red de computadoras global y fue Departamento de Defensa de EEUU para desarrollarla.
- 1966-1969: Desarrollo de ARPANET, primera red de computadoras, progenitora de Internet. Creado por el departamento de defensa de EEUU
- 1967: Se desarrolla en Noruega el lenguaje Simula, considerado el primer lenguaje de programación del Paradigma Orientado a Objetos [ref] (Foto: Simula por los Científicos Noruegos Ole-Johan Dahl y Kristen Nygaard)
- 1969: Se crea el paradigma de Programación Estructurada, el sistema operativo UNIX y se crea el Project Managament Institue (PMI) (Foto: Ken Thompson y Dennis Ritchie, creadores de UNIX)
- 1970: Dr. Winston Royce escribe el paper que hizo historia "Managing the Development of Large Software Systems". A este paper se ha atribuido muchas veces la primera definición del proceso secuencial para desarrollo de software. Hoy conocido como Waterfall. Aunque si vemos en detalle el Paper, Royce no recomienda este método, prevé sus riesgos y sugiere que se debe iterar por lo menos dos veces. En el paper menciona que este proceso "invita al fracaso".
- 1971: Ray Tomlinson creó el E-mail, escogiendo la arroba de los caracteres disponibles en el teclado.
- 1972: Dennis Ritchie desarrolla el lenguaje de programación C y Marc J. Rochkind el primer sistema de control de versiones de código fuente.
- 1974: Se usa el término Internet por primera vez para denominar a la red que hoy conocemos, que se originó como ARPANET
- 1975: Bill Gates and Paul Allen fundan Microsoft
- 1976: Steve Jobs and Steve Wozniak crean Apple Computers Inc.
- 1976: Bell, T., & Thayer, T. publican un paper llamado "Software requirements: Are they really a problem?" luego de la segunda Conferencia Internacional de Ingeniería del Software (ICSE '76). Aquí se registra el primer uso del término "Waterfall" (Desarrollo en Cascada) y menciona al Paper de Dr. Wiston Royce de 1970.
- 1978: Primera publicación del libro en "The Toyota Production System" de Taiichi Ohno.
- 1983: Todas las computadoras de ARPANET comienzan a utilizar el protocolo TCP/IP. El protocolo de Internet que sigue vigente hoy día.
- 1985: el Departamento de Defensa de los Estados Unidos hace Estándar la adopción del Modelo en Cascada, con la publicación del Estándar 2167 (DoD-STS-2167). Esta publicación se basa en una incorrecta interpretación del Paper de Winston Royce de 1976 donde en realidad desaconseja su uso. Este Estándar de DoD influencia a los estándares que luego se adoptarían en Europa (Inglaterra, Francia y Alemania).
- 1985: El primer dominio Web ".com" registrado (symbolics.com)
- 1985: Tom Gilb escribe el artículo “Evolutionary Delivery versus the ‘Waterfall model’
- 1986: El primer registro del término SCRUM en el desarrollo de producto en el articulo “The New New Product Development Game.” publicado en el Harvard Business Review. Los autores, Takeuchi, Hirotaka and Nonaka, Ikujiro aplicaron estas metodologías en empresas como Fuji-Xerox, Canon, Honda, NEC, Epson, Brother, 3M, Xerox, and Hewlett-Packard. De aquí toman el nombre Jeff Sutherland y Ken Schwaber en 1995. El termino ‘Scrum’ refiere al Rugby para destacar la importancia del trabajo en Equipos para el éxito en el desarrollo.
- 1986: Kent Beck and Ward Cunningham comienzan a experimentar aplicando Patrones de Diseño al Desarrollo Software
- 1987: Ivar Jacobson implementa un modelo iterativo e incremental de desarrollo en Suecia, conocido como Objectory. Si bien es Iterativo e Incremental, es considerado un proceso pesado
- 1988: Se utiliza por primera vez el término Lean Manufacturing en el artículo "Triumph of the Lean Production System" (John Krafcik) basado en la su tesis en MIT Sloan School of Management
- 1990: Se populariza el paradigma de Programación Orientada a Objetos y se crea UML. Se populariza el término Lean Production rereferido a Toyota Production System en el libro The Machine That Changed the World (James Womack)
- 1990: Tim Berners-Lee crea la Web, el protocolo HTTP y el lenguaje HTML.
- 1991: DeGrace y Stahl hacen referencia a la analogía con Scrum en el libro "Wicked Problems, Righteous Solutions"
- 1993: Jeff Sutherland crea el framework de Scrum, tomando el término "Scrum" del paper de Takeuchi and Nonaka (1986), adaptándolo para el desarrollo de Software.
- 1993: Bill Opdyke introdujo la Refactorización de Código en su artículo "Creating Abstract Superclasses by Refactoring"
- 1994: Standish Group publica un estudio conocido como "CHAOS Report" donde se evidencian las bajos resultados de los proyectos de Desarrollo de Software. Siendo aquí el modelo estándar el Waterfall.
- 31.1% de los proyectos fracasaron, fueron cancelados
- 52.7% de los proyectos se excedieron en costos y/o tiempo
- 16.2% de los proyectos fueron exitosos
- 1995: Jeff Sutherland y Ken Schwaber popularizan Scrum tras hacer público el paper "The SCRUM Development Process" en la conferencia OOPSLA de Texas. Mike Beedle fue uno de los primeros en adoptarlo y llevarlo a organizaciones. [ref]. Las primeras empresas fueron donde se implementó y refinó Scrum fueron Individual, Inc., Fidelity Investments, and IDX (ahora GE Health).
- 1995: Jim Coplien y Larry Constantine separadamente introducen la idea de Programación en Pareja (Pair Programming)
- 1995: Rasmus Lerdorf (foto) lanza PHP al tiempo que James Gosling lanza JAVA. Los dos lenguajes de programación más populares hoy en día. El proyecto de desarrollo de JAVA comenzó en 1991 mientras que PHP comenzó en 1994.
- 1996: Rational Software promueve el Proceso de Desarrollo Unificado (RUP), un proceso de de desarrollo iterativo e incremental que intenta resolver los problemas de Waterfall, pero sin dejar de ser un proceso "pesado". Adaptado del original de Ivar Jacobson de 1987. El propio Jacobson "evoluciono" a un modelo ágil. [ref]
- 1999: Kent Beck introduce la metodología de desarrollo Extreme Programming (XP), el empleo de User Stories, la Integración Continua, Pair Programming y otras prácticas usadas ampliamente en el desarrollo ágil.
- 2001: 17 agilistas se juntaron a discutir y firmar el Manifesto Ágil con los cuatro valores y doce principios. (Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland and Dave Thomas). De [aquí] podés descargar las notas originales del Manifesto
- 2001: Se publica el primer Libro sobre Scrum: "
- Agile Software Development with Scrum". ( Ken Schwaber, Mike Beedle)
- 2001: Se publica el libro "The Toyota Way" con los 14 Principios de Lean Manufacturing
- 2002: Ken Schwaber, Mike Cohn y Esther Derby fundan la ScrumAlliance y crean la Certificación de Scrum Master. Además se crean las técnicas de Test Driven Development (Kent Beck) y Planning Poker (James Grenning)
- 2003: Mary and Tom Poppendieck publican el libro Lean Software Development llevando los Principios de Lean al desarrollo de Software.
- 2006: Jeff Sutherland funda la empresa Scrum.inc.
- 2008: Surge la certificación de Scrum Product Owner (CSPO)
- 2009: Ken Schawber funda Scrum.org
- 2010: Primera publicación de la Guía Oficial de Scrum (http://www.scrumguides.org/)
¿Sabés quién es el personaje de la foto principal de este artículo?
Nació en Budapest en 1903, fue compañero de Albert Einstein en la construcción de la bomba atómica e hizo innumerables aportes en varios campos de la ciencia, como matemáticas y a la computación.
En 1945 diseño la arquitectura utilizan las computadoras actuales, en cuyo diseño propone el uso de los programas de Software almacenados en memoria junto con los datos. Hasta ese momento las instrucciones de la computadora se hacían por medio de cableados físicos. Participo en la construcción de la primera computadora (ENIAC). Creó el algoritmo de ordenamiento Merge Sort ampliamente utilizado.
"Si la gente no piensa que las matemáticas son simples, es sólo porque no se dan cuenta de lo complicada que es la vida." - John Von Neumann
Más Información:
- En www.agilefluenca.org puede encontrarse una línea de tiempo de hitos en las metodologías ágiles
- Historical Roots of Agile Methods: Where did “Agile Thinking” Come from? Muy buen artículo donde se indica el origen de cada práctica ágil.
Referencias:
- http://scrum.jeffsutherland.com/2010/08/mike-beedle-on-early-history-of-scrum.html
- http://sewiki.iai.uni-bonn.de/teaching/labs/xp/2009b/seminar/history
- http://setandbma.wordpress.com/2012/03/23/agile-history/
- http://finding-marbles.com/2012/04/15/a-brief-history-of-agile-and-lean-events/
- https://www.it.uu.se/edu/course/homepage/acsd/vt08/SE1.pdf
- http://www.craiglarman.com/wiki/downloads/misc/history-of-iterative-larman-and-basili-ieee-computer.pdf
- https://www.it.uu.se/edu/course/homepage/acsd/vt08/SE1.pdf
- http://en.wikipedia.org/wiki/Iterative_and_incremental_development
- http://en.wikipedia.org/wiki/Project_Mercury
- http://intenseminimalism.com/2012/a-brief-history-of-agile-methods/
- http://www.nr.no/en/about-main
- http://cm.bell-labs.com/cm/cs/who/dmr/picture.html
- http://walthowe.com/navnet/history.html
- http://guide.agilealliance.org/timeline.html
- The Leader's Guide to Radical Management: Reinventing the Workplace for the 21st Century (Denning, Stephen)
- http://www.martinalaimo.com/es/blog/waterfall-la-historia-detras-del-error
- http://www.toyota-global.com/company/history_of_toyota/1867-1939.html
- http://www.ingsoftagil.com/articulos/jidoka
- http://www.product-lifecycle-management.com/
- http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
- https://www.dagstuhl.de/Reports/96/9635.pdf
- https://www.scrumalliance.org/why-scrum
- https://www.standishgroup.com/sample_research_files/chaos_report_1994.pdf
- https://hbr.org/1986/01/the-new-new-product-development-game
- http://www.scrumguides.org/history.html
- http://www.informit.com/articles/article.aspx?p=664147&seqNum=7
Investigación realizada por Damián Buonamico.
Twitter: @dbuo
LinkedIn: http://www.linkedin.com/in/buonamico
Twitter: @dbuo
LinkedIn: http://www.linkedin.com/in/buonamico
Comentarios
Publicar un comentario