Hay cierta controversia con el tópico «Fullstack«, pero quiero dar mi opinion.
Por suerte o por desgracia, no podemos poner en un conjunto, elementos con propiedades diferentes. Pero qué coño quieres decir ?. Sencillamente, depende del contexto, las propiedades del elemento cambian.
Pongamos un ejemplo. Una empresa startup, necesita hacer un MVP, por lo cual, contratan a una persona para el desarrollo. Aquí probablemente estemos hablando de una persona que esta haciendo un trabajo de fullstack.
Por otro lado, el trabajo de esta persona, no sera algo especializado ni en front ni en back, sera un perfil que podrá desarrollar, ambas partes sin ser de una calidad destacable, sera aceptable, para un MVP.
Aspiraciones o percepción de un Fullstack
Seguramente pueda existir un perfil que cumpla ambas partes, pero no creo que sea algo que se pueda aprender en un bootcamp o a corto plazo de manera accesible a todo el mundo. No puedo descartar la posibilidad o la existencia de alguien por encima de la media que tenga esta capacidad.
Entonces, la aspiración de ser genérico (Fullstack) y concreto (especialista), al mismo tiempo, suelen ser excluyente y por lo tanto hay que ser consciente de que se esta contratando. Muchas empresas creo que tienen la percepción que un Fullstack, puede hacer lo mismo que un front y un back y en muchos casos no es así.
Roadmap Front
He visto roadmaps mas extensos que este, pero puede ser suficiente para ilustrar, que quiero decir. Fuente: dev.to
Roadmap Back
Aqui, dependera del lenguaje y la profundidad que se necesite para desarrollar en el. He buscado en la misma fuente, para backend y en este roadmap, sale lenguajes bastante asequibles para cualquiera. dev.to
Roadmap DevOps
Esta parte esta mas asociada al back, que al front en el caso de ponerla en alguno de los dos roadmaps. Pero no podemos obviar que es parte del proceso a mayor o menos medidas. dev.to
Conclusion
Es probable, que alguien pueda hacer un proyecto en solitario y que funcione ?. Por supuesto.
Pero ese proyecto:
- Tendrá la suficiente flexibilidad para que alguien lo escale ? o bien por negocio o por requisitos del sistema ?
- Sera visualmente aceptable y compatible con todos los dispositivos o los target
- Podrá soportar un desarrollo ágil ?
- Tendrá estructura o una arquitectura bien definida ?
- Dependerá de terceros y tendrá mecanismos para tener un SLA decente ?
- Y lo mas importante, alguien a parte del creador podrá desarrollar en el ?
Seguramente no a no ser que dediques una vida entera y vayas cambiando de especialidad. Puedas cumplir muchos o todos los puntos.
Pero sinceramente igual que la medicina hay medicos de cabecera y especialistas. En la programación sucede lo mismo. Alguien generalista puede ayudarte, pero si el problema va mas allá, deberá derivarte a un especialista (front/back)