De todos modos, disculpen la sinceridad, lo siento si esto puede ofender a alguien, sólo la AGILIDAD funciona.
Ya sea en conferencias, ya sea en foros, ya sea en capacitación, ya sea en proyectos de consultoría donde participo, oigo cada vez a los miembros diciendo "Todo lo que dicen que está mal es lo que prácticamos en nuestra empresa."
Es triste pero cierto. Hay una brecha muy grande entre la teoría y la práctica en nuestro campo de desarrollo de software. Por ejemplo, en los años 2005-2008 he visto en la gente con que tengo contacto, en una búsqueda rápida, que todos práctican el proceso de desarrollo en cascada (waterfall), incluso aunque este modelo es comprobadamente ineficiente y sea rechazado por TODOS los autores que escriben sobre el desarrollo de software. Incluso el autor que acuñó el término "cascada" ya reconocía que es un modelo que no debe ser utilizado, que es un anti-patrón. Antes de continuar, para tratar de explicar por qué sólo la agilidad funciona, vamos a ver una "ilusión" que en el mercado se denomina el "modelo tradicional" (o ahora también le dicen el "Modelo controlado", otro sueño inconsciente escrito por un "especialista" sin concepto).
Modelo Tradicional x Modelo Ágil
La pregunta que me llevó a escribir es: ¿Cuál es el modelo tradicional? Durante aproximadamente 2 meses pregunté en prácticamente todos los foros de discusión en que participo, lo que sería el modelo tradicional. Esta pregunta fue provocativa, y al mismo tiempo esclarecedora para muchos. El hecho es que NADIE sabe responder que es el modelo tradicional. Nadie sabía explicar, o citar, que autor escribió o defendió algo llamado "Método de desarrollo de software tradicional." Cualquier tipo de proceso es tradicional. El modelo tradicional no existe.
Algunos mencionaron que el modelo tradicional es el de cascada. Bueno, como se explicó aquí, la cascada no es defendida en ninguna literatura... cascada podría ser tomado como tradicional pues es el modelo más comúnmente utilizado, sin embargo, el modelo de cascada no tiene ningún modelo teórico de apoyo. Ningún autor serio defiende el modelo en cascada. ¿Cómo puede entonces nuestra industria estár utilizando un modelo que, desde el nacimiento fue grabado como un anti-patrón? Si el modelo en cascada es el modelo tradicional, seguimos una tradición bien estúpida.
Otros mencionaron que el modelo tradicional es RUPs. Más hay aquí un desacuerdo. El RUP es un "framework de proceso ágil". Jacobson, Larman, Booch, Ambler práctican la agilidad. El problema con RUP es que pocos entienden a RUP. Se ven muchos "expertos" en RUP hablar mucha mierda al mercado. El mercado tiene un enorme poder para tergiversar las cosas que no entiende (¿cuántas veces usted escucha sarcásticamente que XP "es aquella metodología que los programadores son dos por micro "?). RUP verdadero, como se muestra en la literatura, es ágil. Si RUP verdadero fuese adoptado en las empresas todas serían ágiles y este artículo no existería.
Otros citaron el SWEBOK como el modelo tradicional. Bueno, SWEBOK es un órgano de conocimiento jugando como moscas. Nadie está preocupado hoy por SWEBOK. SWEBOK ha surgido recientemente, por tanto no podía tomarse como tradicional. RUP es un cuerpo de conocimientos más maduros y más experimentado que SWEBOK.
Si alguna vez se detuvo a pensar, pregúntate a ti mismo: ¿Quién dijo que el desarrollo de software es secuencial como Casos de uso - UML - Codificación y Pruebas? ¿Quién dijo que el Gantt Chart es bueno para el desarrollo de software? ¿Qué investigaciones han demostrado que la especialización y división del trabajo es una buena idea para el software? ¿Por qué tengo que plantear todos los requisitos antes? Y lo principal: Si el modelo de cascada funciona, ¿por qué los clientes están insatisfechos?
Estas prácticas carecen de la mínima base teórica, ninguna literatura predica que el desarrollo de software es así. Sí, usted que es universitario puede cuestionar a su "maestro", ya que muchos no tienen la menor idea o experiencia de lo que están enseñando. Estas prácticas equivocadas son "ideas" que los directivos estúpidos han adoptado simplemente haciendo una comparación con las líneas de producción en la industria. Ellos se llenaron de prácticas secuenciales y colocaron una placa en el frente de la empresa: "Fábrica de Software" ("Software Factory"). Ellos simplemente le dieron la espalda a los avances de la tecnología y a los desarrolladores de software.
Con esto dicho, no veo el más mínimo sentido que las personas afirmen que son "tradicionalistas" en el desarrollo de software y, por tanto, no son ágiles. No tiene sentido que la gente diga "Yo desarrollo software en el modelo tradicional y estoy estudiando los modelos ágiles." Si usted para y piensa, esa persona comenzó ahora a estudiar desarrollo de software. No se debe confundir la estupidez con el tradicionalismo.
Agilidad no es falta de control
Uno de los mitos más comúnes, es que los modelos ágiles son descontrolados y no dan información para la gestión. Cuando hablamos de control tenemos que tener en mente lo que realmente queremos con el proyecto.
- ¿Cómo se puede planificar y tener precisión en nuestras estimaciones?
- ¿Cómo captar los verdaderos deseos del cliente?
- ¿Cómo incorporar los cambios constantes en el proyecto?
- ¿Cómo se puede realizar cambios sin impactar lo que funciona?
- ¿Cuán es es la arquitectura para mi proyecto?
- ¿Cómo garantizar el futuro mantenimiento del sistema?
- ¿Cómo saber el real avance del proyecto de una manera libre de riesgos?
- ¿Cómo asegurarse de que satisfagan las necesidades reales del cliente?
- ¿Cómo hacer que el equipo no se disperse?
- ¿Cómo mantener los documentos actualizados?
- ¿Cómo mantener el tiempo y la planificación de un proyecto en constante mutación?
- ¿Qué debo hacer para anticipar los riesgos?
- ¿Cuáles son las herramientas adecuadas?
- ¿Cómo evitar corridas, horas extraordinarias y la explosión en el costo del proyecto?
- Y lo mejor de todo: ¿Cómo hacer que el proyecto sea entregado antes de la fecha límite?
Creo que estas y muchas otras preguntas son dudas muy comunes para cualquier equipo que desarrolla software. Lo más interesante es que la respuesta está en frente de ellos y se llama AGILIDAD.
Los modelos ágiles son los modelos MAS CONTROLADOS QUE EXISTEN. Si yo le digo a usted que es posible hacer que el equipo de trabaje motivado, centrado en los objetivos y la asertividad de las estimaciones están muy cerca al 100%, ¿usted lo cree? Si yo le digo a usted que el simple hecho de planear basados en objetivos y promover una reunión diaria de 15 minutos puede hacer la comunicación se enriquezca y que el cliente siempre esté satisfecho, incluso con algunos defectos, ¿usted lo creería? Las prácticas de Scrum (que se basan en RUP) establecen ese tipo de control.
Otros puntos. Si me dirijo a ustedes diciendoles que si su código fuese cubierto de pruebas automatizadas, ustedes podrían incorporar los cambios con plena seguridad, ¿usted lo cree? Si te hablo de que estas pruebas automatizadas pueden servir como documentación de requesitos y del diseño de forma ejecutable, y que a través de un informe de cobertura y muchas otras herramientas deterministas es posible saber si la "documentación" está actualizada, ¿usted lo cree? Estas son las prácticas de XP y TDD.
Si me dirijo a ustedes diciendoles que tener los clientes más cerca de del equipo de desarrolladores, fomenta la colaboración y poner "dos programadores para trabajar en la misma máquina" cambiando pares es un excelente mecanismo para obtener productividad eliminando actividades innecesarias, ¿usted lo cree?
La mejor respuesta para el control son las prácticas ágiles. Hasta la fecha ningún otro modelo ha demostrado ser eficaz.
Ni Gantt, ni PMBOOK, ni CMMI, son modelos completos que garantizan respuestas completas a las preguntas antes mencionadas. Mucho menos un mito, un dogma, un sueño inconsciente que se creó en manos de personas que no saben desarrollar software y llamaron a eso "tradicionalismo".
Las prácticas ágiles no compiten con "alguna otra cosa" que funcione.
Conclusión: (por milésima vez)
El modelo tradicional no existe.
Sólo la Agilidad funciona.