¿Qué tan difícil es pasar de ser un desarrollador front-end a back end?

Ahora es más fácil de lo que solía ser, ya que puede elegir Nodo como su entorno de back-end y llevar consigo gran parte de su experiencia de programación de Javascript, y tal vez incluso algunas de sus bibliotecas favoritas. Esto le ahorra la molestia de aprender un nuevo idioma antes de comenzar.

Dicho esto, incluso con Node, la programación de back-end es un mundo diferente al de frontend. Por un lado, harás poca o ninguna manipulación DOM en el backend. Por otro lado, necesitará repasar partes de Javascript que realmente no necesitaba saber antes, y en la biblioteca de nodos y el sistema de administración de paquetes (NPM). En particular, necesitará una comprensión mucho más sólida de los cierres, y estar preparado para manejar cadenas de devolución de llamada mucho más profundas de lo que normalmente tiene que usar en la interfaz. Si no tiene una comprensión sólida de cómo funcionan los cierres, ahora es el momento de aprender, y si no ha trabajado con las promesas antes de repasarlas también para salvarse de la condenación eterna en el infierno de devolución de llamadas.

En el backend, la mayoría de sus problemas de rendimiento van a girar en torno a la E / S de archivos y bases de datos (que afortunadamente Node está construida desde cero para funcionar realmente bien). Esto es opuesto a estar limitado por las capacidades desconocidas de las máquinas y navegadores de su visitante para realizar cambios en el DOM, Canvas, etc. De hecho, todas las molestias de lidiar con la compatibilidad del navegador y el rendimiento del usuario final básicamente desaparecen en el trabajo de back-end, aunque todavía tendrá que preocuparse por usar su ancho de banda de manera eficiente. En su lugar, es posible que deba lidiar con entornos de servidor muy diferentes si su código se publica para uso público. Para muchos desarrolladores de back-end no es tan preocupante, ya que escribimos código para uso interno en entornos conocidos.

Como desarrollador frontend, estás acostumbrado a que la mayoría de tus datos residan en la memoria, y aunque tienes mucha más memoria para trabajar en un entorno de servidor, tendrás que lidiar con la realidad de que la gran mayoría de los datos que está manipulando viven en una base de datos o en el sistema de archivos y se cargan, guardan y descargan a pedido. La forma en que trabaje con E / S en Nodo será algo similar a AJAX, por lo que no debería ser demasiado difícil de aprender.

Posiblemente, el mayor obstáculo para un desarrollador de frontend típico será que está escribiendo código que debe admitir múltiples usuarios simultáneos. Tendrá que lidiar con los problemas de autenticación y seguridad, y vale la pena hacerlo bien la primera vez. Un paso en falso en el lugar equivocado podría significar una vulnerabilidad que expone a su servidor, su empresa y todos los que usan su aplicación al abuso de recursos, responsabilidad legal y robo de identidad (o peor).

También tendrá que lidiar con muchos problemas relacionados con múltiples acciones casi simultáneas y potencialmente conflictivas. Hay más manejo de errores, comprobación de cordura y condiciones de carrera en juego (por ejemplo, ¿qué sucede cuando el usuario A y el usuario B actualizan simultáneamente el mismo contenido? ¿Qué sucede cuando el usuario A realiza un cambio que afecta los privilegios del usuario B para cambiar una pieza? de contenido mientras está en medio de editarlo?).

Entonces, lo que realmente se reduce a eso es que la transición de la programación es fácil, pero obtener una sólida comprensión del entorno y las limitaciones en las que está trabajando es una gran tarea que requiere estudio, tiempo y experiencia si desea hacerlo bien . Esperemos que no sea arrojado a tu regazo de una vez.

En cuanto a la última parte de su pregunta, no he hecho campos de arranque de código, así que no puedo hacer una recomendación. Honestamente, no pongo mucha acción en “aprender X en 24 horas / durante un fin de semana / en algún programa intenso de bootcamp”. Si afirman que pueden darle una base sólida sobre la cual construir, eso es razonable, pero si afirman que estará listo para hacer un trabajo profesional en la vida real después de que se haya terminado el escepticismo. Con su experiencia frontend, puede esperar comenzar en un nivel de desarrollo interno / junior en el backend y avanzar más rápido de lo que lo haría con cero conocimiento, pero probablemente no estará listo para cambiar instantáneamente de un nivel dado de habilidad frontend a un nivel equivalente en el backend.

Si bien planteas un buen punto en el hecho de que la mayoría del trabajo que harás es front-end, vale la pena señalar que el back-end no es tan complicado .

Ni siquiera necesita mirar la pantalla cuando está programando en JavaScript.

¿Por qué la distribución es tan sesgada?

¿Por qué parece que el 70% del trabajo es front-end y el 30% es back-end? Principalmente porque el front-end tiene opciones reales que realmente debes considerar de verdad . Si va a hacer trabajo de front-end, incluso como desarrollador de pila completa, su elección de (y experiencia con) React, Angular, etc. realmente tiene relación con su capacidad de ser productivo. “Sé que reaccionar” no se traduce como “Entiendo Angular”.

Mientras tanto, el back-end es mucho más manso. “Sé que Express” se traduce como “Puedo recoger Koa bastante rápido”. “He usado un ORM y entiendo que MongoDB” se traduce como “Puedo recoger Mongoose”. Como desarrollador de back-end de JavaScript, la única pregunta real que otros equipos realmente pueden preocuparse es su enfoque preferido para el “infierno de devolución de llamada” y si puede mantener su código ordenado o no.

¡Pero quiero centrarme en el back-end!

Entonces haz eso. Una vez más, no puedo hablar por Dev Mountain en particular, pero definitivamente había maneras en las que podría enfocar sus esfuerzos en el back-end en Hack Reactor. Cuando comenzaste a incluir servidores en tus sprints, puedes asegurarte de hacer cualquier tarea adicional que se oriente alrededor de esas implementaciones de servidor. Durante la fase de su proyecto, podría concentrarse en configurar y administrar las opciones de su servidor / base de datos.

Dicho esto, advertiría que no se cierre demasiado en ningún lado específico de la pila. Si bien no optaría agresivamente por roles de “pila completa”, definitivamente es ventajoso ser flexible sobre los roles que puede desempeñar.


¿Te gustan mis respuestas? ¡Sígueme! ¿Tener preguntas? ¡Pregunta en los comentarios!

Creo que si estás comenzando desde cero, lo más importante es concretar los conceptos centrales de CS (informática). Ahora, si cuando dice front-end, quiere decir solo HTML / CSS, entonces esto será un poco difícil porque no necesariamente tendrá ningún concepto de bucles (para, while, etc.), condicionales (declaraciones if / else) , funciones, asignación, funciones o muchos de los otros conceptos necesarios para el desarrollo del backend.

Sin embargo, si el plan de estudios también incluye Javascript y tiene la oportunidad de jugar con esos conceptos de programación y puede obtener una comprensión sólida de los conceptos básicos, puede ser una buena transición hacia el desarrollo del backend de aprendizaje. Obviamente, JS hace muchas cosas diferentes de lenguajes como PHP, Ruby o Python, pero si tiene esos conceptos centrales de CS, entonces solo está aprendiendo una nueva sintaxis para el idioma que desee aprender.


Tutorial de Ruby: aprende los conceptos básicos del lenguaje Ruby en tu navegador.

Tutorial de Python: Aprenda Python – Tutorial interactivo gratuito de Python

Tutorial PHP: PHP

Puedo decir que esto es 2 habilidades diferentes.

Interfaz

Cree un diseño de sitio web o diseño de software que sea fácil de usar. Esto es muy importante, porque si el usuario no sabe cómo usar su aplicación web, básicamente, puede abandonar el sitio web.

Backend

Pensamiento lógico. Siempre se trata de otra cosa. Si el usuario hace clic en este botón de registro, insertará un registro en la base de datos, si el usuario compra y realiza el pago, inserte el registro en la base de datos.

Si te encanta pensar desde Az, cada pequeña cosa, si te gusta pensar en todo esto, cambiar al backend es muy fácil.

Si prefiere gráficos, visual, entonces el front end puede ser más adecuado para usted.

Hmmm

Ahora, por experiencia, fue bastante fácil para mí porque anteriormente conocía Python antes de comenzar a aprender back-end, por lo que aprender Django fue pan comido.

Ahora, porque usted dijo que es un desarrollador front-end, supongo que tiene conocimiento de JavaScript, por lo que si comprende los conceptos básicos de JavaScript (si las declaraciones, funciones, bucles, variables, etc.), le recomendaría que vea un Node.js Por supuesto, en un sitio web como Udemy. Hay muchos cursos excelentes de desarrollo de back-end que son muy fáciles de entender y comprender.

Recuerde, si un niño de 13 años puede hacerlo, ¡usted también puede hacerlo!

¡Buena suerte!

¡Los verdaderos desarrolladores frontend con una comprensión del desarrollo del backend son altamente empleables! Es probable que sea más fácil conseguir un trabajo o un freelance como programador frontend que un backend con poca experiencia. La curva de aprendizaje será un poco menos paso como una interfaz y aprenderá muchas cosas útiles a tener en cuenta si cambia. Uno de mis pevs favoritos es que los programadores de backend no se preocupan ni entienden por los desarrolladores frontend y el trabajo termina siendo manejado muchas veces. Además, tener un desarrollador de back-end con experiencia frontend es fantástico ya que la mayoría de ellos no tienen ni idea de mi experiencia. Tener esa experiencia frontend lo convertirá en un activo. Una vez que está ganando dinero, el mejor lugar para aprender es en el trabajo. Probablemente estará apoyando o tendrá un mejor acceso a un codificador de back-end de la vida real si está trabajando. Si complementa esto con algo de aprendizaje autodidacta y en línea, estará en llamas y ganará mucho dinero en poco tiempo.

Actualmente soy un desarrollador frontend sólido (lo cual es bastante ridículo decir, porque mi experiencia es de solo 3 años), sé (hasta cierto punto, por supuesto) que puedes decir casi todo “nuevo y brillante” (para aplicaciones normales, sin gráficos y etc.): paquetes populares, hasta características de etapa 1, React / Vue / Angular / Cycle, todos estos sistemas de gestión de estado, como Redux / Mobx / Rx y otros, CSS con css-next, etc. También jugué con ClojureScript y Elm, y aunque parece genial, realmente no lo veo como una opción sólida para apostar.

La cosa es que me siento atrapado. Los nuevos marcos surgen todos los meses, muchas personas en la comunidad JS tienen una comprensión bastante baja de CS y, por lo tanto, el nivel de discusión parece bastante miserable. Además, realmente no quiero seguir el ritmo de la interfaz y quiero aprender algo más sólido. No es tan sólido como la programación del sistema, pero creo que el back-end podría ser una buena opción. Pero la disponibilidad de plataformas es asombrosa, y si bien jugué un tiempo con Elixir y Clojure, siento que debería apostar por Python y Go. Quiero obtener un idioma (s) versátil (lo sé, no es una buena idea seguir con un solo idioma, pero necesito aprenderlo durante el año; también me gusta moverme entre países, por lo que debería ser en demanda en general en Europa.

Entonces, ¿qué puede recomendar como un lenguaje de selección rápida y qué es lo mejor para familiarizarse con todo el ciclo: desarrollo, prueba, implementación en la nube, monitoreo, etc. (Solo rasgué la superficie en todos estos temas, así que definitivamente necesita solidificarlo). Me estoy inclinando hacia Python / Go (escribí una pequeña API para mi proyecto paralelo en Go).

En lugar de elegir backend, te recomiendo que te esfuerces por ir a la pila completa. Aprenda a implementar una solución de principio a fin. Si un chico le pide que cree un programa de chat, debe saber cómo configurar el proyecto semilla de pila completa de arriba a abajo, de modo que cuando otros desarrolladores se incorporen, simplemente le agreguen funciones.

Cualquier cosa más allá de este punto es solo un proceso constante y minucioso de mejora de la programación dinámica de la vida real. Usas tu experiencia de programación pasada; las lecciones y alegrías para contribuir a los desarrolladores que te rodean.

More Interesting

¿Necesito saber cómo administrar el bastidor físico del servidor para convertirme en un desarrollador de back-end?

¿Cuáles son algunas de las habilidades de configuración y desarrollo de servidores que necesito aprender para convertirme en un desarrollador de back-end?

¿Qué son los términos front-end, back-end, del lado del cliente y todos los demás términos relacionados en el desarrollo y administración web? ¿Qué quieren decir?

Cómo practicar el desarrollo web sin un amplio desarrollo frontend (enfóquese en el backend sin invertir semanas en el frontend)

¿Cuáles son las otras mejores opciones de IDE que NetBeans para desarrollar con Java?

¿Por qué casi todos los bootcamps enseñan Ruby on Rails y no PHP para la programación de back-end?

¿Qué es mejor aprender a través de una programación dinámica de front-end de clase o de back-end?

¿Los desarrolladores web tienen que dar presentaciones?

Si AngularJS es el front-end para el desarrollo, ¿cuál sería la mejor tecnología de back-end?

¿Cuál podría ser el mejor enfoque para un principiante de desarrollo web para aprender programación de back-end?

¿Qué es front-end y back-end, y qué idiomas especifican a qué final?

¿Qué es un lenguaje de fondo?

¿Cuáles son los mejores idiomas de código abierto (front-end y back-end) para la plataforma de reserva de autobuses en línea como megabus.com?

¿Qué es mejor para el desarrollo web de back-end: PHP, Python o Ruby?

¿Cuál es la arquitectura de back-end de FoodPanda?