El desarrollo de software es un proceso de negocio complejo. Esto significa que los profesionales de TI deben hablar el idioma de la optimización, la planificación y los costes. La comprensión de los conceptos de gestión brinda una gran ventaja tanto a los empleadores como a los desarrolladores y ayuda a llevar la colaboración al siguiente nivel.
¡Atención, principiantes! Modelos, metodologías y confusión general
Para comenzar, debemos hacer una aclaración importante: los modelos de desarrollo de software y las metodologías de desarrollo de software son independientes y distintos. Los modelos predicen cómo se comportará un sistema. Se requieren metodologías para que el sistema funcione como debe. Confundir los modelos y metodologías de desarrollo de software es un procedimiento operativo estándar para todos los novatos de TI, por lo que esto no se considera un gran error. Un ejemplo de modelo es el clásico
modelo en cascada , con su progresión lineal, clara definición de objetivos para cada etapa y estricto control sobre los plazos. Otro modelo es el
modelo en espiral., con su enfoque en la detección temprana y mitigación de los riesgos del proyecto. El desarrollo en espiral comienza pequeño, primero resolviendo problemas locales y luego progresando hacia problemas más complejos. Finalmente, otro modelo es
el desarrollo iterativo e incremental (IID) , en el que el ciclo de vida del proyecto se divide en una serie de iteraciones, cada una de las cuales se asemeja a un "mini-proyecto". En general,
un modelo es una descripción del proceso de desarrollo de software . Pero
las metodologías son sistemas para controlar, evaluar y monitorear el trabajo en las tareas asignadas.. Las metodologías son el palo y la zanahoria de la era moderna, necesarios para controlar cada paso en el proceso de desarrollo. Se eligen en función de la dirección del proyecto, su presupuesto y los plazos para la implementación del producto final. Además, las metodologías se pueden seleccionar según el temperamento del líder del proyecto y su equipo. Incluso en base a la filosofía de la empresa o del cliente. Echemos un vistazo a las metodologías más populares.
1. melé
Scrum es un
método ágil de gestión de proyectos. Se basa en "sprints", o iteraciones cortas, estrictamente limitadas en el tiempo (generalmente de 2 a 4 semanas). Esto minimiza la duración de las reuniones, pero aumenta su frecuencia. Cada sprint consta de una lista de tareas que deben completarse al final de la iteración, y cada una de ellas tiene su propio "peso". Durante las reuniones, el equipo analiza lo que han hecho los miembros del equipo, lo que planean hacer y los problemas que existen. Scrum utiliza un backlog para la planificación. En este enfoque, los equipos generalmente tienen un scrum master. Esta persona ayuda al equipo a trabajar sin interrupciones y crea un ambiente cómodo para el equipo. El proyecto también tendrá a alguien en el rol de propietario del producto. Esta persona es el jefe de desarrollo, monitorea el producto y actúa como el enlace principal entre lo que solicita el cliente y lo que produce el equipo.
Ventajas:
- capacidad para lanzar rápidamente un proyecto con el presupuesto más bajo posible;
- seguimiento diario del progreso, demostraciones frecuentes de proyectos;
- la capacidad de hacer ajustes durante el proyecto.
Contras:
- dificultades para celebrar contratos debido a la falta de un presupuesto fijo;
- no trabaja para un equipo sin experiencia o cuando los plazos o el presupuesto son subestimados;
- la capacidad de realizar cambios constantemente entre sprints puede crear confusión.
¿Para quién?
Un sistema como este es adecuado para proyectos de hasta diez personas, ya sean independientes o existan dentro de grandes empresas. Esto es conveniente si el equipo tiene una gran cantidad de trabajo y un largo ciclo de vida que les obligue a cambiar y adaptarse a las nuevas condiciones del mercado.
2. Kanbán
La característica más importante de Kanban es
la visualización del ciclo de vida del proyecto.. Se crean columnas para realizar elementos de trabajo. Los elementos de trabajo se abordan individualmente. Las columnas están marcadas con estados como: Por hacer, En progreso, Revisión de código, En prueba, Listo (por supuesto, los nombres de las columnas pueden variar). El objetivo de cada miembro del equipo es reducir el número de elementos de trabajo en la primera columna. El enfoque de Kanban es intuitivo y lo ayuda a comprender dónde se encuentran los problemas. La estructura de Kanban no está fijada de manera definitiva e irrevocable: dependiendo de los detalles del proyecto, puede agregar columnas improvisadas. Por ejemplo, algunos equipos utilizan un sistema en el que debe definir reglas de finalización para un elemento de trabajo antes de ejecutarlo. En este caso, se agregan dos columnas: Especificar (especificar los parámetros) e Implementar (ponerse manos a la obra).
Ventajas:
- flexibilidad en la planificación. El equipo se concentra solo en el trabajo actual, también se define la prioridad de una tarea;
- visibilidad. Cuando todos los participantes tienen acceso a los datos, los problemas globales son más fáciles de detectar;
- Alta implicación en el proceso de desarrollo. Visualizar procesos aumenta la autoorganización y el autocontrol.
Contras:
- no trabaja con equipos de más de cinco personas;
- no destinado a la planificación a largo plazo;
- no apto para un equipo desmotivado. Kanban no tiene plazos para cada elemento de trabajo. La metodología tampoco estipula sanciones por retrasos.
¿Para quién?
Kanban funciona muy bien en empresas donde el equipo está motivado para crecer y lograr resultados. Ya debería ser obvio: esto es para un equipo pequeño. Tal vez incluso un destacamento o parte de un equipo.
3. Proceso Unificado Racional (RUP)
La metodología RUP utiliza un modelo de desarrollo iterativo. Al final de cada iteración (que lleva de 2 a 6 semanas), el equipo debe lograr los objetivos planificados y obtener una versión funcional, aunque temporal, del proyecto. RUP llama a
dividir el proyecto en cuatro fases . En cada fase se trabaja en la siguiente generación del producto: inicio, elaboración, construcción y transición. Al final de una fase, se alcanza un hito del proyecto. El momento en que el equipo evalúa sus resultados podría considerarse un hito del proyecto. Esto significa que la metodología implica que las características principales se liberan en la primera fase y las adiciones se agregan en las fases posteriores.
Ventajas:
- hace posible hacer frente a tareas cambiantes, tanto del cliente como de los cambios que surgen en el curso del trabajo;
- garantiza la mejora continua del producto. Durante las iteraciones, puede evaluar el proyecto escrupulosamente;
- permite identificar y eliminar riesgos en las primeras etapas de trabajo, así como controlar efectivamente la calidad del desarrollo.
Contras:
- Esta metodología es bastante compleja y difícil de implementar en un pequeño equipo o empresa;
- depende de la capacidad de los expertos para establecer tareas;
- necesita una documentación excesiva de los requisitos.
¿Para quién?
Grandes proyectos con requisitos claramente establecidos y riesgos bien entendidos, cuando el producto necesita ser lanzado lo más rápido posible. Incluso a expensas de la funcionalidad, para ocupar rápidamente su nicho y solo luego agregar los toques finales.
Hay muchas metodologías, pero una tendencia
Además de scrum y Kanban, que son innegablemente populares y se basan en
principios ágiles , así como la metodología RUP resistente e iterativa, las empresas utilizan muchas variaciones de metodologías. Una empresa puede estar más cerca de la programación extrema y tomar las decisiones más rápidas y sencillas. Otro puede estar más cerca del desarrollo basado en pruebas. Otro todavía puede preferir el desarrollo rápido de aplicaciones (RAD). Dicho esto, existe una tendencia fuerte e incuestionable hacia
el uso de múltiples metodologías simultáneamente.. O incluso combinar modelos y metodologías en un único sistema de gestión. Las empresas de hoy se esfuerzan por eliminar las barreras burocráticas y crear una atmósfera de trabajo en equipo unificado dentro de la organización, sin cambiar la responsabilidad entre departamentos y unidades organizacionales. Según
la Alianza Scrum, el 70% de las empresas de TI utilizan scrum. Entre ellos se encuentran gigantes como Google, Amazon, Salesforce, Microsoft y Adobe. Las empresas emergentes y los proyectos jóvenes se inclinan más por Kanban, pero Toyota y, por ejemplo, los jugadores de Wargaming también lo utilizan. Scrum es una herramienta de planificación, mientras que Kanban es para monitorear el progreso. En cuanto a RUP, lo utilizan con mayor frecuencia las empresas occidentales con entre 50 y 200 empleados e ingresos de entre 1 y 10 millones de dólares. Sin embargo, IBM modificó RUP para acercarse a los principios ágiles, lanzando la metodología OpenUP (RUP, pero ágil). Esta cacareada
metodología ágil ahora está impulsando el mundo de TI . Esto no es solo una moda pasajera: sigue siendo innovador y, de hecho, se utiliza en muchas empresas grandes. Agile se utiliza en Silicon Valley. Facebook y Uber lo usan.
La línea de fondo
Cada proyecto tiene su propia metodología de desarrollo de software, que depende del equipo, la financiación, los plazos y los requisitos del cliente. No existe una técnica de gestión universal: incluso la metodología ágil, muy popular, no puede garantizar el mejor enfoque para el proceso de desarrollo. Como resultado, las metodologías se eligen con cuidado, a veces incluso por principio. Tanto es así que podemos sacar conclusiones sobre la propia empresa o sobre sus clientes mirando su metodología. Se mezclan metodologías, se complementan con modelos y se adaptan. Tanto es así que dan lugar a nuevos enfoques. Dicho esto, el ámbito de la gestión permanece en última instancia en manos de scrum y Kanban, con elementos inesperados del modelo en cascada o la metodología iterativa de RUP.
Más lectura: |
Sitios web: |
Libros: |
|
- Andrew Stelman, Jennifer Greene: "Aprendizaje ágil";
- Per Kroll, Bruce MacIsaac: «Agilidad y disciplina simplificadas: prácticas de OpenUP y RUP»;
- Mike Cohn: "Tener éxito con Agile: desarrollo de software usando Scrum";
- Robert C. Martin: "Desarrollo de software ágil: principios, patrones, prácticas";
- Marcus Hammarberg, Joakim Sunden: "Kanban en acción";
- I. Jacobson, G. Booch, J. Rumbaugh: "Proceso de desarrollo de software unificado".
|