Imagina que estás buscando trabajo y encuentras una oferta que pide que sepas manejar Photoshop. Muy bien, tú sabes Photoshop, pero también pide que sepas manejar las redes sociales. Bueno, puedes ayudar con eso. Sigues leyendo y dice que debes saber hacer anuncios en Facebook y Google. Empiezas a preocuparte, pero sigues leyendo. Más abajo piden que sepas de edición de video y que tengas disposición para grabar videos para TikTok y YouTube. Entonces pasas de la preocupación al miedo.
Finalmente, dicen que tienes que saber de ventas. Ahora ya no tienes miedo, ahora volteas los ojos con incredulidad y te preguntas: ¿de veras hay personas que postulan a estos trabajos?
Creo que todos estaríamos de acuerdo en que es un puesto al que no vale la pena postular. Porque más parece que están buscando ahorrarse el sueldo de varias personas contratando un “todero” y eso no puede salir bien.
Pero… ¡Hay una solución! ¿Y si le ponemos un nombre rimbombante, que suene a gran profesional y haga sentir orgulloso a quien lo use? ¿Y si los genios del marketing se reúnen y salen con un título como Full stack designer
o Full stack marketer
o mejor aún Full Stack strategist
?
¿Cierto que ya no suena mal? En vez de decir: soy el chico que hace de todo
, ahora puedes decir **Soy full stack develope**r
o perdón, quise decir Full stack strategist
(supongo que entendiste la analogía).
Hoy vamos a hablar del full stack developer, ¿existe? ¿No existe? ¿Es una forma de ahorrarse dinero y contratar toderos? ¿O es una clase de unicornio con IQ de genio que puede hacer por si solo el trabajo de todo un equipo? En este blog vamos a descubrirlo.
Más de 100 cursos imprescindibles para convertirte en Fullstack con 40% de descuento.
Domina los lenguajes y tecnologías más demandadas por las empresas para convertirte en desarrollador backend, frontend o 🦄 fullstack. Esta promoción es irrepetible. ¡Aprovéchalo solo hasta el jueves 1 de septiembre!
💻 Compra tus cursos con 40% de descuento
¿Qué es un stack?
Seguro has escuchado el término full stack, pero para entender mejor de qué se trata, primero expliquemos qué es un stack.
En el mundo de la programación, un stack (o pila en español) es una estructura de datos organizados en secuencia, en la que se puede agregar o quitar datos solo desde sus extremos.
Cuando el bloque de memoria en el que se almacena la pila se llena y no se puede escribir más en él, hablamos de desbordamiento de pila o Stack Overflow en inglés. Sí, así se llama el sitio al que vas a copiar código, perdón, al que vas a ayudar a otros programadores 😅.
Stack como conjunto de tecnologías usadas en un sistema
Haciendo analogía con las pilas, cuando desarrollamos una aplicación existen varias capas como base de datos, backend, APIs, frontend, cloud computing etc. Por lo cual se le llama Stack también al conjunto de tecnologías que se utiliza al crear una aplicación.
Por ejemplo, ¿cuál es el stack de EDteam? Nosotros usamos PostgreSQL en la base de datos, Go en el backend, Node.js y Next para servir las páginas, React para el frontend, Tailwind para la maquetación, AWS en cloud, etc. Y hay muchas tecnologías de nuestro stack, pero estas son las principales.
El stack más famoso de los años 90 y buena parte del 2000, cuando la web empezó a crecer fue LAMP: Linux, Apache, MySQL y PHP. Casi todo en la web se desarrollaba con LAMP (WordPress, Facebook o la Wikipedia se crearon con LAMP).
Hacia finales de los 2000 se hizo muy famoso el stack MEAN (MongoDB, Express, Angular, Node.js) se hablaba de la muerte de LAMP y de la nueva forma de hacer la web: la separación del frontend y del backend en dos roles diferentes.
Antes era normal saberse HTML, CSS, jQuery, PHP e incluso configurar cositas en el servidor, con lo cual todos los que comenzamos en los primeros años de la web éramos en esencia full stack (porque hacíamos todo).
Pero la web se ha diversificado tanto y ha crecido tanto que hoy por hoy existen demasiados stacks diferentes según la necesidad de cada empresa. Es más, gracias a los microservicios, una sola empresa puede partir su aplicación en muchas mini aplicaciones en la que cada una corra un stack diferente. Por eso verás empresas usando muchos lenguajes diferentes, muchos motores de bases de datos, muchos frameworks, etc.
Si quieres conocer el stack de tecnologías que usan las empresas más importantes, un sitio que te recomiendo es stackshare.io te va a ayudar mucho a entender como se desarrollan las grandes aplicaciones.
En resumen, hay tantos stacks posibles como arena en el mar.
Puesto que un stack no es más que un conjunto de tecnologías utilizado para desarrollar y desplegar una aplicación, pueden existir un sin número de combinaciones. Una empresa puede usar Java con MySQL y Angular, otra Python con Postgres y Vue, C# con SQL Server y React, etc. Y eso que estoy poniendo ejemplos sencillos, si quieres ver los complejos te vuelvo a recomendar Stackshare.
Backend, frontend y fullstack
En teoría, un full stack developer es un programador que es capaz de dominar todas las tecnologías de un stack. Y ya que existen tantos stacks posibles y tantas tecnologías que cambian muy rápido, la respuesta de si existe o no el full stack cae por su propio peso y este video podría terminar aquí.
1. Full stack = frontend + backend
El término “programador fullstack” se usa en el desarrollo web y se refiere a un programador capaz de desempeñarse como backend y frontend; aunque los límites son confusos porque se habla también de dominar infraestructura, cloud, DevOps, etc. Por lo que un full stack sería como un Megazord. ¿Y eso existe en la vida real?
Para entenderlo mejor repasemos el stack de tecnologías en el desarrollo web.
2. Arquitectura cliente-servidor (frontend, backend)
Desde su creación, la web fue pensada para funcionar con un cliente y un servidor. El servidor entrega el sitio web a los clientes que lo solicitan. Los clientes son los navegadores web que consumen y muestran ese sitio web.
Por lo tanto, el programador frontend es el que programa en el lado del cliente (lo que él escribe será ejecutado por el navegador) y el programador backend escribe la lógica que será ejecutada en el servidor. Cada uno usa tecnologías diferentes y tiene distintas responsabilidades como puedes ver aquí:
Pero no siempre fue así…
3. Del Webmaster al backend y frontend (y al full stack)
Al inicio de la web (en los años 90) el lado del cliente (el navegador) era muy básico, con casi nada de programación, casi todo en el cliente era estructurar y presentar información, por lo que no se pensaba en un programador frontend como ahora, sino que se hablaba de un “webmaster” que principalmente se encargaba de la programación en el servidor con tecnologías como PHP, Python o Java y desde esos lenguajes creaba las vistas que presentaban la información en HTML.
A partir de los años 2000 los navegadores empiezan a volverse más potentes y a soportar más operaciones en el cliente, por lo que los sitios web empiezan a delegarle más responsabilidad al navegador (más JavaScript). En 2004 aparece Firefox con un nuevo motor de JavaScript y en el 2008 aparece Google Chrome que fue creado pensando en las aplicaciones web (que eran cada vez más frecuentes), es decir, sitios web con una lógica de negocio compleja y que delegan mucha responsabilidad al cliente.
Chrome apareció con un nuevo motor de JavaScript, el famoso V8, que llegó a procesar JavaScript hasta 20 veces más rápido que Firefox. Gracias a Chrome tuvimos el terreno propicio para crear apps que tengan mucha más lógica en el navegador. En 2009 aparece Node.js que saca a V8 del cliente y lo lleva al servidor, luego se lanza Angular, MongoDB, React, Vue y otras tecnologías que cambian el paradigma del desarrollo web.
El frontend se vuelve cada vez más complejo y se empieza a hablar con más fuerza de la separación entre el programador frontend, que se encarga del cliente, y el backend que se encarga del servidor. La capa de comunicación entre frontend y backend es la API.
Ser backend tiene muchos caminos: Java con Spring, C# y .Net, Python con Django o Flask, PHP con Laravel, Go con Echo, Ruby con Rails, JavaScript con Node.js y muchas más.
Por el lado del frontend existen otros tantos caminos como React (el más demandado por la industria), Angular, Vue, Svelte, etc. En incluso dentro de esos caminos hay muchos más caminos (o sub caminos). Por ejemplo, si usas React puedes manejar el estado con Redux, Mobx, React query, etc. Por lo que la cantidad de caminos y bifurcaciones es gigantesca.
Por eso hemos creado el curso gratuito La ruta del desarrollador web. Este es el único curso en español que te enseña todos los caminos posibles para convertirte en desarrollador web y que no te pierdas en este laberinto. ¡Y puedes verlo GRATIS!
Entonces, ¿existe o no el programador fullstack?
Primero lo primero: no hay un consenso en la industria sobre qué significa ser programador full stack. Hay consenso en bases de datos, backend, frontend, cloud, UX o DevOps porque sus límites están claramente definidos. Pero puesto que full stack es un término que busca abarcar todo, es lógico que no haya un estándar y que cada quien le dé su propia definición.
Por ejemplo, los “políticamente correctos” te van a decir que un full stack no es quien domine todas las tecnologías sino quien comprenda completamente todo el proceso de desarrollo desde backend hasta frontend y salida a producción y pueda comunicarse efectivamente con cualquiera. Y hay otros que dicen que un full stack es quien puede hacer toda la aplicación solo, como un hombre orquesta, o un pulpo.
Recordemos que full stack es un término que tiene más de marketing que de técnico, con empresas o áreas de recursos humanos buscando de todo en una sola persona con una palabra bonita para que no suene mal. Es muy curioso que rechacemos trabajos que piden de todo, pero si le ponemos la etiqueta “full stack” aceptamos y con orgullo.
¿Se puede ser fullstack?
Técnicamente sí porque un buen programador es un autodidacta. Y con autodidacta no me refiero a que no haya ido a la universidad sino a que tiene el hábito desarrollado de aprender constantemente: de libros, blogs o cursos online en EDteam. Además, puesto que todos los lenguajes tienen cosas en común, un buen programador puede aprender un nuevo lenguaje, framework o tecnología sin mucha dificultad. Así que sí, en teoría, si podrías aprender todas las tecnologías de un stack y convertirte en full stack.
Solo hay dos detalles a tener en cuenta:
1. La especialización
Mientras buscaba información para este video leí en un blog un artículo que decía que un full stack es como un deportista que es bueno en todos los deportes, ¡y lo decían con orgullo! Sin darse cuenta de que están hablando de algo que no existe (como Michael Jordan fracasando en el beisbol).
En los años 80 la consultora McKinsey creó el término **personas en forma de T**
para referirse a profesionales que tienen una gran especialización en un área (que es su vertical) pero que tienen conocimientos de muchas otras (aunque no con el mismo nivel de profundidad), lo que los convierte en profesionales más competentes ya que tienen una visión holística de los proyectos y negocios.
Entonces, si pensamos en un fullstack como una persona en forma de T no hablaríamos de un concepto nuevo sino de uno que ya tiene 40 años en el mundo de los negocios. Además, desde este punto de vista, es completamente posible ser un fullstack y me atrevería a afirmar que todo programador debería ser un fullstack, entendido como un profesional en forma de T.
Por ejemplo, puedes ser un experto en React, pero a la vez conocer cómo funciona el backend, que tecnologías se utilizan para desplegar la aplicación, cómo se comunican los servicios, etc. Eso te hará un profesional muy valioso para cualquier empresa.
2. La cantidad de stacks disponibles
El segundo problema es la cantidad de stacks disponibles, son tantos que si quieres ser full stack tendrías que especializarte en un stack determinado. Por ejemplo, puedes ser fullstack con Node.js y React, pero ¿si una empresa pide un full stack con Node.js y Angular? Tampoco es que sea imposible dar el salto de React a Angular pero te tomará un tiempo, si la empresa tiene ese tiempo, genial, pero si no (lo más probable en los negocios en que todo es para ayer) no podrás postular.
Sin embargo, este segundo problema también puede solventarse (en parte) ya que existen muchas herramientas para compensar las partes del stack en las que no eres fuerte. Por ejemplo, desde hace mucho existe Bootstrap para ayudar a los backend a maquetar y hoy también existe Tailwind. Existen frameworks como Laravel, Ruby on Rails, Django, Flask y otros que incluyen motores de plantillas para generar las vistas desde el mismo lugar en que programas el backend.
Existen los ORM para que no tengas que aprender SQL, frameworks y librerías para empaquetar funciones y no escribirlas desde cero. Incluso extensiones y plugins en los IDE y editores de código para ayudarte en el trabajo.
Es decir, que aunque no puedas dominar todas las tecnologías de todos los stacks, si eliges una ruta adecuada existen herramientas para ayudarte lo más posible.
Pero no existe una ruta definitiva porque hay muchos caminos y no podrás abarcarlos todos. Porque querer ser full stack es como entrar a un buffet de come todo lo que quieras
con ganas de acabarte todo para darte cuenta a los minutos que no puedes más y tienes el estómago reventando.
Es mejor ir con calma, escoger tu combinación perfecta de platillos y disfrutar del buffet. Lo mismo con ser full stack, si quieres aprender de todo vas a terminar indigestado, sin saber nada bien, picoteando de aquí y de allá pero sin profundizar en nada. Luego eso se convierte en una pérdida de tiempo al estudiar y en burnout.
Por último, si una empresa busca un programador fullstack, puede pasar una de dos cosas:
- 1. Es una empresa que quiere ahorrarse dinero poniéndote a hacer a ti solo el trabajo de todo un equipo. En cuyo caso no deberías postular.
- 2. Es una empresa organizada que te va a ir moviendo de proyectos, algunos en el backend, algunos en el frontend pero en ningún caso harás tu sólo el proyecto completo y podrás aprender mucho en ese proceso. En ese caso, aunque no cumplas todos los requisitos, deberías postular. El no, ya lo tienes.
Si luego de leer esto blog aún quieres ser un full stack, en un próximo blog te contaremos las posibles rutas que puedes tomar para que no quemarte en el camino.
¿Dónde puedes estudiar para dominar las tecnologías de un Fullstack?
¡En EDteam! Tenemos cientos de cursos 💻 ed.team/fullstack para que comiences o refuerzes tus conocimientos como desarrollador web. Puedes ver las primeras clases gratis y comprobar por ti mismo porque en español nadie explica mejor que EDteam.