Tecnologías Ágiles.- La alternativa real a las Metodologías Ágiles

Las Metodologías Ágiles han venido para quedarse. Responden a una necesidad, cual es la obligación de realizar desarrollos suficientemente rápidos para responder a las necesidades del mercado. A ellas se han unido los movimientos DevOps, tendentes a unificar los procesos de desarrollo y puesta en explotación, creando un continuo que agilice los tiempos de conversión de los desarrollos en resultados reales.

Está claro que esta es la tendencia; el mercado de la tecnología se ha vuelto frenético y necesita acortar como sea los tiempos. No lo vamos a discutir desde estas páginas: eso es lo que demanda el mercado y por tanto, por ahí hemos de movernos todos.

Sin embargo, cuando hablamos de gestión, de sistemas de gestión (no vamos a entrar en este momento en otro tipo de aplicaciones ni sistemas), de aplicaciones destinadas a facilitar o mejorar la gestión de las Organizaciones y Compañías, hay dos elementos que es necesario tomar en consideración:

  • El primero de ellos -y no os sorprenderá a los que seguís este blog-, es la necesidad de no perder de vista el objetivo real que originó la necesidad de una aplicación o sistema. Centrarse en la metodología puede eclipsar el objetivo real, la necesidad última por la que arrancamos el proyecto.

Dado que sobre este tema hemos hablado repetidamente, os remito a la entrada “Proyectos de BI.- Cuál es el elemento fundamental“. Aunque en ese caso hablamos refiriéndonos a los proyectos de BI, la reflexión es válida para todo tipo de proyectos, siempre que estén relacionados con la gestión de las organizaciones.

  • El segundo, y en el cual nos vamos a centrar en el día de hoy, es la necesidad de utilizar unas tecnologías que nos permitan realizar este tipo de desarrollos de manera lógica. Es decir, realizar desarrollos utilizando lo que en este post hemos denominado

TECNOLOGÍAS ÁGILES

¿Qué es eso de tecnologías ágiles?, os estaréis preguntando. Es sencillo son aquellas tecnologías desarrolladas para permitir el desarrollo y la puesta en operación de aplicaciones informáticas de acuerdo a un proceso rápido y de cambio continuo.

Hasta ahora, esta forma de desarrollar se ha venido consiguiendo mediante la aplicación de metodologías ágiles: la propia metodología forzaba los resultados, con casi independencia de la plataforma tecnológica utilizada; y en los primeros tiempos, ésta era la única forma de poderlo hacer, dado que las plataformas tecnológicas existentes no permitían otra cosa. Pero hoy las cosas han cambiado: ya están apareciendo en el mercado plataformas de desarrollo y de operación que permiten desarrollos en tiempos mínimos aunando la puesta en explotación en el proceso de desarrollo y obteniendo el feedback de los usuarios de manera instantánea, entrando en lo que podríamos llamar el proceso de desarrollo continuo

¿Qué características debe tener una tecnología para poder ser considerada una Tecnología Ágil?

Seis son las características que posicionan a una tecnología como ágil:

A) Integrar, en la misma plataforma, el entorno de desarrollo, de pruebas y de producción, convirtiendo el proceso DevOps en una realidad. Disponer de los tres entornos en la misma plataforma elimina, entre otros, los problemas de compatibilidad de versiones y cambios de entornos tecnológicos.

B) Utilizar una plataforma estable, no sometida a cambios continuos que puedan afectar a los procesos de desarrollo o a los de producción. Y, en cualquier caso, independizar los esfuerzos por mejorar la plataforma de los esfuerzos para mejorar nuestra aplicación.

C) Disponer de una plataforma completa que, integre la totalidad de los recursos de desarrollo (incluyendo la integración de recursos no incluidos), así como los recursos de explotación, incluyendo obviamente todos los aspectos relativos a seguridad. Utilizar éstos recursos como estándares permite eliminar uno de los aspectos más críticos de todo desarrollo y centrar nuestros recursos en las funcionalidades que realmente importan a los usuarios.

D) Contar con una plataforma de desarrollo que permita el proceso desarrollo-test-producción como un continuo; es decir, que permita implementar los cambios, probar el resultado y pasarlo a producción de manera integrada, sin precisar ningún tipo de ruptura en la cadena.

Ante un cambio en los requerimientos y la modificación del código, las pruebas por parte del usuario deben ser instantáneas, entrando en un continuo hasta conseguir el funcionamiento deseado; una vez logrado, el usuario debe poder contar con la nueva versión sin ningún tipo de esperas. Ello evitará tiempos muertos en los que puedan surgir nuevos requerimientos que distorsionen los resultados de los cambios.

E) Disponer de un entorno de desarrollo Low Code, o incluso Cero Code. ¿Por qué esta es una característica inherente a las tecnologías ágiles? Una plataforma que permite desarrollar sin vincular los desarrollos a un lenguaje específico, implica que cualquiera sea capaz de interpretar lo desarrollado y de modificarlo; es la única forma de garantizar que los desarrollos no dependen (en el mal sentido), del equipo desarrollador, que cualquier necesidad de cambio puede ser implementada sin depender del autor original.

Cualquiera que ha participado en el desarrollo de aplicaciones ha padecido la quiebra que supone perder a alguno de los miembros del equipo desarrollador: nadie es capaz de interpretar cómo había hecho su parte, es necesario dedicar tiempo y esfuerzos a interpretar…, y normalmente hay que volver a rehacer algunas partes para garantizar el correcto funcionamiento. La utilización de una plataforma Low Code implica que los recursos básicos están en la propia plataforma, que ésta suministra la forma de programar, lo que se puede hacer y cómo hay que hacerlo, evitando que los elementos fundamentales estén al albur de los desarrolladores.

Además, la utilización de sistemas Low Code implica incrementar enormemente la capacidad de sustitución de los equipos, incrementándolos o reduciéndolos a voluntad, sin precisar largos procesos de formación.

F) Disponer de acceso web, tanto a los recursos de desarrollo como a los de pruebas. Que cualquiera pueda implementar cambios con independencia de donde se encuentre y que el usuario pueda probar las modificaciones sin tenerse que desplazar es fundamental para agilizar el proceso de cambios. Crear entornos ficticios en los que el usuario esté integrado en el equipo de desarrollo resulta, cuando menos un despilfarro de recursos, por lo que, a día de hoy, el acceso a ambos entornos vía web es lo más sencillo y funcional.

G) Aunque no es un requisito intrínseco de las tecnologías ágiles, existe una característica adicional que desde mi punto de vista es fundamental para considerar que una tecnología ágil está completa: que integre tanto la parte operacional como la de análisis de información. Si desarrollamos una aplicación, creamos un cuadro de mando en otra plataforma (o cualquier otra visualización de indicadores e información) y a continuación cambiamos la aplicación operacional, en el 99% de los casos nuestra aplicación BI se estará quedando desconectada de la realidad, o será muy gravoso actualizarla. Ello es uno de los frenos a la modificación de nuestras aplicaciones y es por ello que una tecnología ágil debería integrar ambos lados de la gestión para que realmente sea efectiva.

Las Tecnologías Ágiles

Características de las Tecnologías Ágiles

Este tipo de herramientas ya existen en el mercado -aunque sea en número reducido-, y su utilización proporciona mejores resultados que la más agresiva metodología ágil. Ello no implica que debamos despreciar dichas metodologías; de hecho, en muchos casos, no podemos disponer de tecnologías ágiles susceptibles de ser utilizadas, por lo que las metodologías ágiles nos permite acercarnos a este tipo de resultados, aunque con un coste mayor y unos resultados más pobres.

Tan solo disponer de tecnologías ágiles nos permite entrar en el proceso que en este blog hemos hablado muchas veces del principio  Think-Act-Think, es decir, piensa qué necesitas, construye la aplicación que te lo proporcione y vuelve a pensar qué otra cosa necesitas, sobre lo que ya tienes.

El Proceso Iterativo

El Principio Think-Act-Think.- Proceso Continuo

El mercado es cambiante; las necesidades, por consiguiente, también lo son; es necesario romper con el concepto estático de aplicación informática, en el que “una aplicación se concibe, se desarrolla, se pone en explotación y se mantiene”.

La realidad actual nos dice que “una necesidad se detecta, se desarrolla una aplicación que la soporte, se pone en explotación, se verifica el impacto sobre la necesidad y se modifica la aplicación, de manera recurrente”.

El concepto clásico de mantenimiento de aplicaciones ha muerto: las aplicaciones no pueden mantenerse, hay que cambiarlas, evolucionarlas, modificarlas para adaptarlas a la necesidad cambiante. Y esto solo puede hacerse utilizando herramientas ágiles, ya sean -si no hay más remedio- metodológicas o, si se tiene acceso a ellas, Tecnologías Ágiles.

Si os ha gustado este post, hacédmelo saber. En próximas entradas hablaremos de algunas de las tecnologías ágiles existentes en el mercado, para desarrollar aplicaciones en proceso continuo.

 


Os recuerdo que tenéis disponible el Curso Gratuito para “Tener un BI que funcione”, que en 8 sesiones os dará un enfoque completo de los principales problemas a la hora de abordar un proyecto de BI y muchas claves para abordarlos.

Para apuntaros al Curso Gratuito no tenéis más que pinchar en la imagen del “Oso construyendo un iglú” (en la esquina superior derecha) y dejar vuestro email, e iréis recibiendo el curso en 8 envíos a lo largo de las siguientes semanas. ¡Nos vemos!


© Juan Carlos García Alcázar. – 2018

Esta entrada fue publicada en Metodologías Ágiles, Metodologia Desarrollo de Aplicaciones, Teccnologia, Tecnologías Ágiles, Uncategorized y etiquetada , , , , , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s