¿Cómo se elige entre ser un desarrollador front-end y un desarrollador full-stack?

Honestamente, es una cuestión de en qué profundidad quieres entrar y dónde se enfoca mejor tu enfoque.

Conozco pocos desarrolladores de pila completa que sean realmente más que competentes en cualquiera de los niveles de la pila. Eso no quiere decir que no puedan serlo, pero el nivel de conocimiento necesario para entrar en cualquier área del ámbito del desarrollo web puede consumir mucho tiempo … tiempo necesario para lidiar con las curvas de aprendizaje, tiempo necesario para intentar fracasar y intente nuevamente encontrar formas óptimas de hacer las cosas, y el tiempo necesario para regresar y arreglar las cosas a medida que su comprensión de las buenas prácticas se vuelve más sólida en esa área.

Solo en la parte delantera, hay múltiples disciplinas:

  • La experiencia del usuario (interacción humano-computadora … ¿qué hace que una interfaz sea utilizable? ¿Cómo comprometerse y mantener a los usuarios, y darles lo que quieren mientras obtiene lo que necesita de ellos?) Implica no solo habilidades blandas, sino comprensión de varias herramientas construido para diseñar estructuras metálicas y maquetas.
  • Diseño gráfico: uso de fuentes, diseños agradables que funcionan para mejorar la experiencia del usuario y, sin embargo, también se pueden usar en múltiples contextos (como dispositivos móviles), además de las herramientas asociadas del oficio: Photoshop, Illustrator, SVG o incluso Flash.
  • Marcado: ¿qué hace que el HTML sea conciso y fácil de mantener? ¿Qué navegadores admiten estas etiquetas, qué tan estrictamente debo cumplir con el marcado basado en la semántica?
  • CSS: ¿cómo puedo diseñar ese marcado de tal manera que llegue a la audiencia más amplia posible? ¿Cómo trato con múltiples formatos (móvil, web, impresión) mientras mantengo la experiencia central del usuario?
  • Javascript: ¿qué nivel de interactividad se necesita? ¿Cómo hago que funcione entre navegadores? ¿Utilizo un marco o escribo el mío? AngularJS, Handlebars, ¿almaceno datos en el cliente y cómo los manejo?

Cualquiera de los anteriores puede consumir docenas, incluso cientos de horas de aprendizaje. Claro, puede obtener un mínimo de información útil para tratar superficialmente cada uno de esos temas, pero ¿será tan bueno para optimizar Javascript como Douglas Crockford si divide ese tiempo con la lucha libre MongoDB y PHP? Probablemente no.

Eso no quiere decir que no haya valor en pasar tiempo en cada una de esas disciplinas. Vivir en un silo es peligroso, y puedes aprender de las lecciones en cada punto de la pila que te ayudarán con cualquier otro punto de la pila (saber cómo los navegadores de destino procesan las páginas puede ayudarte a determinar qué parte de la página necesita crear en el lado del servidor y cuánto se maneja mejor en el lado del cliente, por ejemplo). La respuesta de Anuradha es una excelente guía sobre dónde es probable que encuentre la mayor cantidad de trabajo para cada tipo de desarrollador … los proyectos más pequeños, los equipos más pequeños, requerirán cierta facilidad con todos los puntos en la pila como una necesidad. Es probable que los proyectos más grandes con equipos más grandes permitan cierta especialización.

El que elija depende en gran medida de los tipos de proyectos en los que le gustaría trabajar, así como en qué partes de la pila le resulten más atractivos y atraigan más. Si está trabajando en un proyecto completo, preste atención a las áreas en las que se encuentra “perdiéndose” en el acto de creación / resolución de problemas. Si descubres que de repente te perdiste el almuerzo porque encontraste en lo que estabas trabajando tan fascinante (diferente de “tan frustrante, NO ME GANARÁ ESTE CÓDIGO” …), entonces podrías regresar y ver de qué se trataba eso que te excitó y te atrajo tanto. Con toda probabilidad, esa área será la que “le hable” y donde probablemente encuentre el trabajo más satisfactorio.

¿Cuándo quieres convertirte en un desarrollador full-stack?
(1) Si desea unirse a una startup o una organización de productos altamente creativa e innovadora, debe ser un desarrollador completo. Porque un desarrollador de pila completa

  • reemplaza a pocas personas redundantes
  • reduce los gastos generales de comunicación y la pérdida de comunicación
  • cuando sabes cómo funcionan otras partes, tomas una mejor decisión en cada paso
  • una persona que tiene el conocimiento de principio a fin, hace que el producto sea mucho más significativo ‘técnicamente’.

(2) Si puede tener la capacidad de comprender, aprender y comprender todas las tecnologías relacionadas con la pila completa.

¿Cuándo decides ser un desarrollador front-end?
(1) Eres súper bueno en diseño, estética, colores y combinaciones de colores.
(2) Eres súper bueno en la experiencia del usuario. Te gusta escribir reseñas de aplicaciones. Sabes cómo un cambio menor puede mejorar la usabilidad.
(3) Se requieren especialistas en organizaciones más grandes. Por lo tanto, si no le gusta la cultura de inicio y la gran rotación, es posible que desee tomar una ruta de especialización.

Aunque se especializa en uno, cualquier organización apreciará su conocimiento de toda la pila. Es bueno tener conocimiento de toda la pila.

En resumen, el desarrollador de pila completa es como un realizador de cortometrajes. Él / ella es todo, incluyendo (uno de los) actores.
El desarrollador front-end es como una función específica como camarógrafo o editor en la realización de películas.

Las líneas se vuelven cada vez más borrosas con marcos como Angular y Meteor. Gracias a NodeJS, un desarrollador front-end ya no necesita aprender otros lenguajes de programación si es competente en JavaScript.

Un desarrollador front-end será un experto en front-end. Un desarrollador de pila completa generalmente tendrá más experiencia en el back-end con experiencia adicional en el frente. Por supuesto, algunos ingenieros de front-end se convierten en ingenieros de stack completo, pero esa no es la ruta más común.

Conozco a los desarrolladores completos que tuvieron que aprender a trabajar con el front end después de frustrarse al encontrar a las personas adecuadas capaces de construir lo que necesitaban. Los marcos como Bootstrap y Foundation lo hacen más fácil, pero un desarrollador competente debe entender por qué trabajan de la manera en que lo hacen en lugar de simplemente aplicar ciegamente las clases CSS al marcado. De manera similar, Moustache y sus derivados, como Manillares, parecen ser simples lenguajes de plantilla, pero puede agregar rápidamente complejidad con código auxiliar escrito en JavaScript. Meteor lo lleva al siguiente nivel con Blaze. Esto es cuando el desarrollador front-end a menudo comienza a involucrarse con el resto de la pila.

hay una pregunta similar que respondí aquí
¿Perdería el futuro si no aprendiera sobre el desarrollo front-end?