Desarrollador Full Stack, esa rara avis

Desarrollador Full Stack, esa rara avis

Una de las cosas que mas me sorprende en las organizaciones y clientes con los que trabajo o he trabajado es la capacidad de aquellas personas capaces de controlar todos los aspectos más complejos de un proyecto, y poder entrar a discutir el último detalle técnicos, con las diferentes áreas internas de su organización y/o inclusive agentes externos.

Si buscásemos en internet, posiblemente el perfil más similar que encontraríamos seria el del desarrollados Full Stack. Ese profesional, rara avis, capaz de conocer no sólo deferentes ámbitos del desarrollo, ya sea Front-End y Back-End. Sino además ser capaz de manejar con soltura diferentes, piezas tecnológicas, sistemas operativos y lenguajes de programación.

Este perfil suele ser un profesional todoterreno y pieza clave en los departamentos de marketing o desarrollo de producto de cualquier empresa. Conoce a la perfección tanto los requerimientos de negocio, cómo la parte de diseño de la aplicación maneja los principios fundamentales del diseño UX/UI y, además, hasta sabe programar.

Realidades opuestas

Pero este tipo de perfiles sólo se lo pueden permitir grandes organizaciones, donde existe un amplio equipo de arquitectos y desarrolladores trabajando en el desarrollo de la aplicación. Normalmente este tipo de perfil tiende a ser uno de los más seniors y desde mi punto de vista, ha de evitar estar en el barro programando, este tipo de perfiles es mucho más valioso a la hora de redefinir funcionalidades de la aplicación, introducir piezas tecnológicas e inclusive ayudar en el troubleshooting de la aplicación, ante un problema de rendimiento o una caída de esta.

Adicionalmente la llegada del cloud ha complicado aun más la tarea de esta serie de perfiles, ya que cada proveedor esta desarrollando una serie de servicios gestionados, que han de ser validados en cuanto a ventajas e inconvenientes, a la hora de introducir como piezas tecnológicas de la aplicación.

Aproximaciones de diseño

Como introducía en el anterior apartado, la amplitud de conocimiento y complejidad del mercado cloud, hace necesario definir muy bien las piezas tecnológicas de tu arquitectura de la aplicación. Normalmente las aproximaciones actuales son principalmente, basada en infraestructura más piezas tecnológicas, ya sean open source o tecnología paquetizada por un tercero, o una segunda aproximación mucho más orientada al código que sería utilizar servicios PaaS o servicios gestionados de un proveedor cloud.

Opción de diseño basado en infraestructura

La primera de las opciones tiene una alta componente de independencia y maniobrabilidad, ya que las piezas de infraestructura hoy en día son prácticamente intercambiables, estemos en un entorno on-premise o en uno cloud. Este tipo de aproximación permite disponer de una libertad absoluta en lo que se refiere al diseño y arquitectura de la aplicación.

Por otro lado, una de sus principales carencias es el alto grado de dependencia de las operaciones por parte del equipo técnico. Aunque estas últimas se pueden llegar a optimizar mediante estrategias de despliegue basado en infraestructura como código y gestión de la configuración, para ello en el mercado existen ya muchas opciones, y un posible aliado puede ser la combinación de Terraform y Ansible, a la hora de definir y desplegar cada una de las partes de la aplicación.

Opción de diseño basada en servicios

Esta variante normalmente es la preferida de los equipos de desarrollo, ya que independiza normalmente mucho más el proceso de codificación, de la parte de despliegue y operación.

Estas fases se ven tremendamente optimizadas frente a la aproximación basada en infraestructura, pero también una serie de inconvenientes que se han de evaluar antes del inicio del proyecto, como son principalmente las limitaciones en cuanto a los lenguajes de programación soportados, así como la posibilidad de estar atado a un proveedor en concreto o el temido vendor lock-in.

Conclusiones

El desarrollador full-stack debe disponer de una visión amplia y conocer las tripas tecnológicas de las diferentes piezas a poner en marcha. Pero como todo en la vida, la disyuntiva entre especialización y conocimiento amplio es un limitante.

De este tipo de perfiles se puede esperar agilidad y adaptación, han de ser la grasa en la maquinaria que ayude a que el sistema funcione de forma eficiente y a pleno rendimiento, pero no se puede delegar en ellos todo el peso y responsabilidad depositado en un especialista.

La creciente evolución exponencial tecnológica a la que nos estamos enfrentando desde hace años, ha hecho que tecnologías relegadas a los departamentos de investigación y universidades, hayan dado el a salto a la empresa, hoy en día no hay proyecto que se precie que no disponga de algún algoritmo de machine learning, utilice el big data para extraer insights de nuestra empresa o inclusive se trace todo el proceso mediante blockchain.

Esta nueva realidad, hace mucho más complicada la tarea y funciones de los perfiles Full-Stack. La necesidad de conocer más lenguajes de programación para las nuevas piezas tecnológicas, así como las nuevas aproximaciones de despliegue como son la infraestructura como código y la gestión de la configuración. No facilitan para nada la vida de este tipo de perfiles.

Un comentario sobre “Desarrollador Full Stack, esa rara avis

Deja un comentario

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