Quiero hacer un cambio de carrera en desarrollo web especializado en el back-end. ¿Qué habilidades debería estar adquiriendo para hacerme más valioso?

Hay un par de cosas que necesitarías para sobresalir en el desarrollo de backend. Estoy destacando algunos aquí que ahora mismo están en mi cabeza:

  1. Lenguaje de programación: elija un idioma que le resulte cómodo para programar. Php, Java, Python, Javascript / nodejs son algunos ejemplos.
  2. Base de datos: comprenda algunos modelos básicos de bases de datos y cómo realizar operaciones CRUD básicas en su base de datos utilizando el lenguaje de programación de su elección.
  3. Configuración básica del servidor para ponerlo en marcha. Compruebe qué entorno de servidor se adapta mejor a sus necesidades de programación, como apache / nginx para PHP, netty / tomcat / glassfish para java o tornado, cherrypy para python.
  4. Gestión de base de código. Entienda un poco acerca de cómo administrar su base de datos a través de tecnologías de administración de código como CVS, git, etc. Esto le llevará un largo camino para comprender cómo trabajar en equipo.
  5. Otros: hay algunas otras habilidades que podrían ser útiles cuando eventualmente progresa con sus habilidades como desarrollador de backend, como cómo manipular respuestas http, hacer integraciones basadas en REST / Soap, trabajar con marcos y módulos adicionales como ORM, OAuth, etc.

El desarrollo del backend requiere un poco más que solo aprender el lenguaje de programación. Como desarrollador de back-end, debe intentar centrarse más en las técnicas en lugar de limitarse a las sintaxis y ecosistemas específicos del idioma o la base de datos. Intente comprender las técnicas comunes básicas y luego trate de investigar cómo implementarlo en un entorno específico. Confía en mí, esto te llevará mucho más adelante como desarrollador de backend que ser etiquetado como desarrollador php o desarrollador java.

Buena suerte.

Bueno, sería bueno saber un poco sobre sus antecedentes, pero supongamos que no sabe nada sobre computadoras o programación de antemano.

El primer paso sería llevarlo a un nivel decente en algún lenguaje de programación. Sugeriría Python o Ruby, ya que son bastante amigables para principiantes y tienen excelentes marcos de back-end como una ventaja. Comience por hacer una programación de propósito general en estos idiomas; puede ser una buena idea seguir algún curso en cualquiera de estos idiomas. Por otro lado, debe aprender tanto sobre computadoras y programación en general. Es una tarea desalentadora, pero aprenderá algo nuevo todos los días, y eventualmente las cosas comenzarán a tener un poco más de sentido. Lo más importante es que estás interesado en aprender sobre estas cosas. Después de conocer los conceptos básicos, comience a seguir los tutoriales de Django o Rails y experimente con ellos.

No creo mucho en los planes de estudio rígidos y, en mi opinión, debes estudiar las computadoras y la programación en el orden que te motive. Simplemente lea http://www.stackoverflow.com o Hacker News todos los días y lea cualquier cosa que parezca interesante. No te frustres si no entiendes todo al principio. Simplemente expanda su vocabulario para que tenga al menos una leve idea del tema cuando alguien deje algunos términos elegantes en la jerga técnica. Recuerde que el aprendizaje es un proceso iterativo.

Una vez que esté lo suficientemente cómodo con sus habilidades de programación y conocimiento de CS para poder escribir sus propias aplicaciones web, es hora de comenzar a pulir esas habilidades. Probablemente quiera saber mucho sobre bases de datos: aprenda algunas tecnologías SQL y NoSQL, cuáles son sus diferencias y compensaciones. Aprenda algunas cosas arquitectónicas de alto nivel para obtener un buen control sobre cómo diseñar un esquema de base de datos de trabajo y cómo ordenar sus archivos. Aprenda sobre la seguridad de la información. Aprenda a usar sus herramientas: modifique su entorno de desarrollo para que pueda trabajar con el mayor esfuerzo posible. Pruebe algunos idiomas diferentes: pruebe algo escrito estáticamente, algo de procedimiento, algo OO, tal vez incluso algo puramente funcional. Vea cómo se siente el desarrollo de backend en Node.js vs Django o Rails. Aprenda a usar Git y comprenda los principios básicos de la arquitectura de software. Aprende a diseñar APIs. Aprende a escribir código limpio y esbelto. Aprenda y use las mejores prácticas. Y así.

Hay demasiadas cosas en CS para que una persona aprenda en la vida. Mi consejo es seguir el camino que te interesa. Comenzar a programar es la parte más difícil porque escribir ‘¡Hola Mundo!’ Las aplicaciones no parecen enseñarle nada sobre backends complejos. Sin embargo, solo sigue programando y leyendo y eventualmente llegarás allí.

TL; Dr ser un poco un poco de todos los oficios en CS y experiencia en bases de datos, marcos de back-end y seguridad de la información.

Este es un camino largo y agotador, pero puede ser bastante gratificante.

Primero, sepa cómo almacenar y acceder a bases de datos. Aprenda SQL, comprenda cómo funciona un RDBMS y cuáles son sus limitaciones. Aprenda NoSQL, los diferentes enfoques y las ventajas y desventajas de cada técnica.

En segundo lugar, comprender las estructuras de datos. Los algoritmos no son tan importantes hasta más tarde, pero las estructuras de datos que usará todos los días. Su trabajo es pasar los datos de manera representativa. Aprenda sobre el estado y cómo evitarlo, entienda las consecuencias de los subprocesos múltiples y cómo evitarlos. Asegúrese de estar al menos familiarizado con los conceptos de REST (Representational State Transfer).

Al menos tenga alguna comprensión de lo que significa ser un servidor, un usuario final, un consumidor intermedio o un editor. Esto incluye aprender los temas relevantes sobre el sistema operativo UNIX, Windows y más. Aprenda también sobre mensajes, mensajes entre pares y publique modelos de suscripción. Piense en ellos en contexto sobre cómo funciona un sitio web o cómo podría funcionar. También aprenda sobre los registros, dónde encontrarlos, cómo leerlos, cómo usarlos para el diagnóstico y cómo escribirlos.

Asegúrese de saber y sentirse cómodo al menos en Javascript (para el front-end), un lenguaje de secuencias de comandos (para la creación rápida de prototipos o desarrollo; Python, PHP, Groovy, etc.) y un lenguaje “real” como java o C ++, para cuando ha superado su profundidad y está haciendo cosas que ningún programa basado en la web debería hacer.

Obtenga información sobre Amazon Web Services (AWS) y familiarícese con cómo usar, aprovisionar y optimizar el aprovisionamiento y los recursos en la nube. Esto incluye aprender sobre cosas como Elastic Load Balancers, Virtual Private Cloud y otras técnicas. Esto se vuelve más y más importante cada día.

Crédito adicional : conozca los diez principales de OWASP y sepa cómo NO hacerlos. Estas son las cosas que hacen que las aplicaciones web sean inseguras y los objetivos de los usuarios malintencionados.
OWASP Top Ten Cheat Sheet

Todo en esta lista lo convertirá en un ingeniero de software del servidor muy, muy empleable, y en general es un placer trabajar con él. Esto también llevaría al menos de 5 a 7 años para alcanzar una profundidad decente, por lo que le recomiendo que elija uno o dos y comience allí.

Las habilidades sociales necesarias para transferirse a una empresa donde existe una clara distinción entre los desarrolladores de FE y BE, de lo que se percibe como un desarrollador de BE.
Esas empresas tienden a ser más grandes, más organizadas y burocráticas, por lo que necesitará aún más habilidades sociales para navegarlas de manera efectiva.

More Interesting

¿Por qué la mayoría de los CTOs o VPs de desarrolladores de back-end de ingeniería pueden un desarrollador de front-end asumir un papel de liderazgo en una empresa tecnológica?

¿Cuál es el propósito de usar RPC en el backend?

En cuanto al conocimiento, ¿qué te hace un buen desarrollador de back-end?

¿Cuánto desarrollo front-end puede ser realizado por no ingenieros o programadores?

¿Qué es el desarrollo web real? ¿Alguien puede explicarme brevemente sobre todos los idiomas de back-end y front-end? ¿Qué idiomas se utilizan en front-end y back-end? ¿Cuáles son los usos y cómo puedo aprenderlos y en qué secuencia?

Cómo convertirse en un desarrollador backend rudo

¿Qué puedo hacer si el back-end de mi proyecto actual está lleno de exploits?

¿Es posible que uno sea muy bueno tanto en desarrollo web front-end como back-end?

¿Cuál es el back-end del sistema en la nube Meraki de Cisco?

¿Por qué los desarrolladores de back-end hacen que los desarrolladores de front-end se sientan insignificantes?

¿Por qué Google cambió su política original en '20% de tiempo '?

¿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?

¿Cuáles son los beneficios de aprender tanto la programación back-end como la programación front-end?

¿Es una pérdida de tiempo aprender el desarrollo frontend porque casi todos los mejores graduados de CS están trabajando en backend?

¿Es node.js la razón por la que vemos una disminución en otros idiomas de back-end?