¿Saben qué es un programador Full-Stack? Es un empleador ahorrándose dinero.
Nadie le pediría a un albañil que le hiciera, además de las paredes, los planos, la instalación de luz, gas, el techo, pintara todo, son trabajos que asociamos a distintos roles y especializaciones. En sistemas, en cambio, todo van para el mismo personaje: el Full-Stack.
Como su nombre lo indica, tiene todo el stack, pero no todo UN stack, tiene TODOS los stacks de moda, sabe todos los frameworks, se adapta de uno a otro en un instante y el resultado es siempre: software de mierda. Y no, no es su culpa.
Nos han mentido, como developers, con una idea totalmente errada y que deriva en software de malísima calidad: que un developer con suficiente conocimiento es todo lo que hace falta en la empresa o área de IT.
No se trata de un prorgamador, eso es insuficiente, el programador tiene que conocer todas las modas del momento, encargarse del backend y del frontend, y ser bueno en todo.
Tiene que, además, encargarse del servidor, de los servicios asociados, de Docker hasta Kubernettes, tiene que ser un sysadmin programador, el santo grial de los de sistemas.
Tiene que programar "a la vieja escuela" para hacerse cargo de código legacy que lleva una década sin mantenimiento ni documentación, tiene que programar con los recursos más modernos desde React hasta Node, pero no sólo con la base, sino con cada pequeña cosa nueva que acaba de salir.
Tiene que ser un experto en base de datos, pero SQL ya no alcanza, además la tiene que tener super clara en no-SQL, y poder hacer búsquedas en JSON gigantes con la eficiencia de un servidor que jamás tendrá porque "es muy caro, se puede con menos".
Es más, su jefe le dirá que desde ahora en más serán "serverless" y tendrá que poder programar en el aire mientras logra convencerlo de que no existe tal cosa como "less" acompañado de "server".
Después tendrá que dejar de renderizar en el servidor porque la moda es que todo sea en el cliente, así que tendrá que ser un experto de backend, APIs y luego de frontend, Javascript del más avanzado posible y CSS, los diseñadores ya no hacen falta ¿No? Sólo se encargan de tirar un dibujo en Figma, el trabajo de maquetación lo tiene que hacer el mismo programador!
Todo esto, sin olvidar, de hacer testing y QA.
Justo nombré al diseñador porque es una profesión especializada, se le piden muchas cosas que van más allá de su alcance, pero dentro de todo sigue diseñando.
El programador ha aceptado este mote de "Full Stack" como si no tuviera consecuencias y, de pronto, es incapaz de producir código bueno. Hay al menos cinco o seis roles en una misma persona, no se puede con todo!
El "ahorro" no es tal, encima de ser permanentemente amenazado con que la AI lo va a reemplazar (dato: ni una AI puede manejar un contexto tan grande todavía jejeje), encima tiene que saber más que ésta si quiere ser aceptado en cualquier puesto.
Lo que la mayoría vemos es, en cambio, que muchos "full-stack" no sólo no son full, ni stack, ni nada, apenas tienen conocimiento de alguno de todos los roles que se le piden. Como en cualquier otra profesión, uno es mejor en una porción de la misma, no en toda.
No le pedimos a un traumatólogo que se encargue de nuestro sistema linfático, ni a un neurólogo del sistema digestivo, al no existir una responsabilidad mayor por entregar software malo a producción, a diferencia de la medicina, se sigue haciendo basura sin consecuencias y eso permite renegar de los especialistas.
Hasta que... haste que esa idea deja de funcionar.
Un ejemplo del fallo general de este enfoque es justamente la AI, no me refiero al "reemplazo" propuesto sino al tipo de experiencia y conocimiento que hace falta para poder desarrollar un LLM, por ejemplo.
De pronto matemáticos y estadísticos pasaron al centro de la escena, los más especializados de todos, ninguno "full-stack" de nada, todos tipos con un título y especialización tan acotada como difícil, sólo esos eran necesarios y un sólo programador que pudiera traducirlo a Pyhton.
La especialización de pronto se volvió un requerimiento y casi no quedan profesionales disponibles para cubrir esos roles.
Es tal vez uno de los mayores errores de nosotros como profesionales dejarnos manosear de esta manera. Todo rol de "Full Stack" es en realidad un pedido de tres empelados al precio de uno. Es una estafa.
Sí: la mayoría podemos hacer ese trabajo porque no nos quedamos con crear una API y dejarla así sin usar, aprendemos un poco de diseño, tiramos un bootstrap, le damos algún "cariño" a la UI y no mucho más,todo el resto debería hacerlo un especialista en frontend, otro rol, otra persona, uno que conozca todos los trucos y soluciones de la santísima trinidad HTML+JS+CSS sin tener que pensar en nada más.
Todo ese trabajo debería pasar a un tester dedicado a encontrar todos los bugs con una batería de tests super detallados que rara vez se escriben, todo basado en un requerimiento preciso y detallado de un PM imaginario que sabemos que no existe.
Y, claro, con un cliente que comprenda que para hacer una casa hacen falta no sólo buenas materias primas sino un arquitecto, un ingeniero civil, obreros especializados para cada cosa y luego que no se le caiga en la cabeza.
Si con una casa nos resulta tan fácil de comprender ¿Por qué no con nuestra profesión? Sencillamente porque se puede, porque aceptamos que el software puede salir a producción sin riesgos ya que "no se va a morir nadie", hasta que sos el que programa un Tomógrafo y te equivocás en una coma y matás de radiación a todos los pacientes de un hospital, ahí sí que lloran todos.
La casa que construimos tiene pérdidas eléctricas, goteras, huele a gas y el revoque se está cayendo, pero para el manager eso está perfecto para enviarle al cliente.
Cuando usás una webapp que falla por todos lados recordá: no es culpa del programador, es de su jefe que quiere pagar lo menos posible..
Hoy por hoy los sistemas se hacen así, sépanlo.