¿Qué marco le gusta más a Mayank Singhal para desarrollar una aplicación web?

Resumen

Todo depende de lo que estoy desarrollando y por qué lo estoy desarrollando. Si hay un reloj haciendo tictac, usaré algo que he usado antes; de lo contrario, usaré algo nuevo. Pero no te debe importar.


Lenguajes / Plataformas / Marcos (LPF)

No he usado Rails o Django. He usado web.py para un proyecto de exploración que abarca un par de fines de semana.

He trabajado mucho en PHP, no particularmente porque disfruto el lenguaje, sino porque era mucho más fácil obtener alojamiento compartido que crear una cuenta en un proveedor de PaaS de EE. UU. Esto se debió principalmente a que, si mal no recuerdo, la mayoría de estos proveedores exigieron una tarjeta de crédito con sede en los EE. UU.

En PHP, había experimentado con el viejo y simple PHP, CakePHP y Symphony2. Terminé haciendo más desarrollo en CakePHP porque la documentación era mucho más accesible.

En el lado del cliente, inicialmente había escrito javascript realmente malo – jQuery spaghetti. Las cosas funcionaron, casi como se esperaba, pero tampoco estaba desarrollando nada exigente. Lentamente, a medida que exploraba más, terminé dándome cuenta de lo malos que son mis hábitos de codificación. En parte debido al trabajo que había realizado durante mis pasantías y en parte a través de blogs y conferencias de personas como Douglas Crocford.

Luego, node.js se hizo popular (ya me había enamorado de JS), los proveedores de hosting se volvieron más amigables con los desarrolladores de los mercados emergentes, los recursos se volvieron cada vez más baratos y pude experimentar con más LPF.

Creo que tengo un montón de aplicaciones experimentales / personales que usan Node.js, Go y python. El que más me gusta toma registros creados a partir de un servicio mashup que creé hace al menos un par de años (en PHP, se ha estado ejecutando sin ningún problema importante desde entonces), los comprime y los mueve regularmente (código en Python) y cuando los procesos solicitados registros comprimidos para imprimir gráficos bonitos (código en Node.js). Cada componente creado debido a alguna necesidad particular y para aprender un nuevo LPF en el camino.

En algún punto intermedio, hubo algunas experimentaciones con proyectos de Google App Engine (Java vainilla) y Spring Framework también.

También aprendí Scala (Programación funcional en Scala, Coursera) y probablemente lo usaré para mi próxima aplicación web (el curso no cubrió nada relacionado con la web, pero qué tan diferente puede ser). Y estoy planeando volver a aprender Scheme y usarlo para algo útil también.

Durante el último año, he estado escribiendo JS casi exclusivamente en el trabajo, y uso Closure Compiler sobre él. Me gusta mucho, pero no es algo que usaría para el código frontend de pequeños proyectos personales. He escrito algunas aplicaciones básicas usando Angular.js pero necesito leer mucho sobre esto antes de sentirme cómodo al usarlo durante los momentos de crisis.

Disfruto mucho más experimentar con nuevos idiomas que probar un nuevo marco. Los frameworks a menudo son muy obstinados y requieren bastante tiempo antes de entenderlo; En general, probar un nuevo marco es aburrido.

Meta

Sospecho que cualquiera que haya leído esta respuesta hasta ahora lo estaría haciendo por una de las siguientes dos razones:

  1. Quieren recomendaciones sobre qué LPF elegir.

    No creo que la elección del marco importe mucho. Elegir una opción bien establecida como Django le brinda el beneficio de que hay toneladas de recursos esparcidos por toda la web; El uso de una plataforma más nueva como Golang le dará más experiencia con el lenguaje de programación en general porque ese tipo de discusiones aún son bastante comunes en la comunidad de Golang. Los frameworks PHP serían más fáciles de alojar donde Rails sería más seguro / potente / extensible.

    Se aplicará una lógica similar para los marcos del lado del cliente, como Backbone, Angular, etc. Si le disgusta especialmente JS, es probable que conozca CoffeeScript, Dart, TypeScript, etc. No creo que importe mucho, especialmente si haciendo esto para aprender y no desplegar.

    Si desea implementar algo, le recomendaría que elija en función de 3 factores en orden decreciente de importancia:

    • ¿Qué tan fuerte eres en ese LPF?
    • ¿Qué tan agradable es la comunidad y qué tan extensa es la documentación?
    • ¿Qué tan poderoso es ese LPF?
  2. Su elección de LFP es más probable que afecte solo el ritmo del proyecto. La mantenibilidad del código es solo un problema si no se siguen los principios de diseño recomendados por LPF. Si su elección no es terrible, el rendimiento de la LFP elegida no lo perjudicará un poco en el corto plazo.
  3. Quieren verificar que cuando respondo preguntas sobre temas relacionados, tengo suficiente experiencia en el tema para tomar decisiones informadas

    Realmente no tengo mucha experiencia en el campo. Hacer afirmaciones objetivas sobre los beneficios de un LPF sobre otro requiere experiencia en al menos esos dos LPF, tal vez más. Sería muy poco sincero de mi parte reclamar alguno. Creo que hay una falta de orientación genérica para principiantes absolutos y que una gran mayoría de material se concentra más en lograr que los recién llegados se unan a su campamento favorito de LFP. Solo puedo afirmar que tengo experiencia en estar interesado en todo esto durante unos 5 años (~ 6-7 más, para la codificación en general). Así que toma mis palabras con una gran cantidad de sal.

[Y gracias por la pregunta + A2A :)]