Por Lucas Hendrich, Director de Tecnología de BairesDev
Acercándose el final del 2019, es un buen momento para reflexionar sobre interesantes tendencias que estamos viendo en el ecosistema del desarrollo de software.
1. Acercamiento holístico
Tradicionalmente los roles de un equipo de desarrollo eran bien demarcados, con una clara separación entre la actividad de cada uno. El programador centrado en su código. El tech lead planeando y liderando el equipo de desarrollo. El Ingeniero de DevOps administrando todo el entorno necesario para construir, desplegar y ejecutar el software (sistema operativo, servidores, servicios en la nube y demás).
La saludable tendencia que estamos viendo y adoptando activamente, es el acercamiento holístico al desarrollo de software. Este no distingue entre los productos y los procesos que lo crean. Incluye cada etapa y herramienta del proceso: desde la idea, pasando por la programación, la implementación (“deployado”) hasta que la aplicación llega a millones de usuarios.
Así, el Tech Lead hace tareas tradicionalmente reservadas a un DevOps, este las de un desarrollador, y el programador tampoco está aislado programando. Todos tienen empatía por el rol del otro y se piensa a la aplicación como un ser vivo que se está creando. La responsabilidad se distribuye entre todos y se evita el problema de que pase algo en producción y no se pueda encontrar al responsable del código.
En nuestro caso, cuando comenzamos un nuevo proyecto, el 80% del esfuerzo está puesto en crear la organización y la cultura tecnológica, con todas las herramientas y prácticas necesarias para lograr software y experiencias de usuario de la más alta calidad. El otro 20% del foco está puesto en el producto y sus características. De esta manera, podemos dedicar el 100% de los esfuerzos al producto con 0% de deuda técnica (esto es, el costo de no planear el desarrollo como es debido).
2. Desarrollo cloud native y serverless
Otra tendencia fuerte de los últimos años es el desarrollo cloud native: toda la infraestructura de desarrollo no está en máquinas locales sino en la nube. Puedo levantar un servidor AWS (Amazon Web Services), Google Cloud o Microsoft Azure y correr mi código como si fuera en mi máquina. Así, puedo configurar por ejemplo un servidor linux completo en la nube. Esta tendencia no muestra señales de retroceder, ya no volveremos al “servidor en mi placard”.
Esto resuelve el problema del escalamiento: que se caiga la aplicación al llegar, digamos, al millón de usuarios. Con la infraestructura en la nube no necesitamos contratar gente para monitorear los recursos, esta aumenta automáticamente a medida que la aplicación lo necesita.
Pero si yo escribo código, ¿por qué tengo que dedicar una semana a configurar un servidor en la nube? El acercamiento serverless va un paso más allá: ni siquiera tengo que configurar un servidor, escribo la configuración que necesito como código y este código levanta el ambiente. Hay dos frameworks utilizados hoy para hacer esto: Terraform y Serverless (open source), Amazon los entiende y te deja levantar todo desde el código, automatizando por completo el proceso de configurar servidores. Así, pasamos de Infrastructure as a Service (IaaS) a Infrastructure as Code (IaC).
Hay una excepción: Internet Of Things está basada en pequeños componentes que muchas veces no disponen del tiempo para transmitir y hacer el procesamiento en la nube. Esto es la llamada edge computing. Pero esto es una tendencia que no va en contra de la nube, la complementa y acompaña.
3. Equipos distribuidos
La revolución de la arquitectura distribuida trajo como consecuencia un cambio humano: el 2019 fue el año de los equipos distribuidos de desarrollo. Nunca antes hubo esta combinación de herramientas, ancho de banda y cultura para lograr que los equipos distribuidos sean más eficientes que los equipos locales. Pero los beneficios no son solo en productividad: los equipos se pueden crear mucho más rápido sin las limitaciones del mercado local, mejora la calidad de vida de los miembros del equipo y baja la huella de carbono cuando desaparecen los edificios corporativos y los viajes al trabajo.
En nuestro caso, atravesamos países y regiones con equipos de trabajo distribuido. Y como expertos en cloud native: armamos equipos muy efectivos en toda América Latina en tiempo récord gracias a nuestro innovador reclutamiento de talento. Tener a equipos completos en la oficina es del siglo pasado. Debemos cambiar la mentalidad de gente trabajando sentada una al lado de la otra. Empresas como Gitlab son emblemáticas: tiene empleados en 56 países y no tiene oficinas, ese es el futuro.
4. Fintech y healthcare
En cuanto a los mercados verticales, hay dos rubros que estamos viendo muy activos en la demanda de servicios de desarrollo de software.
Por un lado tenemos la explosión fintech, que no paró de crecer en el 2019, generando una democratización en el acceso de servicios de pago y criptomonedas. Empresas como Azlo y Chime (valuada hoy en 5 mil millones de dólares) crean plataformas que revolucionan la banca personal, ofreciendo experiencias más accesibles y eficientes a los usuarios.
El amplio espectro de la salud, desde la biotecnología y la industria farmacéutica hasta los hospitales, también está muy activa mejorando la calidad de servicio a los pacientes. BairesDev también está participando en esta transformación, ya sea motorizando la transformación digital desde adentro de empresas como IQVIA o proveyendo ingeniería a disruptores como Outcome Heath. El gran motor de esta innovación es un cambio radical en los servicios tradicionales de salud. En países como Estados Unidos las ineficiencias del sistema han generado un sistema caro e inalcanzable para muchos. Nos enorgullece formar parte de este movimiento de innovación que tiene un fin sumamente bueno, mejorar el sistema de salud y dar un servicio de mejor calidad a los pacientes.
Por último, tenemos una infinidad de startups y emprendedores, como la empresa Genneve de Seattle, que provee información y servicios para mujeres que llegan a la menopausia. Los sistemas masivos de salud no pueden prestar la misma atención a sectores más pequeños de la población, como sí lo pueden hacer estos emprendedores.
En conclusión, los nuevos roles en desarrollo, la arquitectura y los equipos distribuidos están cambiando radicalmente la manera de desarrollar software. Las organizaciones que adopten estos cambios rápidamente serán las que lleven sus proyectos a buen puerto con el mayor éxito.