Django es muy muy sólido y versátil, y la gracia es que Python no sólo sirve para aplicaciones web, sino que puedes hacer aplicaciones de escritorio, móviles, data science y obviamente aplicaciones para línea de comando. El ecosistema de Django tiene extensiones para todo y, a diferencia de lo que pasa en Javascript o PHP, la comunidad es bien holluda (hoyuda? ayuda?) y el control de calidad sobre los paquetes tiende a ser mejor. Se mueve más lento que otras comunidades, pero de manera consistente.
Flask es mucho más rápido y es fácil de prototipar, pero es como Express en node , Slim en PHP, Sinatra en Ruby:
en teoría puedes hacer de todo pero en realidad es sólo un router, el resto corre por tu cuenta. Hace un par de años estuve en un proyecto que empecé (fue mi decisión y fue mala) en Flask. Al principio partí rajado, pero cuando la capa de negocios
se volvió compleja Flask no tenía convenciones ni menos integraciones para los modelos. Tienes conectores como el de SQLAlchemy pero éstos intentan replicar en Flask lo que existe en Django. No había solución para mi problema, pero si hubiera estado usando Django hubiera detectado el camino sin salida semanas antes, gracias a que los modelos son ciudadanos de primer nivel.
Actualmente me gano la vida más que nada con aplicaciones hechas en javascript, pero debo decir que la comunidad es como muchos ratones amarrados de la cola. Se mueve como torbellino, pero no avanza en una dirección definida. Si Django es el framework de Python por excelencia, como Laravel es para PHP y Rails para Ruby... no sabría decir cual es el equivalente en javascript.
Hay librerías de front que andan la raja (Vue, React, Svelte) pero no son frameworks. Hay frameworks full stack (Angular, Meteor) pero están muy lejos de marcar un rumbo para el resto del ecosistema y hay frameworks de backend (Loopback, Sails, Adonis) pero el ecosistema apunta solucionar problemas super puntuales (sólo API, luego sólo microservicios, luego sólo funciones serverless...) al punto que hay paquetes como
is-odd que lo único que hace es determinar si un número es par o impar. Es una huevada, pero tiene
medio millón de descargas semanales. Esto no afecta al frontend, que en eso sí Javascript es el rey, porque el browser es el mejor contenedor que se ha inventado: es cliente, es IDE, es debugger. Las librerías de front son dentro de su ámbito hegemónicas y eso salva a todo el resto.
En cuanto a PHP, tengo que decir que el daño que Wordpress le ha hecho a la imagen del lenguaje es incalculable. Efectivamente, wordpress es un software spaghetti y no tienen intención de enderezar el rumbo. Pero sacando wordpress de la mesa, el lenguaje ha avanzado muchísimo en los últimos años y tiene dos grandes frameworks (Laravel y Symfony) que más encima tienen un alto grado de cooperación, gracias a que ambos adhirieron al
Framework Interoperability Group, lo cual indirectamente provocó que la comunidad como un todo se acostumbrara a trabajar con inversión de control y principio de sustitución de Liskov. De nuevo, lo importante es que hay una dirección consistente y una comunidad alineada. Hoy en día weón que publica un paquete fijo tiene en el README.md las instrucciones para Laravel y para Symfony.
El creador de Node.js, Ryan Dahl, lanzó el año pasado (o antepasado?) un nuevo intérprete llamado DeNo, que corre en Typescript pero funciona con Javascript. Deno no ha agarrado vuelo y Dahl yo creo que hasta se gastó su 10% promocionando DeNo. El mismo registro
NPM estuvo al borde de la quiebra hace dos años y Github lo compró por dos chauchas. La tracción sin dirección puede ser peor que el estancamiento. Mientras tanto weones como Fabien Potencier o Taylot Otwell se forran haciendo cursos y convenciones.
Raya para la suma: aprende Django y Typescript. No hablé sobre Typescript y ya me aburrí de escribir.