Como principiante con back end, ¿qué debo aprender?

Lo más importante que puede aprender es resolver problemas.

No es un framework o un lenguaje de programación. Si bien, hay algunas pilas nuevas o antiguas probadas que vale la pena echarle un vistazo.

Le ofreceré contexto y consejos desde la perspectiva del desarrollo web. Sin embargo, esta respuesta se aplica a cualquier tipo de desarrollo de software.

¿Cuál es el problema que los desarrolladores de back-end están tratando de resolver?

  • Servicio de solicitudes de contenido generado dinámicamente o estático.
  • Servir solicitudes para recuperar información.
  • Servicio de solicitudes de información persistente.
  • Servir solicitudes para modificar o realizar acciones complejas en información persistente.
  • Atiende solicitudes para iniciar otros programas o flujos de trabajo en otro sistema para hacer el trabajo.

Servir esto, servir eso: creo que está claro por qué se llaman servidores web.

Por contexto, la web comenzó como algo más simple: las personas golpeaban una URL y esperaban que algún contenido apareciera en su navegador. Un servidor web devolvería un archivo HTML. Cosas bastante básicas. Los servidores web realmente no necesitaban mucho más que devolver simples archivos HTML.

En los primeros días, esto se logró ejecutando un programa en una computadora que siempre escuchaba en un puerto (80) las solicitudes, principalmente el servidor web Apache. Le diría a Apache en qué carpeta estaban almacenados sus archivos HTML y luego los colocaría en dicha carpeta (index.html era la página de inicio convencional). Ahora podemos ir a www.cats.com para cargar su index.html. Su página web podría vincularse a sus otros archivos HTML, sitios web o incluso a una imagen en www.cats.com/images/funny_cat.jpeg para obtener una imagen de gato en su carpeta de imágenes.

Poco después, las cosas se pusieron un poco más complicadas. Toma Quora por ejemplo. Quora necesita crear cuentas, guardar preguntas y respuestas, configurar asignaciones entre preguntas y respuestas, cargar respuestas, generar feeds, generar estadísticas para los escritores, y así sucesivamente. Un servidor web necesitaría ejecutar una secuencia de instrucciones para lograr esto. ¿Cómo podemos hacer todo esto?

¡Presentamos CGI! ¡Un punto de entrada a su servidor web para manejar solicitudes ejecutando shell, Perl, PHP, Python o cualquier script que desee! Ahora tiene un servidor completo que hace lo que sea que programe. Las posibilidades de los sitios web se volvieron infinitas. ¿Necesitas autenticación y usuarios? Fácil, escribe un guión para hacer eso. ¿Necesita cargar imágenes, desarraigar una publicación, cargar algunos cuadros y gráficos? Fácil, escribe un guión para eso.

Con el tiempo, configurar nuevos servidores web se volvió tedioso. Todos y sus madres estaban escribiendo guiones para resolver los mismos problemas. Fueron escritos en diferentes lenguajes de programación en todo el lugar. Funcionalmente, todos hicieron lo mismo. No funcionalmente (velocidad, seguridad, disponibilidad, reutilización, interoperabilidad) todo el mundo intentaba hacerlo más grande y mejor. Más pronto que tarde, los desarrolladores se dieron cuenta de que no era sostenible seguir repitiéndose. Avancemos rápidamente hasta el día de hoy, ahora tenemos protocolos web, estándares, bases de datos, marcos y pilas de desarrollo.

Eche un vistazo a aquí: Lenguajes de programación utilizados en los sitios web más populares: Wikipedia. Estos son los más populares, pero hay muchos más. La conclusión es que todos están construidos de manera diferente . Sin embargo, lo que todas estas empresas tienen en común es que construyeron sus arquitecturas para resolver problemas. Aprovecharon las herramientas que mejor les ayudarían a resolver sus problemas de forma rápida, más fácil y con el futuro en mente. No se limitaron a uno simplemente porque estaban familiarizados con ellos. Y si lo hicieron, dieron un paso atrás y echaron un vistazo a la imagen más grande.

Como aspirante a desarrollador de software, ya sea front-end o back-end, los problemas que enfrentará evolucionan constantemente. No hay un marco o lenguaje de “talla única” que pueda usar. En su lugar, utiliza el que le ayuda a resolver el problema en cuestión.

Como desarrollador de software, puedo ofrecerle los siguientes consejos:

  • Siempre defina el problema con claridad. Si no puede hacer esto, entonces estará trabajando sin rumbo. Primero descubra qué desea construir, luego elija las herramientas que mejor se adapten al trabajo después.
  • Arrancar a toda velocidad. Aprenda un marco que lo ayuda a activar un servidor web rápidamente. Todos son más o menos lo mismo en este momento de su carrera. Incluso un simple servidor HTTP Python puede hacer el trabajo.
  • Mantenga una mente abierta y siempre haga preguntas. Ninguna herramienta es mejor que otra en todos los aspectos. Depende del problema en cuestión. Pregunte por qué una herramienta es mejor que la otra. Del mismo modo, pregunte por qué una herramienta no es tan buena como la otra.
  • Piensa en cómo va a crecer. No elija una herramienta que lo limite.
  • Aprenda estándares, patrones y mejores prácticas. No se concentre en aprender la sintaxis y las configuraciones de un marco que pronto estará desactualizado. Como desarrolladores de software, operamos en un entorno acelerado, en constante cambio y en constante mejora.
  • No aprendas un marco o un idioma solo por el marketing tu mismo. Aprender la herramienta más nueva y genial es divertido y todo, pero usted quiere estar en el negocio de resolver problemas.
  • Cuando se enfrenta a un problema, uno de sus mejores recursos y punto de partida es la solución de otra persona. Incluso puede ser la mejor solución que existe hoy en día. Aproveche, vea si puede ampliarlo, vea si hay una mejor manera de hacerlo.
  • ¿Quieres saber qué hay ahí fuera? Vea productos en Amazon Web Services (AWS): Cloud Computing Services o Microsoft Azure: Cloud Computing Platform & Services. Estos tipos están aquí para hacernos la vida más fácil. Ellos hacen todo el trabajo pesado para que podamos centrarnos en nuestros propios problemas.

Si puede definir claramente los problemas que está tratando de resolver, el lenguaje o los marcos se colocarán de forma natural. Si no tiene otra opción, los estándares, patrones y mejores prácticas serán sus mejores herramientas para resolver el problema.

Ningún lenguaje de programación “no es bueno para principiantes”, pero aprender lenguajes de programación no es bueno para principiantes. Primero debe aprender a programar (analizar un problema para encontrar una solución).

Ver Introducción a la informática.

Un marco para probar sería Spring. Usas Java para Spring. Spring Boot es una forma más rápida de comenzar.

Si conoces a Ruby, podrías usar Rails.

Si conoce Python, Django es una opción, pero menos popular.

Si elige Nodo, mire Express. Es una forma más rápida de iniciar un servidor pequeño.

Si se va a centrar en el desarrollo de backend, conoceré firmemente las tecnologías de su base de datos (SQL, MongoDB, etc.), construyendo un buen modelo con su ORM y aprendiendo cómo probarlo. Cometí un gran error postergando eso por demasiado tiempo.