La evolución de las metodologías de desarrollo de software las ha llevado de ser meramente un proceso de organización a ser la base del desarrollo de software, permitiendo a los equipos trabajar no solo de forma más organizada, sino también más efectiva y a generar soluciones de alta calidad.
Con frecuencia recibimos en Innevo la pregunta de cuál es la mejor metodología para desarrollar software. Siempre respondemos: la mejor metodología es la que utilices tal y como está definida, no parcialmente.
Cada una tiene diferencias más bien sutiles que profundas porque todas contemplan el Ciclo de Vida de Desarrollo, que básicamente consiste en las siguientes etapas:
La diferencia fundamental entre cada metodología está en la forma en que se organiza el trabajo que se debe realizar. Algunas primero hacen un levantamiento general de la solicitud y luego dividen el trabajo en componentes más pequeños, otros lo desarrollan con un enfoque en revisiones por pares, otras hacen un prototipado evolutivo hasta llegar al resultado deseado. Pero todas buscan lo mismo: que los requerimientos del cliente, planteados funcionalmente, se cumplan a cabalidad y con un producto final fácil de usar, es decir ergonómico e “intuitivo” y eficiente al utilizar los recursos de procesamiento y de la red en general. Otra forma de decirlo es que todas buscan generar software de calidad.
Así que si todas buscan lo mismo la pregunta de cuál es mejor pierde sentido.
¿Entonces por qué es frecuente que recibamos esta pregunta?
Lo que sucede es que es bastante común que las metodologías no se apliquen a cabalidad y con el rigor que cada una de ellas exige. Los grupos de desarrollo tienden a aplicar las metodologías solo de forma parcial y así, por supuesto que los resultados también serán parciales.
Si tu decidiste leer este blog creyendo que ibas a encontrar por fin la respuesta a la metodología perfecta, estás equivocado, esa respuesta no la vas a encontrar aquí y si lo buscas en cualquier otro blog y su autor es honesto te responderá lo mismo.
Recuerda: el método más eficiente para hacer algo es el que se ejecuta con rigor y disciplina.
Existen numerosas metodologías de desarrollo de software, todas capaces de brindar los resultados que deseas.
Nada más para que tengas una idea te menciono los 15 métodos más utilizados, pero no son los únicos, hay muchos más.
¿Y por qué hay tantas metodologías? La respuesta es que cada una enfatiza un determinado aspecto sobre cómo organizar el trabajo que se va a realizar. Sobre todo, dependiendo de las características del grupo de trabajo y el tipo de tecnología.
A pesar de existir numerosas metodologías con el mismo fin último, es frecuente también que un proyecto de desarrollo de software se vuelva problemático. ¿Por qué? La causa es una sola y te reitero que no es la metodología de desarrollo de software. La causa de que un proyecto de desarrollo de software se vuelva problemático está en la primera fase: los requerimientos.
Primero por la falta de comprensión y de compromiso del usuario en comunicarlos adecuadamente al grupo de desarrollo y segundo, la falta, de este último, de un método completo y eficaz de validarlos con el usuario para asegurarse que lo que comprendió es lo mismo que él quiso comunicarle.
Abordaremos más de este tema en un próximo artículo sobre los Requerimientos.
Acabo de comentarte las 15 más utilizadas. Tú puedes elegir la que consideres más adecuada para tu proyecto y grupo de desarrollo. Pero queremos compartirte cuáles son las que en Innevo recomendamos más.
Esto lo hacemos por orden de utilidad y practicidad. Es decir, la primera sugerencia es la que consideramos mejor y así sucesivamente. Serán sólo tres.
Enfatiza la creación de software manejable sin esfuerzo en aproximadamente un tercio del tiempo. Las startups completan esto restringiendo el presupuesto y eliminando el desperdicio. Lo que significa que su equipo no crea funciones redundantes o extensas que puedan afectar la funcionalidad del producto final.
Esto se hace para entregar su producto temprano con una funcionalidad mínima. Las iteraciones cortas a lo largo del proceso exigen la comunicación constante con el usuario y la flexibilidad para adaptarse a cualquier riesgo imprevisto.
Es uno de los enfoques de desarrollo de software ágiles más utilizados. Se basa en el supuesto de que el proceso de desarrollo es impredecible y que los requisitos pueden y deben cambiarse durante el proceso.
Esto se hace para entregar su producto temprano con una funcionalidad mínima. Las iteraciones deben ser cortas, exige la comunicación constante con el usuario y la flexibilidad del grupo de desarrollo para adaptarse a cualquier cambio.
Se llevan a cabo reuniones diarias, a las que el usuario debe asistir, para garantizar que el desarrollo sea controlado y rastreado.
Orientado a proyectos con plazos extremadamente cortos y con despliegues seguros, libres de errores.
Es la metodología de desarrollo de software más utilizada por las startups que requieren realizar varios lanzamientos pequeños. Esta metodología permite que las necesidades de sistemas se logren en poco tiempo y sin prácticamente ningún error a pesar de constantes cambios a los requerimientos ya desplegados.
Esto se hace con un método de trabajo en el que todos los involucrados en el proyecto, incluyendo al usuario, deben entender el código. Tiene como objetivo entregar software de altísima calidad en tiempos récord.
Se trabaja en constante comunicación y coordinación entre el par de desarrolladores y el usuario. Puede demandar varias reuniones en un sólo día.
Así podríamos ver las 15 metodologías de desarrollo de software que te mencioné con anterioridad y verías que todas tienen como diferencia fundamental la forma en que organizan el trabajo a realizar. Por eso es por lo que te insisto, la metodología que utilices te dará excelentes resultados, pero utilízala cómo está prescrita y no parcialmente.
Utiliza los mismos cuatro criterios que mencioné en cada una de las tres metodologías recomendadas:
1 |
Características de la empresa |
¿Tiene definido un Ciclo de Vida del Proyecto? ¿Todo el personal lo cumple? |
2 |
Características del proyecto |
¿Cómo son los plazos de entrega? ¿Los requerimientos necesitan ajustarse? ¿Con qué frecuencia? |
3 |
Características del grupo de desarrollo |
¿Todo el personal es igualmente experto? ¿O hay una mezcla de novatos y expertos? |
4 |
Características del usuario |
¿Cuál es el grado de documentación de los procesos del usuario? ¿Qué disponibilidad de tiempo tiene el usuario para participar con el grupo de desarrollo? |
Cualquier metodología de desarrollo de software es útil, el tema es que tiene características y condiciones para ser utilizadas, si no las validas, primero y luego, las cumples, no sueñes, no te serán de gran utilidad. Son como una receta médica, síguela al pie de la letra y te aliviarán, si no, seguirás a veces aliviado y a veces enfermo nuevamente.