¿Cómo debe un ingeniero frontend hacer para aprender backend?

Yo diría que aprenda un idioma, no un marco: intente construir cosas desde cero, no use magia de andamios o herramientas que abstraigan cosas de usted, esto lo ayudará a comprender cómo funcionan las cosas.

Realmente sugiero probar PHP desnudo (sin marcos) primero, ya que tiene la menor cantidad de desconocidos entre su código y lo que se envía al cliente. Puede que no sea el mejor lenguaje y no el mejor para un desarrollo rápido, pero preguntaste sobre aprender cosas, no ignorarlas 😉

Aunque Node.js está basado en JavaScript que le es familiar, no sugiero comenzar con él porque su arquitectura es más excepcional que la regla en el mundo de back-end y puede ser más difícil de entender los fundamentos, pero por supuesto míralo cuando Entiendes las deficiencias de otros sistemas.

Probablemente necesite aprender SQL, así que le sugiero que tome un libro sobre eso y lea la documentación de MySQL.

Luego, aprenda qué es HTTP, lea la especificación completa (puede ser aburrido en algún momento, pero le brinda una amplia variedad de conocimientos) y comprenda cómo puede configurar su servidor y aplicaciones para producir las características que necesita, por ejemplo, encabezados HTTP para redireccionamiento, cookies y etc.

No aprenda métodos de un lenguaje o marco en particular, aprenda cómo esa herramienta usa HTTP para producir resultados.

Luego, aprenda cómo se configuran los servidores web: puede ser útil leer sobre la configuración de Apache.

Luego lea sobre el modelo OSI para protocolos de red y aprenda TCP / IP y DNS (si no los leyó cuando estaba aprendiendo HTTP), intente registrar dominios, configurar sus propios archivos de zona y usar “cavar” para consultar DNS.

Después de todo esto, cree una lista de marcos y herramientas utilizados por varios proyectos y empresas y lea la documentación sobre todos ellos, instálelos e intente trabajar con ellos.

Luego lea sobre la arquitectura del sistema, la escalabilidad y la planificación de la capacidad.

Sugiero construir 10-20 proyectos en el camino, no solo hagas teoría, construyas cosas y eso te ayudará a aprender. E idealmente debería hacerlo con personas que ya saben cosas.

Y no esperes que se haga rápidamente, lleva tiempo dominarlo 😉

Puede leer el código fuente de varios marcos de código abierto y ver cómo se diseñaron. Por ejemplo, mire el código para cosas como: Apache, Firefox, Linux Kernel, Node.js, Rails, Window MFC, Mozilla, Shareaza, Django, Zend, Lift, etc. Trace cómo está diseñado el código y cómo Las piezas encajan entre sí. ¿Cuál es la API principal? ¿Qué tan complicado es el API principal?

También puede buscar patrones de diseño si desea un enfoque formal. Sin embargo, creo que es más útil conocer las cosas básicas como el modelo de publicación / suscripción, los modelos de subprocesamiento, REST y los patrones de controlador de vista de modelo.

Mire el flujo de datos, la pila de redes, los mecanismos RFCS y RPC de red. Analice cómo fluyen los datos en diferentes aplicaciones. ¿Cuál es la latencia en cada paso? ¿Qué recursos se consumen? Desea comprender el flujo y dónde surgen los cuellos de botella. ¿Está en la base de datos? ¿Es de la base de datos al servidor de aplicaciones o en otro lugar? Lo que puede ser paralelo y lo que no.

Creo que la programación de back-end se trata de estructurar cosas para juntar muchas cosas en interfaces simples. Idealmente, debe hacer esto sin replicar el código, que puede ser ayudado por cosas como los genéricos. Puede hacer el bien si puede tener una idea de cómo encaja todo.

El desarrollo de habilidades de backend también mejorará sus front-end, especialmente en JavaScript, comprenderá otros conceptos de lenguaje, arquitectura, manipulaciones HTTP.

Pero como dice Jaime Barriga, es un poco difícil convertirse en un especialista en ambos.

Trabajé como front-end en mis primeros tres años en el mercado de software, ahora tengo unos dos años programando con .Net, aprendí muchas cosas y no puedo seguir todas estas cosas nuevas sobre HTML5, CSS 3, JavaScript compatibilidad de frameworks y navegadores.

Pero no me arrepiento. Porque aprendí más sobre las computadoras en sí mismo. Y tengo curiosidad por todo …

Creo que es mejor que comiences con Python o Ruby, ese es el problema en realidad …

Si eres un desarrollador frontend, probablemente seas bueno en javascript. Aprenda la siguiente pila (backbone, node.js, expressjs, mongo). De extremo a extremo javascript. De esta manera, te enfocas en aprender los conceptos y las ofertas del marco y no en un nuevo idioma

Diría que resiste el impulso de usar node.js. Básicamente es una forma de evitar el aprendizaje de nuevas habilidades: es de interés para los gerentes y los empleadores porque les permite reciclar las habilidades de su fuerza laboral, pero no lo ayudará en lo que respecta al desarrollo personal.

También diría: no piense en los lenguajes de fondo como superiores o más difíciles. Todo lo que debe hacer es enfocarse en aprender la teoría de los sistemas del lado del servidor y cómo funcionan e interactúan, y aprenda a pensar más en la línea de un creador de infraestructura que de un creador de experiencia de usuario. Si hace esto, las razones de las diferencias entre los idiomas del lado del servidor y del lado del cliente le resultarán obvias.

Concéntrese en los conceptos de aprendizaje, NO en los marcos. Tiendo a aconsejar a las personas que aprendan Java en esta coyuntura, no porque el lenguaje sea algo especial, sino porque la mayoría de los textos de Java se ven obligados a enseñarle conceptos y patrones de programación del sistema debido a la naturaleza del lenguaje. Lea un buen texto de Java, y cuando haya terminado, estará listo para asimilar cualquier tecnología del lado del servidor que desee.

Cuando comprenda Java (y probablemente haya leído un buen texto sobre el protocolo http), le aconsejaría que seleccione un marco, y descubrirá que aprender el idioma que viene con ese marco es pan comido.

Dices que eres un ingeniero frontend decente, y conoces algunos backend. Haz lo mismo que hiciste al aprender frontend, que supongo que es práctica práctica.

Pero si fuera yo, me enfocaría en la interfaz y me convertiría en el maldito Frontend Guru y dejaría que alguien más haga el back-end por mí. Contrata a alguien, pregúntale a un amigo.