JDI Metodología ágil de desarrollo

danigm's picture

Últimamente oigo mucho hablar de SCRUM y metodologías ágiles de desarrollo, parece que se ha puesto de moda.

Está muy bien eso de llevar una metodología, para intentar que el desarrollo de un proyecto software llegue a buen puerto. Sin embargo, la mayoría de estas soluciones siguen intentando estimar el esfuerzo necesario para realizar una tarea, y tienen en cuenta métricas tan subjetivas como la productividad.

Después de varios años de experiencia me he dado cuenta de que en el desarrollo software no se puede hablar de productividad, porque leyendo un blog hoy puede que encuentre la solución a un futuro problema, o quizás si me centro en un fallo durante tres días sin descanso, pierda gran parte del tiempo porque no he liberado el último bit de memoria correctamente. Por lo tanto, que no haya avances aparentes no significa que no esté trabajando o que sea menos eficiente si leo blogs.

El desarrollo de software en sí no es determinista, por lo tanto no se puede estimar. Se trata de encontrar soluciones a problemas, y no por dedicar más tiempo vas a encontrar la solución antes.

Visto esto, muchísimas veces me he dado cuenta de que se pierde muchísimo tiempo gestionando tareas alrededor de un proyecto software, y en cambio se dedica poco tiempo a centrarse en el problema.

Por eso, la metodología de desarrollo que más me convence es la que llamo JDI (Just Do It), que consiste en olvidarse de la metodología y centrarse en solucionar el problema lo antes posible.

Vale, esta metodología me vale a mí como desarrollador, pero esto no vale para proyectos grandes donde trabaje mucha gente... Pues yo creo que sí, que sí vale para proyectos grandes, y como ejemplo tenemos multitud de proyectos de software libre.

En el mundo del software libre casi todos los desarrollos que he conocido funcionan así. Una aplicación no tiene una funcionalidad que yo quiero, pues me pongo a desarrollar, hago un parche que añade dicha funcionalidad y le mando un correo al desarrollador principal del proyecto. Si le gusta esta funcionalidad ya está en el proyecto.

Aparentemente no existe una coordinación, un reparto de tareas, una planificación, etc, pero en cambio, esto funciona, hay varios desarrolladores con diferentes objetivos, que se solapan y al final forman una aplicación que crece y se desarrolla de forma ágil, con los desarrolladores centrados en los problemas y no en la metodología.

Sin embargo, esta metodología no es perfecta, y es que sólo funciona si los desarrolladores implicados están enfocados en solucionar el problema. Con esta metodología no puede haber desarrolladores pasivos, todos tienen que aportar soluciones, tomar decisiones y en definitiva, todos tienen que ser "jefe de proyecto".

En conclusión, olvida todo lo que te enseñaron en ingeniería del software, no leas libros que prometen productividad 110%, céntrate en solucionar tu problema y diviértete, porque si el desarrollo es divertido el resultado será mucho mejor.

Comments

2
shakaran's picture

Coincido plenamente con lo que comentas de JDY. Cuando se aplican tantas metologías al final los resultados no son tan prometedores y el resultado es horas extras que no se planifican para que cuadre todo como debería.

Óscar Díaz's picture

Quizás tienes toda la razón del mundo, ¿pero donde encuentras desarrolladores capaces de llevar a cabo esa metodología? Quizás existan más de los que yo iamgino, pero me parece que sois (venga va, me meto en el saco tambien XD) somos pocos.