EL ESPÍRITU DE SCRUM EN EL DESARROLLO DE SOFTWARE LIBRE EN EL ÁMBITO ACADÉMICO

RESUMEN
La Real Academia Española define la palabra espíritu como ‘la esencia de algo’; en este sentido, el presente ensayo tiene como propósito mostrar un poco sobre la esencia detrás del conjunto de prácticas y principios que define Scrum y cómo es que esos principios pueden ser aplicados en proyectos académicos, inclusive en trabajos más allá del desarrollo de software. Las personas que aplican Scrum coinciden en dos cosas: Scrum es simple ya que la estructura, las definiciones y la terminología son claras y sencillas de entender (unos cuantos minutos bastarían para explicarlas); pero al mismo tiempo es complejo, ya que el aceptar y practicar estos principios, implica en muchas ocasiones cambiar nuestros hábitos y forma de trabajar. Por lo tanto, se explican algunos de los conceptos que se consideran más importantes y en los cuales está basada esta esencia, mismos que se describen de una forma u otra en el ‘Manifiesto Ágil’.
Palabras clave: Espíritu de Scrum, Docencia, Software libre, desarrollo ágil

ABSTRACT
The Royal Spanish Academy defines the word spirit as ‘the essence of something’; in this sense, this essay aims to show a little about the essence behind the set of practices and principles that define Scrum and how those principles can be applied in academics projects, even in works beyond software development. People who apply Scrum agree on two things: Scrum is simple since the structure, definitions and terminology are clear and simple to understand (a few minutes suffice to explain); but at the same time is complex, as it’s accept and practice these principles often involves changing our habits and way of working. Therefore, we to explain some of the concepts that are considered more important and in which it is based this essence, same as described in one way or another in the ‘Agile Manifesto’.
Keywords: Spirit of Scrum, Education, Software, Agile development.

INTRODUCCIÓN

De acuerdo con un estudio patrocinado por VersionOne (2014), el cual incluye información de 3,501 participantes, Scrum o variantes de Scrum son por mucho (73%) las metodologías ágiles más utilizada para el desarrollo de software a nivel mundial. Sin embargo, es importante destacar que esta forma de desarrollo de productos puede fácilmente aplicarse en otras disciplinas; incluso el concepto de Scrum tiene sus orígenes en un estudio elaborado por Takeuchi y Nonaka (1986), considerados por Sutherland y Schwaber -co-creadores de Scrum- como ‘Los Padrinos’ de esta metodología (Sutherland y Schwaber, 2010). Takeuchi y Nonaka hablaban sobre los entonces nuevos procesos de desarrollo utilizados en productos exitosos en Japón y los Estados Unidos (cámaras fotográficas, fotocopiadoras, automóviles, computadoras, entre otros). En ese estudio se comparaba la forma de trabajo de estos equipos altamente productivos y multidisciplinares, con la colaboración entre los jugadores de Rugby y su formación de Scrum.

Jeff Sutherland hace referencia a Scrum no como una metodología de desarrollo o un proceso formal, sino como un algoritmo de comprensión de las mejores prácticas de desarrollo de software observadas en más de 50 años en todo el mundo (Sutherland y Schwaber, 2010).

Por lo anterior, es que trataremos de describir las prácticas y principios que a través de nuestra experiencia identificamos como los que más impacto han tenido dentro de las actividades que se desarrollan en el Cuerpo Académico “Finanzas Públicas y Desarrollo Regional”, los cuales nos ha permitido elevar el nivel de productividad y satisfacción con nuestros productos, y que utilizamos dentro de nuestro quehacer académico. Mostraremos, además, algunos de los principales resultados que se han obtenido, con la finalidad de exponer una vez más que estas diferentes formas de trabajar funcionan.

METODOLOGÍAS DE DESARROLLO ÁGIL EN INFORMÁTICA

El término “métodos ágiles”, fue introducido en 2001, cuando se reunieron 17 personas simpatizantes de la idea y necesidad de definir nuevos procesos de desarrollo de software distintos de los procesos formales (CMMI[1], por ejemplo), por considerarlos excesivamente pesados y rígidos en relación a la dependencia de planificación detallada. Como resultado, se creó el “Manifiesto por el Desarrollo Ágil de Software”, en donde se resumen cuatro valores y doce principios, el cual expone lo siguiente[2]:

“Estamos descubriendo formas mejores de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. A través de este trabajo hemos aprendido a valorar:

 

Individuos e interacciones sobre procesos y herramientas

Software funcionando sobre documentación extensiva

Colaboración con el cliente sobre negociación contractual

Respuesta ante el cambio sobre seguir un plan

 

Esto es, aunque valoramos los elementos de la derecha, valoramos más los de la izquierda.”

Es importante destacar la última frase, que en diversas ocasiones se tiende mucho a ignorar. En ella se resalta que aunque los individuos e interacciones, el software funcionando, la colaboración con el cliente y la respuesta ante el cambio son más valorados, eso no quiere decir que los procesos y herramientas, la documentación, la negociación contractual y el seguimiento de los planes no sean importantes. Es muy común, cuando nos iniciamos en el movimiento ágil justificar cualquier acción y/o decisión con la frase “las personas por encima de los procesos” dando a entender que los procesos no importan, como si fuera una regla romper las reglas para mostrar al mundo lo ágiles que somos; y en contraparte las personas que utilizan las llamadas metodologías tradicionales piensan que las metodologías ágiles son para las personas perezosas porque, según ellos, no les gusta hacer documentación. En ambos casos, estas afirmaciones son equivocadas; siempre se debe recordar que para el desarrollo ágil, los procesos y la documentación son valorados y que el hecho de no darle mucho peso no significa que se sea perezosa, simplemente son más importantes otras cosas.

A partir de estos valores, se definieron doce principios y que en conjunto son la base de las metodologías ágiles:

  • Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor.
  • Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente.
  • Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo más corto posible.
  • Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.
  • Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo.
  • El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara.
  • El software funcionando es la medida principal de progreso.
  • Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.
  • La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad.
  • La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial.
  • Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.
  • A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia.

Hoy en día, el uso de las metodologías de desarrollo ágil han tomando gran impulso dentro del ámbito informático (desde hace cinco años en promedio) y más de la mitad de los proyectos que desarrollan las empresas utilizan estas técnicas (VersionOne, 2014). Dentro de las diferentes metodologías ágiles que existen, Scrum, junto a sus diversas variantes, se han mantenido como las más populares. En la gráfica 1 se muestran los resultados de la encuesta desarrollada por VersionOne de agosto a octubre de 2013.

Como ya se mencionó, Scrum es simple; en la figura 1 se muestra el proceso de Scrum, el cual a manera de resumen se puedes describir así: De una lista de requerimientos ordenados (product backlog) seleccionamos aquellos (sprint backlog) que se van a desarrollar durante un Sprint (de 1 a 4 semanas – en teoría), para que al final podamos tener un producto funcional que aporte valor al cliente (working increment of the product).

La realidad es que es un poco más complejo que eso, pues existen diferentes aspectos por definir, por ejemplo, ¿cómo se construye el product backlog?, o algunos conceptos como ‘historias de usuarios’, roles (Product Owner, ScrumMaster, Team), reuniones, gráficas, etc.; aunque no es propósito del presente ensayo de hacer una descripción a detalle de la metodología; para tal caso, podrían referirse a Cohn (2004, 2006), Deemer y Cols. (2009), Grafeuille (2008), Hundermark (2009), Kniberg (2007), Krivitsky (2009) y Schwaber (1997), quienes exponen de manera muy clara y precisa la metodología, visto en algunos casos, desde puntos de vista personales, basados en la experiencia de cada autor, lo cual se vuelve muy enriquecedor.

Existen, además, otras propuestas metodológicas como la de Orjuela-Duarte (2008) en la cual describe un conjunto de fases, basadas en las metodologías ágiles, que permiten guiar el desarrollo de productos software que apoyen el proceso enseñanza-aprendizaje; aspecto en el cual hacemos hincapié debido a que los productos que hemos estado desarrollando van enfocados en este sentido, o Disciplined Agile Delivery (Ambler y Lines, 2012) y Ambler (2013), el cual se presenta como un enfoque más “robusto” que Scrum, diseñado para las compañías de clase empresarial.

Aunado a lo anterior, recientemente, Delhij y Van Solingen (2013) y el equipo de eduScrum, publicaron “La Guía de eduScrum. Las reglas del juego”, el cual muestra un marco de trabajo donde la responsabilidad del proceso de aprendizaje es delegada a los estudiantes, con lo que se demuestra una vez más que estas prácticas y principios no son exclusivos para desarrollar software.

Hasta el momento todo parece muy simple y sencillo: entender el proceso, comprender los conceptos y tratar de aprender de la experiencia de los demás.

De aquí en adelante empieza lo complejo: aplicar lo aprendido. Las prácticas y principios de Scrum, en cierto modo y para bien, nos ayudan a sacar lo peor de nosotros mismos y gracias a ello nos damos cuenta de los principales problemas que comentemos durante el desarrollo de un proyecto, esto nos ayuda a corregirlos y mejorar cada día. Por ejemplo, podemos identificar a quienes tienen problemas de comunicación, a los impuntuales, la falta de compromiso y responsabilidad, etc.

Hundermark (2009), recomienda que cuando un equipo recién empieza a trabajar bajo los principios de Scrum lo mejor que se puede hacer es contratar a un entrenador experimentado y enumera una serie de pasos que van desde el entrenamiento en los aspectos básicos de Scrum, hasta el inicio del primer Sprint, y como parte del entrenamiento se suelen utilizar ejercicios y juegos en grupo para que queden bien entendidos los principios.

El uso de estos juegos es tan común que Greaves y Laing (2013) elaboraron una recopilación de las actividades que consideran más representativas y que se han demostrado que ayudan mucho en la comprensión de Scrum.

Uno de los objetivos de los juegos y ejercicios utilizados para introducirnos a Scrum, es comprender de una manera sencilla los principios generales que en cierta medida dan forma a lo que se conoce como el “Espíritu de Scrum”, su esencia. Es importante señalar que no existen unos principios más importantes que otros y su “aplicación” muy posiblemente variará de un grupo de trabajo a otro y dependerá en gran medida del contexto en el que se desee implementar.

Por lo anterior, es que este tema se vuelve bastante subjetivo, pues cada persona maneja sus propias prioridades en relación a estos principios generales; y en situaciones donde la cultura interna ya se encuentre muy desarrollada en algunos aspectos (confianza y transparencia, por ejemplo) será más importante enfocarse en otros valores (automatización y límites, por ejemplo). De cualquier manera, se intentará dar una breve descripción de algunos de ellos, aunque se debe recordar que el verdadero valor se logra en el intercambio de ideas sobre cuáles y porqué son importantes para cada quien:

  • Lo perfecto es enemigo de lo bueno: Este es un aspecto muy importante; en muchas ocasiones las personas son formadas con la mentalidad de que si algo no es perfecto no sirve para nada. Sin embargo, se debe tener en cuenta que siempre es mejor entregar algo que funcione y le de valor al cliente, aunque no esté completo. Siendo realistas, pocos (por no decir ninguno) proyectos se terminan en el tiempo y con el presupuesto programado.
  • Responsabilidad: Este aspecto trata de la responsabilidad que adquirimos por nuestras propias palabras, es decir, cuando se es parte de un equipo que trabaja bajo los principios de Scrum, es uno el que acepta realizar el trabajo y se compromete a cumplirlo (no es la palabra del jefe o del representante, sino la nuestra la que debemos cumplir). Somos nosotros los que decimos si lo que se necesita lo podemos hacer y cuanto tiempo necesitamos para hacerlo, por lo que el nivel de compromiso es mayor y por lo general se obtienen los mejores resultados.
  • Auto-exigencia: Esta característica va ligada con la responsabilidad, y es que quien mejor que nosotros para conocer nuestros límites y saber hasta dónde somos capaces de comprometernos en un proyecto, lo cual nos obliga a exigirnos a nosotros mismos a realizar las cosas.
  • Auto-organización: Un equipo Scrum debe ser capaz de ponerse de acuerdo para realizar el trabajo que ellos mismos se comprometieron a cumplir, en este sentido, un mismo miembro puede cubrir diversos roles en determinados tiempos para realizar esos objetivos. Es importante destacar, como lo expone Sánchez-Cáceres (2014) que ágil no es un equipo sin jefes, sino que a la hora de realizar ciertas actividades concretas se debe dejar que los equipos se auto organicen,  lo cual no ocurre en todas las actividades.

Estos son algunos de los principios que consideramos dentro de los más importantes, aunque como se mencionó anteriormente, siempre dependerá del contexto el tomar la decisión de cuándo será necesario poner más atención a uno u otro de los principios. Otros conceptos que a menudo son mencionados (y que con el paso del tiempo se van agregando más) se muestran en la tabla 1.

Tabla 1. Algunos principios básicos que forman la esencia de Scrum.

Autodisciplina Ritmo sostenible Confianza
Colaboración Límites Humildad Intelectual
Error (visto como inversión, barato) Empirismo Ciclos de feedback cortos
Crecimiento orgánico Maleable Excelencia técnica
Simplicidad Compromiso ROI
Dejar hacer Disciplina Ritmo sustentable(rápido, no apurado)
Predictibilidad Transparencia Aprendizaje continuo
Pragmatismo Realismo Inconformismo
Cuestionamiento del status Quo Concreto – No abstracto Automatización
Bajo costo de iteración Creatividad Corto plazo
Esfuerzo Horizontalidad Time Boxing

 

Tomando como base estos principios, aplicándolos en algunas ocasiones a pequeños proyectos de desarrollo de software enfocados principalmente a aspectos docentes, y en general al trabajo que se realiza dentro del Cuerpo Académico “Finanzas Públicas y desarrollo regional” en la Universidad Veracruzana, es que los miembros hemos podido desarrollar nuestro quehacer de una manera diferente a la que se estaba acostumbrado a trabajar. Esto no quiere decir que esta sea la mejor o más efectiva forma de trabajar y tampoco que basarse en estos principios va a mejorar como por arte de magia nuestros desarrollos, simplemente expresamos que es la que, en lo particular a nosotros, nos ha funcionado principalmente por el interés colectivo de generar productos académicos como son el desarrollo de software libre, de publicaciones conjuntas que sean presentadas en Congresos Nacionales e Internacionales, así como las publicaciones en revistas impresas y electrónicas.

Dentro de los trabajos realizados se describen a continuación los Software libres “Eficiencia Relativa” y “Muestreos Estadísticos”.

Software Eficiencia Relativa

Uno de los primeros proyectos que se desarrollaron fue un pequeño software informático que ayuda a calcular la Eficiencia Relativa para evaluar si la aplicación de un diseño experimental empleado fue el apropiado y además, los resultados de este proyecto han sido expuestos en diversos foros académicos (Ruiz-Ramírez, et. al., 2011a, 2011b). En la figura 2 se muestra la pantalla principal del programa, el cual fue presentado a estudiantes de la Facultad de ciencias Agrícolas, región Xalapa de la Universidad Veracruzana, pues dentro de sus actividades, es de mucha utilidad. Se encuentra disponible para su uso sin restricciones.

Software Muestreos Estadísticos

Otro de los proyectos realizados fue un programa que calcula los tamaños de muestra y parámetros poblacionales de los muestreos: aleatorio, simple, estratificado, sistemático y por conglomerados, el cual ha sido utilizado dentro de algunos cursos del Doctorado en Finanzas Públicas y en la Licenciatura en Economía de la Universidad Veracruzana. Este programa también se ha presentado en foros académicos (Ruiz-Ramírez, et. al., 2013, 2014) y se encuentra disponible para su uso sin restricciones. En la figura 3 se muestra la ventana principal del programa.

Adicionalmente, se encuentran en desarrollo otros proyectos relacionados con el análisis de información de la industria manufacturera de México, investigaciones sobre transferencias de tecnología, entre otros, los cuales se pretenden sean presentados en el corto tiempo.

Por último, son innumerables los casos de éxito reportados por diversas empresas a nivel internacional que han implementado todas estas prácticas y principios de Scrum y dentro de los cuales se pueden mencionar: Microsoft, Yahoo, Google, Electronic Arts, High Moon Studios, Lockheed Martin, Philips, Siemens, Nokia, Capital One, BBC, Intuit, Nielsen Media, First American Real Estate, BMC Software, Ipswitch, John Deere, Lexis Nexis, Sabre, Salesforce.com, Time Warner, Turner Broadcasting, Oce (Grafeuille, E., 2008).

 

REFLEXIONES

A continuación se presentan algunas reflexiones que se consideran importantes en relación a la aplicación de los principios de Scrum:

Scrum nos ha funcionado en la elaboración de software libre utilizado en los ámbitos académico y profesional, en el entendido de que no es la única manera de trabajar y que podría no aplicar a todos los problemas o situaciones que se deban resolver; es cuestión de que cada equipo sepa adaptar las soluciones a sus necesidades.

Scrum saca lo peor de nosotros, para bien, con el fin de identificar los principales problemas que estamos cometiendo en la realización de nuestros trabajos.

Nos hemos dado cuenta que el aplicar los principios que Scrum y en general que las metodologías ágiles promueven, nos han ayudado a mejorar la productividad de cada miembro del Cuerpo Académico, lo que se ve reflejado en una elaboración de productos académicos de calidad.

Tener siempre en cuenta los principios de auto-organización, responsabilidad y auto-exigencia, principalmente, nos han ayudado a reconocer nuestros límites y capacidades, lo cual repercute en una justa repartición del trabajo y no genera sobre cargas o disgustos entre los miembros del Cuerpo Académico.

 

REFERENCIAS

Ambler, Scott (2013). Going Beyond Scrum: Disciplined Agile Delivery. Disciplined Agile Consortium. White Paper Series. 15 pags.

Ambler, Scott; Lines, Mark (2012). Disciplined Agile Delivery: A Practitioner’s Guide to Agile Software Delivery in the Enterprise. IBM Press. ISBN 0132810131. 544 pags.

Cohn, M. (2004). User Stories Applied. Addison Wesley.

Cohn, M. (2006). Agile Estimating and Planning. Prentice Hall.

Deemer, P., Benefield, G., et. al. (2009). The SCRUM Primer. Version 1.1. Scrum Training Institute.

Delhij, A., van Solingen, R. (2013). La guía de eduScrum. Las reglas del juego. eduScrum. 24 pags.

Grafeuille, E. (2008). Una introducción a Scrum. Mountain Goat Software. [En línea]. [Consultado el 20 de mayo de 2014]. Disponible en: http://www.mountaingoatsoftware.com/agile/scrum/a-reusable-scrum-presentation/

Greaves, K., Laing, S. (2013). Juegos de colaboración. Desde la caja de herramientas de Growing Agile. Growing Agile. 30 pags.

Hundermark, P. (2009). Do Better Scrum. An unofficial set of tips and insights into how to implement Scrum well. Scrum Sense.

Kniberg, H. (2007). Scrum y XP desde las trincheras. Como hacemos Scrum. InfoQ. Enterprise Software Development Series. 122 pags.

Krivitsky, A. (2009). Agile Software Development with SCRUM. SCRUM guides.

Orjuela-Duarte, A., Rojas-C. M. (2008). Las Metodologías de Desarrollo Ágil como una Oportunidad para la Ingeniería del Software Educativo. Revista Avances en Sistemas e Informática, Vol.5 No.2. Medellín.

Ruiz-Ramírez, J., Pérez-Salazar, C., Hernández-Rodríguez, G. E. (2011a). Precisión del Software que Calcula la Eficiencia Relativa de los Diseños Experimentales. XXXIII Convención Nacional ATAM “Ing. Ignacio Gurza Iglesias” El Cambio Climático, Responsabilidad de Todos. Boca del Río, Veracruz, México.

Ruiz-Ramírez, J., Pérez-Salazar, C., Hernández-Rodríguez, G. E. (2011b). Evaluación de los diseños experimentales mediante el software libre ER: que calcula la eficiencia relativa. XXIV Reunión Científica-Tecnológica Forestal y Agropecuaria Veracruz y III del Trópico Mexicano 2011. Xalapa, Veracruz, México.

Ruiz-Ramírez, J., Pérez-Salazar, C., Hernández-Rodríguez, G. E. (2013). Software libre que calcula el tamaño de muestra mediante métodos de muestreo probabilístico. XXIII Coloquio Mexicano de Economía, Matemática y Econometría. Toluca, México, México.

Ruiz-Ramírez, J., Pérez-Salazar, C., Hernández-Rodríguez, G. E. (2014). Aplicaciones de software libre en la enseñanza de la estadística en las IES en México. I Conferencia Científica Internacional. UCIENCIA 2014. La Habana, Cuba.

Sánchez-Cáceres, L. F. (2014). Webinar Lunch&Learn | El futuro de la agilidad en software | SGCampus [Video]. Software Guru. Disponible en: https://www.youtube.com/watch?v=xJcXxP6fNNI

Schwaber, K. (1997). Scrum development process. In Business Object Design and Implementation (pp. 117-134). Springer London.

Sutherland, J., Schwaber, K. (2010). “The Scrum Papers: Nut, Bolts, and Origins of an Agile Framework”. Scrum Training Institute.

Takeuchi, H., Nonaka, I. (1986). “The New New Product Development Game”, Harvard Business Review. 137-146 pp.

VersionOne (2014). “8th Annual State of Agile Survey”. 17 pags.



[1] Capability Maturity Model Integration. http://www.cmmiinstitute.com/. Consultado: 20 de mayo de 2014

[2] http://www.agilemanifesto.org/iso/es/. Consultado: 20 de mayo de 2014.

Para citar este artículo puede utilizar el siguiente formato:
Pérez-Salazar, Christian,Ruiz Ramírez, Juan y Barcelata Chávez, Hilario: "El espíritu de SCRUM en el desarrollo de software libre en el ámbito académico" en Atlante. Cuadernos de Educación y Desarrollo, junio 2014, en http://atlante.eumed.net/scrum-software/

Atlante. Cuadernos de Educación y Desarrollo es una revista académica, editada y mantenida por el Grupo eumednet de la Universidad de Málaga.