Que gran pregunta. Me encanta volver a visitar en 5 años, y esperemos que tenga razón.
Antes de comenzar, ¿cómo se define ganar? Sugiero: utilizado por la mayoría de las nuevas empresas para nuevos proyectos.
¿En qué consistió el desarrollo web durante los últimos 10 años? Mucho fue impulsado por aplicaciones SaaS que básicamente consistían en un front-end bien diseñado, con un poco de Javascript en la parte superior, un código repetitivo, una base de datos en el back-end y algunas tareas de back-end (Simplificación, lo sé …).
- ¿Cuál es la mejor manera de realizar un seguimiento de los formatos de solicitud y respuesta JSON en un proyecto de aplicación web grande?
- ¿Qué lenguaje de programación usa Facebook para hacer actualizaciones instantáneas?
- ¿Cuánto tiempo le toma a una empresa contratar a un desarrollador?
- ¿Cuál es la diferencia entre CDN y API?
- ¿Cómo diseñaría un sitio web que maneje mucho tráfico?
Para que esto suceda, las personas confiaron en los marcos para administrar todas las cosas repetitivas, e incluso la interacción de la base de datos. Los rieles brillan aquí, por eso se usó tanto en los últimos 5 años.
La verdad del asunto es para este escenario node.js en este momento es el peor de los tres. Si necesita desarrollar una aplicación SaaS típica, use RoR, o tal vez Python si tiene requisitos específicos. Si tiene un poco más de tiempo en sus manos, puede usar Java, Scala, C #, PHP, lo que quiera, realmente no hace mucha diferencia en el gran esquema de las cosas.
¿Cuáles son algunos de los desafíos que enfrentaremos en los próximos 5 años?
- Tiempo real
- Siempre encendido y actualizable en caliente (piense en erlang como un plano aquí)
- Las excelentes interfaces de usuario venden plataformas / aplicaciones, lo que requiere mucha interactividad del lado del cliente
- Enormes cantidades de datos distribuidos, accedidos y procesados desde múltiples lugares.
- Servicios web conectados (desarrollo por componentes a escala web), el uso de cualquier otra cosa será económicamente inviable.
- Los productos deben crearse en ciclos más cortos.
- Los productos que desean ganar a mayor escala deben proporcionar una plataforma propia para formar parte de este nuevo ecosistema.
- Múltiples clientes diferentes que acceden al mismo backend.
La lista anterior se ve un poco diferente al párrafo anterior. Cada uno representa un problema realmente difícil. Si desea poner eso en un solo marco con la elegancia de RoR, le sería difícil hacerlo bien (y Rails definitivamente lo hizo bien por su caso de uso).
En cambio, node.js toma una ruta diferente, escoge los mejores componentes y mezcla y combina. Pequeños módulos que se pueden combinar sin tener que preocuparse por las dependencias, que se pueden usar simplemente agregando una sola url. Esto mantiene baja tanto la superficie API como la curva de aprendizaje. Esto es posible debido a NPM, probablemente la pieza de software más importante escrita en los últimos 2 años (junto con node.js). Hace que la magia de node.js suceda.
Y también es este sistema de módulos el que hará que node.js sea el ganador en los próximos 5 años. Los desarrolladores no se ven obligados a realizar ninguna forma particular de hacer las cosas, pueden actualizar partes individualmente y crear nuevos componentes rápidamente, evitando la mayoría de los problemas que el desarrollo del software estuvo plagado a lo largo de los años. Además de eso, incluso pueden usar lenguajes más agradables como Coffeescript.
–
Descargo de responsabilidad: Realmente me gustan los tres idiomas / plataformas, mi última aplicación ejecuta una mezcla de node.js y Ruby, y creo que los tres representan logros extraordinarios.