Gestión de proyectos: desarrollo ágil de software

6 de enero de 2023

Lang: cs en de es

Cuando se desarrolla un proyecto de software, uno se pregunta cómo llevarlo a buen término. Para ello se han desarrollado diversas técnicas de gestión y dirección de proyectos de software. Cada una de estas metodologías tiene sus pros y sus contras y, por tanto, se adapta a distintos tipos de proyectos y entornos empresariales. Cuando se trata del desarrollo de software a medida en los tiempos dinámicos que corren, las metodologías ágiles han demostrado tener éxito, pero son bastante diferentes de las que se encuentra una persona normal en la vida. Hoy en día, las metodologías de desarrollo ágil han proliferado en el campo del desarrollo de software. En principio, esto no es nada nuevo. Sin embargo, también lo es porque muchos clientes, normalmente nuevos, esperan un precio fijo = precio fijo y entrega en un determinado estilo de tiempo, es necesario explicar qué es el desarrollo ágil de software y cómo beneficia a los clientes.

Gestión de proyectos

Gestión de proyectos es una actividad sistemática para lograr la realización de un trabajo individual. Por lo tanto, no es la venta de una solución ya terminada. Y al mismo tiempo, que dicha realización siempre traerá algunos nuevos obstáculos, que tratamos de superar eficazmente mediante la gestión de proyectos. Normalmente, tenemos que gestionar el proyecto para que tenga la funcionalidad requerida por el dinero previsto de antemano y en un plazo adecuado. Y es que un proyecto que cuesta más de lo que ingresa o que se entrega más tarde de lo debido es un proyecto inútil.

Así que, ante todo, ser capaz de gestionar un proyecto significa tener la capacidad de completar el proyecto como se esperaba .

Fases de un proyecto

El progreso de un proyecto puede dividirse en las siguientes fases:

  1. Inicialización
  2. Análisis
  3. Puesta en marcha
  4. Proceso de implantación - trabajo a largo plazo en iteraciones
  5. Finalización
  6. Evaluación

Cuando se realiza un análisis, no sólo hay que fijarse en el aspecto técnico, sino también en el empresarial. Esto significa incluso considerar si realmente es necesario, qué beneficios aportará. Desde el punto de vista financiero, cómo de intensiva en recursos será la implantación en términos indicativos (material, tiempo, financiación). Desde el punto de vista técnico, hay que averiguar si es factible en absoluto.

Metodologías de gestión de proyectos

Existen varias metodologías de gestión de proyectos. Las metodologías básicas de gestión de proyectos son:

  • Método del camino crítico
  • Método en cascada
  • Metodologías ágiles - hay varias con los mismos principios básicos
  • PERT (Técnica de evaluación y revisión de programas)
  • PRINCE2
  • etc.
  • .

Existen muchas metodologías y técnicas de gestión de proyectos, y esto también afecta al ámbito empresarial y de la comunicación. Por ello, mencionaré y describiré algo de cada una. Enumeraré lo que uno se puede encontrar más a menudo y destacaré las características esenciales.

También recomiendo probar primero la cooperación y la metodología de gestión dada en un pequeño proyecto (piloto).

Caída de agua

Waterfall era la gestión de proyectos más típica. Alguien decide que se va a desarrollar algo y tras el análisis, la gente empieza el proyecto. (Si no se hace el análisis no se puede hablar de gestión del proyecto).

Método del camino crítico

En la implementación de cualquier proyecto, varias tareas se construyen unas sobre otras y una no puede continuar sin completar la anterior. Así, este método permite centrarse en encontrar estos puntos críticos y luego seguirlos durante la ejecución del proyecto.

De este modo, se asegura de saber a tiempo, es decir, a veces con antelación, si existe algún problema que amenace de forma significativa la continuidad de la ejecución satisfactoria del proyecto.
La forma más fácil de pensar en esto es en la ejecución de un edificio, donde está claro que no se puede construir un edificio sin cimientos. Y que no se puede acelerar el secado del hormigón. Sin un determinado número de personas, la obra no puede realizarse en el tiempo previsto. Ciertas actividades permiten trabajar en paralelo, lo que puede acelerar el proyecto. Sin embargo, en algún momento hay que unir el trabajo y esto hay que gestionarlo.

Tiempo Fijo Precio Fijo

Fix Time Fix Price - no es una metodología de gestión sino una forma de contratar comercialmente un proyecto, donde un proyecto se entrega a un precio pre-acordado y en una fecha determinada. Personalmente, yo sólo entrego pequeñas tareas definidas con precisión y típicamente repetibles de esta manera. Y dado el precio/tiempo exacto, me pagan dicho trabajo por adelantado.

Al principio de un proyecto se requiere un análisis exhaustivo, y la dificultad de ese análisis aumenta significativamente con el tamaño del proyecto. El tiempo y el coste de hacer el análisis inicial en sí aumentan con el tamaño del proyecto. Nadie hará un buen análisis gratis, por lo que hay que pagar por él sin tener la certeza de que el proyecto acabe ejecutándose. Por otro lado, el cliente dispone de información precisa sobre si el proyecto puede llevarse a cabo y, por tanto, no invertirá dinero y tiempo innecesariamente. Además, conoce el precio exacto y la fecha de entrega. El análisis también puede lavarse como una inversión y utilizarse como base en el futuro, incluso con un proveedor diferente.

Los proyectos Fix Time Fix Price, tienen un precio significativamente más alto porque el contratista asume los riesgos durante la ejecución. No es posible cambiar, y mucho menos añadir nuevos requisitos durante la implementación. Eso significaría hacer todo el análisis de nuevo.

Agílico

Las metodologías ágiles de desarrollo de software son técnicas/métodos bien definidos para gestionar un proyecto de desarrollo de software. Se utilizan con frecuencia y se habla aún más de ellas. En principio, sin embargo, no son nada nuevo. Sólo con definir el término, escribir libros se han dado más a conocer.

Las metodologías ágiles tienen varias técnicas de gestión de proyectos bien definidas que se aplican con detalle en las grandes empresas. La técnica más utilizada es Scrum.

El desarrollo ágil se caracteriza típicamente por:

  • Contacto estrecho con el usuario = comunicación. El programador se comunica con el contable si se encarga de la parte contable de la aplicación o con el almacenista si se encarga de las funciones de almacén.
  • Respuesta a las peticiones del usuario.
  • Respuesta a las peticiones durante el desarrollo.
  • .
  • Entregar unidades funcionales más pequeñas.En las llamadas iteraciones.
  • .

Una gestión ágil significa menos trabajo de gestión, es decir, ahorro de tiempo/dinero con menos ruido de comunicación.

Personalmente, facturo dicho trabajo de forma continua a final de cada mes, aunque algunas tareas estén aún por distribuir.

Lista de técnicas ágiles:

  • Srum
  • Programación Extrema (XP)
  • Desarrollo dirigido por pruebas (TDD)
  • Desarrollo Lean
  • atd

Cómo surgió el desarrollo ágil

Fue en los inicios del desarrollo de software cuando se utilizó desarrollo ágil. El desarrollador programaba el software para sí mismo o el desarrollo se manejaba internamente y era una empresa pequeña.

De este modo, el desarrollador estaba siempre en estrecho contacto no sólo con el cliente, sino también directamente con el usuario del software que estaba desarrollando. Como el campo de la informática era nuevo, a menudo se trataba de una auténtica investigación, por lo que todo el mundo era consciente de la dificultad de crear un programa. Y la búsqueda asociada de nuevas formas de resolverlo, ya fueran algoritmos o medios técnicos.

En aquella época, la mayoría de la gente prefería simplemente evitar los ordenadores.
Pero con el tiempo, a medida que el campo se expandía, más y más personas se interesaron en la informática. y sus conocimientos medios disminuyeron. Con el tiempo, los ordenadores empezaron a ser utilizados por gente corriente o legos. Esto se debió no sólo al precio, sino también a la facilidad de uso y, por último pero no menos importante, al software de código abierto. incluyendo OS GNU/Linux.

La situación actual es esa: Las solicitudes de proyectos de desarrollo de software provienen ahora de forma abrumadora de usuarios corrientes que desean una solución personalizada sin conocer la complejidad del problema a resolver. A menudo, el cliente sólo tiene en cuenta el precio. El vendedor que representa al proveedor no conoce el proyecto ni la complejidad de la tarea, pero es capaz de prometer lo imposible para cerrar el trato. Como resultado, se llega a un acuerdo para un proyecto que tiene un precio y un plazo concretos, pero sin un pliego de condiciones preciso ni un análisis del problema que hay que resolver. Este tipo de proyectos han existido y a veces siguen existiendo hoy en día.

Sin embargo, como tales resultados no eran buenos y ni los clientes ni los programadores estaban satisfechos con ellos, entonces los programadores recordaron a todos cómo desarrollar a satisfacción de todos y entonces escribieron un manifiesto para el desarrollo ágil.

La cuestión es que desarrollar software no es como vender panecillos o simplemente vender una solución de software ya hecha. El desarrollo consiste en conocer el objetivo aproximadamente, pero cómo llegar a él aún está por determinar. Por lo tanto, ni el tiempo ni el coste pueden determinarse con precisión. Y si se gestionan mal, tanto el tiempo como el coste pueden aumentar considerablemente, y de forma innecesaria.

Características del desarrollo ágil

El eslabón más importante en el desarrollo de software es el desarrollador/programador. Por lo tanto, todo se hace con el objetivo de que el programador se sienta cómodo. Para avanzar hacia el objetivo con eficacia, también es el trabajo del desarrollador para trabajar con el cliente y viceversa. Lo que se encuentra en la experimentada contradicción en la que las empresas intentan aislar al programador del usuario y mantener al usuario lo más alejado posible del programador.

El programador tiene que discutir con el cliente las necesidades para diseñar una solución y explicar todo, por supuesto el cliente paga por este tiempo también. Sin embargo, esto evita el ruido de la comunicación y la comunicación directa es también mucho más eficiente en tiempo. Así que este contacto/comunicación directa tiene en última instancia la ventaja de que el producto es mejor y, como se ahorra tiempo, más barato.

Si no te imaginas lo que hace un programador, los detalles de lo que hace un programador están en el artículo: cuál es el trabajo de un programador.

En una época de rápidos cambios, sus prioridades cambian con rapidez y surgen nuevos requisitos. El desarrollo ágil le permite responder a estas demandas, y rápidamente. Para un proyecto fijo, no habría más remedio que detener el proyecto, y volver a analizar desde el principio y comenzar el desarrollo de un nuevo proyecto modificado.

Los clientes elogian que en lugar de tener una gran reunión y luego esperar el resultado, que por supuesto es significativamente diferente de la idea. Pueden entregar continuamente documentos, modificar el brief y, lo que es más importante, comentar la solución entregada. De este modo, obtienen gradualmente un resultado que pueden comprobar y empezar a utilizar. Y con cada iteración se acercan cada vez más a sus necesidades e ideas.

Esta metodología es útil cuando los requisitos cambian o no se pueden especificar en detalle, o cuando necesitamos entregar una solución funcional parcial rápidamente. Sí, en general parece más fácil escribir un brief y luego esperar a que llegue el resultado, pero escribir un brief suficientemente preciso es muy difícil. (Y poca gente quiere redactarlo). En los grandes proyectos, a menudo no es posible resolver todos los detalles desde el principio.

Así que crear un buen brief no puede hacerse sin análisis o incluso crear algún tipo de prototipo.

Además, se espera que un encargo fijo tenga un precio fijo, lo que en la práctica significa un resultado truncado o malo. En consecuencia, los encargos fijos conducen a la necesidad de realizar varias tareas a la vez.
Así que un precio fijo para proyectos no pequeños es una noción idealista cuando se trata de desarrollo a medida. (Comprar una solución ya hecha es otra cosa). Hay que tener en cuenta que, para incluir los riesgos, el proveedor suele multiplicar el precio por al menos 2 ó 4 veces.

Por lo tanto, aunque el precio final no sea obvio a primera vista, el desarrollo ágil siempre sale más barato. Porque, siempre se paga sólo por lo que se necesita y lo que se hace.

Fijar el precio sólo saldrá más barato si el proveedor está en números rojos, y nadie lo hará a largo plazo.

Aplicaciones

Existen diversas aplicaciones de apoyo a la gestión de proyectos. También hay aplicaciones que se especializan en la gestión de proyectos de software y que están optimizadas para desarrolladores de software. Una de estas herramientas es la aplicación web GitLab, que integra otros recursos para un desarrollo eficiente como GIT. Así, los gestores pueden dirigir tareas y gestionar la ejecución de proyectos, incluyendo fases individuales, en GitLab.

gitlab tarea

Además, también incluyen otras características y permiten integraciones con otras herramientas. Por ejemplo, existe la posibilidad de utilizar pruebas automatizadas y auto-deploy.

Proyecto exitoso

Ya sea que estés implementando un proyecto pequeño o grande, la clave del éxito es:

  • Presentar los requisitos
  • Probar la solución entregada

Artículos sobre un tema similar

Análisis de la asignación y fijación de precios del desarrollo de proyectos de software
Programa Python para controlar Docker mediante la API
Cómo utilizar MailCatcher para probar correos electrónicos
API OpenAI de Python
Creación de una aplicación web WebSocket y configuración de un proxy
Cómo ejecutar aplicaciones PHP antiguas
Lo que debe saber un buen programador
Lenguaje de programación Rust
NodeJS: desarrollo, configuración del servidor
Fallo de seguridad de Nette CVE-2020-15227
API REST: API de plataforma
Alojamiento web y de correo personalizado con el software ISP Config
Programación en SQL: PostgreSQL, MySQL/MariaDB
HTTPS: web segura
Base de datos NoSQL Mongo DB
Connecting to Microsoft SQL Server from Linux
¿Cuál es la descripción del trabajo de un programador?
Localización de aplicaciones Python
Qué correo y alojamiento web elegir
Digispark - Programar microcontrolador Atmel ATtiny con Arduino IDE
Desarrollo para procesadores ARM con Arduino IDE
Cómo programar el procesador WiFi ESP8266
Smartphone abierto con Linux - Openmoko Neo FreeRunner

Boletin informativo

Si está interesado en recibir noticias puntuales por correo electrónico.
Puedes registrarte rellenando tu email suscripción de noticias.


+