2020-05-14

Siempre que le preguntamos a un desarrollador, la mayoría se considera “desarrollador(a) fullstack”; un perfil intrínsecamente senior, con amplio conocimiento y alta demanda en el mercado.
Un desarrollador capaz de diseñar e implementar proyectos, tanto del lado del servidor (backend) como del cliente (frontend), lo que significa conocer las fortalezas y debilidades de cada tecnología y mantenerse actualizado a medida que evolucionan.
Con la constante y rápida evolución, mantenerse actualizado en frontend y backend es cada vez más complicado. React, Vue, Svelte, Angular, SASS, LESS, y las constantes (y buenas) evoluciones de ECMAScript (el querido Javascript) ya hacen difícil estar al día en el universo frontend. Si consideras que programar (en uno de los miles de lenguajes) en el backend es una pequeña fracción de la responsabilidad, debemos cuestionar si cumplir con estas expectativas es más un mito que una realidad.

Cuando esta nomenclatura comenzó a usarse para este perfil, a principios de los 2000, las tecnologías eran claramente menos complejas y las opciones eran menos numerosas:
Ser fullstack ahora significa que puedes: crear frontends, escribir backends, manejar devops, iniciar un podcast, curar un newsletter, romper un huevo con una mano y animar una película de Pixar
La evolución de las tecnologías de front y back-end ha sido considerable desde entonces:


Tanto iOS como Android requieren conocer bien su rico y complejo ecosistema, si deseas ofrecer soluciones nativas y, solo en el caso de usar tecnologías híbridas basadas en el DOM del navegador (React Native, por ejemplo), es posible hacer esta ardua tarea más simple, aunque con contrapartes de rendimiento.
Las posibilidades de diseño ahora son mucho mayores. CSS y el DOM permiten layouts muy sofisticados, necesarios para adaptarse a varios clientes: mobile/desktop, diferentes tamaños y densidades de pantalla, interfaces táctiles, etc. Y son estándares que continúan creciendo (CSS3, FlexBox), no solo en 2D, sino también en 3D (WebGL).

En el back-end, las bases de datos no siguen exclusivamente el modelo relacional. Los “NoSQL” llegaron para quedarse. Dynamo, Mongo y muchos otros, cada uno con sus particularidades.
Los monolitos están migrando hacia arquitecturas más distribuidas, basadas en microservicios, mucho más escalables y en muchos casos, más baratas de mantener. Este nuevo paradigma trae diversas ventajas, pero no es una bala de plata y hay muchas desventajas que deben ser ponderadas al evaluar una solución.

Incluso con este amplio panorama de tecnologías, el desarrollador con vocación full-stack todavía tiene alguna posibilidad. Un ejemplo de esto es que, eligiendo bien la stack, el mismo lenguaje ahora puede usarse en todos los contextos: Javascript en la web (DOM), en mobile (Cordova, React Native), en el servidor (Node.js) y en la BD (MongoDB).
Y, sin embargo, esperar que la misma persona pueda elegir las tecnologías ideales en todas las circunstancias, desarrollar backend y frontend con alta productividad y en un período de tiempo razonable, parece algo cada vez menos realista.
Aunque existan casos en que una startup se crea en torno a una stack específica o en proyectos menores, ¿no deberíamos definitivamente jubilar este perfil como lo conocemos?