Desarrollo de Software y Flujos de Desarrollo Agil

Desarrollo de software y Flujos de desarrollo ágil

En Desarrollo de Software y Flujos de Desarrollo Agil normalmente intervienen varios conceptos y filosofías que pueden ser muy útiles a la hora de agilizar procesos. Principalmente los desarrolladores y compañías nos enfrentamos todos a ciertos problemas comunes que hacen más complejo el proceso de desarrollo de software.

Si se trabaja en equipo, suelen ser exponencialmente más grandes estos problemas, sin embargo de forma resumida estos problemas son:

  • Construir
  • Distribuir
  • Ejecutar

La Historia del Desarrollo de Software y Flujo de Desarrollo Agil

Hace unos años, el comercio internacional presentaba problemas similares. Y es que en puertos de exportación de países desarrollados o imperios, se podía enviar casi cualquier tipo de mercancía. Esta mercancía ocupaba mucho espacio y era ineficientemente distribuida en los barcos. A raíz de esto, también a los puertos receptores se les presentaba un problema porque generalmente no se contaba con los recursos o herramientas correctos para descargar y distribuir estas mercancías.

La forma que tuvo el comercio internacional por medio de la Organización Mundial de Aduanas, fué creando un estándar que todos pudieran seguir y así solucionar el problema de carga, descarga y distribución de la mercancía a través de todos los puertos a nivel mundial mediante normas que rigieran el proceso y hacerlo honesto, eficiente y útil para todos los miembros. ¿Por qué hablo de ésta analogía?

Pués porque el desarrollo de software presenta desafíos similares y también se rige por normas y estándares y el Manifiesto Ágil. Desde páginas web hasta aplicaciones de intranet o software para aviones como el caso de Boeing, el software hoy día requiere velocidad, seguridad y alta manejabilidad en su evolución.

Cada vez la era digital avanza más rápido y en la historia quedaron los equipos tradicionales donde una aplicación cualquiera podía tomar meses o años en desarrollarse. Con metodologías de desarrollo como SCRUM, Ágil, etc. que manejan tantas estrategias en la forma de desarrollar sus productos, nos encontramos con que los principios son los mismos y por ellos nos podemos guiar todos.

Imagen tomada de Amazon Web Service

De lo que estamos todos seguros como profesionales del desarrollo de software, es que cada vez es más fácil servir productos digitales y físicos de calidad a nuestros clientes. Como lo dije, sea una simple página web, una aplicación móvil, etc. el concepto de desarrollar productos rápidamente vino a revolucionar la industria entera.

Citando al blog de Amazon Web Services un flujo de desarrollo de software ágil:

“Constituyen una combinación de filosofías culturales, prácticas y herramientas que incrementan la capacidad de una organización de proporcionar aplicaciones y servicios a gran velocidad: desarrollar y mejorar productos con mayor rapidez que las organizaciones que utilizan procesos tradicionales…”

Beneficios de un Flujo de Desarrollo ágil

Los beneficios de implementar estrategias de desarrollos ágiles son muchísimos, pero creo que los que más me impactan como profesional del área son las siguientes:

Velocidad:

He tenido la oportunidad de trabajar en proyectos de software grandes, tediosos y difíciles de mantener, así como también en proyectos sumamente fáciles y ágiles en donde un simple cambio visual puede tomar horas o menos. 

Tuve la oportunidad de trabajar en 2 bancos en Venezuela, en áreas distintas y pude de conocer de primera mano software viejo, lento y difícil de mantener. Podía notar que cuando se quería implementar cualquier característica la ansiedad podía alcanzar niveles increíbles. Esto nos sucede a los desarrolladores cuando existe la mínima percepción de que tocar una parte o fragmento del código, liberará un montón de errores o bugs en otras ubicaciones del software.

Más o menos así se sentía:

via GIPHY

Ahora por ejemplo con tecnologías como Javascript, PHP (últimas versiones más avanzadas), Python, incluso lenguajes viejos como Java o C++ te permiten hacer cambios y compilar o desplegar de manera veloz. Esto asegura actualizaciones más frecuentes, capacidad de poder probar ideas de negocio y nuevos servicios a los clientes y un soporte espectacular.

Ni hablar de herramientas como CMSs que hoy te permiten tener una tienda o página web en cuestión de días/horas en el caso de Shopify o WordPress. Lo importante de la velocidad que hemos alcanzado como desarrolladores de software es que se ha convertido en un estándar, como logró la Organización Mundial de Aduanas en su momento la estandarización de las actividades de importación/exportación.

Soporte, Agilidad de equipos y Escalado:

Imagina proyectos grandes y extremadamente tediosos, hechos con lenguajes viejos o técnicas de programación desordenadas. Si fueras programador, o si lo eres visualizate trabajando en código incomprensible y desordenado. Alguien que admiro mucho dijo que “El software no es hecho para las máquinas, sino para las personas”. Si estuviera hecho sólo para las máquinas, escribiríamos no lo sé, ¿en lenguaje ensamblador?, ¿código binario (001110011000010111110010)? Quizás éste último.

Cuando de soporte de software se trata, es vital que contemos con el equipo especializado y que las condiciones para trabajar sean las más adecuadas para conseguir código de calidad. Conceptos como Integración Continua, Entrega Continua, Release, Controladores de versiones como GIT, etc. Nos permiten mantener los niveles de soporte y escalado altísimos.

Un equipo de ingenieros o desarrolladores pueden estar trabajando simultáneamente en una misma sección del código, nueva característica o funcionalidad, o estar resolviendo algún error en el programa y todo sin afectar la ejecución en vivo del sistema o aplicación. En equipos tradicionales y antiguos, un error era motivo suficiente para detener la ejecución o producción por quien sabe cuanto tiempo hasta que el error fuera subsanado.

La colaboración en equipo en el mundo del software es una de las partes más vitales de la industria, uno de sus pilares. Una aplicación no se crea o escala por una sola persona (dependiendo del tamaño por supuesto). Se necesitan equipos de diseñadores, desarrolladores, testers, product owners, etc. para desarrollar con éxito el mismo. Es como en la arquitectura, se necesita un equipo para construir un edificio. Crea equipos y mantenlos motivados.

Seguridad:

Las amenazas, debilidades y malwares allí afuera están extendidos. Cada vez son más complejos y se parece mucho a un juego de gato y ratón. Los hacker desarrollan amenazas y encuentran debilidades todos los días. Si quieres que tu aplicación se mantenga fuerte y durable, asegúrate que cuentas con un equipo o compañía que pueda fortalecer debilidades y encontrar posibles amenazas en tu programa rápido.

En un equipo tradicional, una falla puede ser reparada en meses o días. Y eso podría ser fatal para tu programa o aplicación. Las fallas deben ser arregladas a la velocidad de la luz. y eso solo se logra en equipos ágiles.

Pitch como conclusión - Desarrollo de software y Flujos de desarrollo ágil

En conclusión, si quieres implementar desarrollo ágil en tu compañía necesitas manejar y conocer conceptos como Controladores de versiones, Integración Continua, Entrega Continua y Releases, Productos Mínimos Viables, principales técnicas de Exploit y seguridad informática. Puedes seguir usando técnicas de desarrollo tradicionales si deseas, pero lo que importa es que al final seas lo más ágil posible en tus desarrollos o implementaciones.

No sólo se puede usar para software, también puedes iterar estas técnicas en tu empresa o modelo de negocio cuando aplicas el LeanStartup o básicamente cualquier propuesta que te permita probar y ejecutar en base a resultados (A/B Testing, audiencias, etc).


En resumen, no tardes tanto tiempo desarrollando tus productos. Si lo haces, alguien más puede estar adelantándose o simplemente tu idea podría no ser tan efectiva como pensabas y gastarte un montón de dinero. Así que no lo olvides, enfócate más en crear Productos Mínimos Viables que te permitan validar ideas, comenzar a producir, etc.

¿Quieres consejos, recomendaciones y tutoriales?

Suscríbete para obtener acceso inmediato al mundo del desarrollo web, tendencias y productividad.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *