El 11 de marzo de 2015, ¿qué es una pila de software buena / útil para que un desarrollador web aspirante se enseñe a sí mismo?

No voy a estar de acuerdo con tu amigo. No aprendas una pila. En cambio, desarrolle el dominio de un idioma y trabaje para desarrollar una comprensión de los protocolos y sistemas básicos involucrados en su campo. Las pilas van y vienen, cambian rápidamente, y cuando cambias de trabajo durante tu carrera, casi siempre tendrás que cambiar las pilas con las que estás trabajando, a veces incluso dentro de la misma empresa.

Invertir su tiempo en aprender una pila le permite conocer un pequeño subconjunto de cómo se hacen las cosas. Invertir su tiempo en aprender cómo funcionan las computadoras no es tan fácil de aplicar directamente, pero se puede extrapolar hacia una comprensión de cualquier cosa que encuentre en su carrera y proporciona una base sólida que acelerará rápidamente su curva de aprendizaje para cada pila que pueda encontrar.

Si eres completamente inflexible para aprender una pila, te sugiero que primero estudies los patrones de diseño de la arquitectura de microservicios. http://microservices.io/ es un recurso bastante bueno para empezar, aunque no profundiza demasiado en los por qué y para qué. Luego me quedaría con los clásicos, lo que significa una base de datos PostgreSQL o MySQL con una API Flask con un front-end basado en Javascript. Si desea ingresar a marcos más pesados, la opción obvia ya que ya ha comenzado con Python sería Django, aunque creo que se perjudicaría si invirtiera mucho en aprender a usar un ORM sin comprender primero SQL básico .

Dado que dices que planeas ser un chico de back-end, definitivamente querrás repasar tus habilidades de operaciones también. Esto significa tomarse el tiempo para comprender REST, HTTP y HTTP / 2. También significa aprender el entorno y las herramientas en las que confiará para solucionar problemas de su aplicación, así que elija las secuencias de comandos BASH, aprenda git, tcpdump, cURL, netstat, ps, top, sar / systat, grep, awk, lsof y strace . Elija un sistema de gestión de configuración, apréndalo y úselo. Ansible es una buena opción si está trabajando en un entorno pequeño, aunque hay muchos por ahí y cada uno tiene sus propias compensaciones. Comprenda los conceptos básicos de los protocolos de autenticación y cómo funcionan, lea en LDAP, Kerberos y OAUTH. Comience a pensar en la seguridad todo el tiempo y desarrolle buenos hábitos con respecto tanto a su seguridad operativa personal como a la forma en que construye e implementa sus servidores de aplicaciones. Los buenos hábitos comienzan en casa. Aprenda los conceptos básicos de virtualización y contenedorización y cuáles son las compensaciones que conlleva. Comprender la gestión básica de procesos, archivos y memoria de Linux. Aprenda las configuraciones básicas de balanceador de carga y firewall, aprenda HA-Proxy, nginx, IPtables, etc. Aprenda cómo fortalecer un servidor Linux.

Básicamente, considere que ser un tipo de back-end significa que su “pila” es todo lo que no se ejecuta en el navegador web de los usuarios finales. Lo que significa la API y todo lo que hay entre él y el usuario final, así como todo lo que hay debajo. Los sistemas a menudo no se comportan como se espera, y ser capaz de determinar al menos en qué parte del sistema reside un problema es una habilidad absolutamente esencial como desarrollador de back-end. Es muy probable que trabajes con un equipo de operaciones que esté más especializado en el lado de los sistemas de la ecuación, pero ganarás mucho respeto en tu carrera al no tirar cosas por la borda. Hay una gran diferencia entre escribir un informe de problema como “X no funciona y no es mi código” y en su lugar poder decir “Todos los servidores de aplicaciones responden correctamente cuando se curvan directamente, pero la API da una respuesta no válida cuando se enrolla a través del VIP “No veo nada obviamente malo en la configuración de LB”

Hay muchas partes y piezas móviles involucradas en la creación de aplicaciones web, especialmente cuando intenta escalar. La mayor parte del trabajo pesado y el trabajo duro se realiza en el lado posterior de las cosas en grandes aplicaciones, por lo que le recomiendo que se suba al plato. Hay mucho para que aprendas, y creo que el conocimiento general es mejor que el conocimiento específico de la pila, porque si entiendes las cosas en el sentido general y conoces tus herramientas de solución de problemas, puedes resolver casi cualquier cosa específica de la pila con el tiempo suficiente .

La respuesta de Tyler Duzan es útil y bien argumentada, pero estoy de acuerdo con tu amigo en que debes aprender una pila. Incluso si está haciendo principalmente tareas de back-end, es útil poder comprender cómo funcionan los navegadores y cómo se transmiten los datos entre servidores y clientes.

Como ya has aprendido algo de Python, aprendería a usar Django o Flask para construir algunas aplicaciones básicas, incluso si son solo puntos finales API que sirven JSON en lugar de HTML.

La pila específica que probablemente esté buscando es la pila LAMP o la pila LAPP: Linux-Apache-MySQL / PostgreSQL-Python.

Aquí hay un buen punto de partida: Django – Full Stack Python

Puede implementar una pila LAMP en AWS en un par de clics aquí: Pila Django

todo depende de lo que quiera hacer, en qué dirección desea elegir, ya sea orientada al sitio web, orientada a la base de datos o tal vez más en la programación de chips. Todos adoptan enfoques diferentes y, por lo tanto, necesitan pilas diferentes. Lamp es una buena opción si desea programar sitios web … consejo, cada hora que pase en conocer su pila ahorrará tiempo en el futuro. La mayor parte del trabajo de pensamiento ya ha sido realizado por predecesores.

SIGNIFICADO es la palabra en la calle