¿Qué es el desarrollo web moderno?

La respuesta a esta pregunta se puede tomar de muchas maneras diferentes dependiendo de la experiencia y las opiniones del encuestado, y realmente tengo curiosidad por escuchar otros puntos de vista, pero intentaré darte los míos.

TL; DR, el desarrollo web solía ser sobre nuevas formas de representar texto en una pantalla. Ahora se trata de crear aplicaciones y experiencias.

En los primeros días del desarrollo web, los navegadores web solo eran buenos para hacer cosas como mostrar texto e imágenes, y proporcionar un sistema de enlaces a otros sitios web donde se podía leer texto adicional y ver más imágenes. Con bastante rapidez, las compañías digitales descubrieron formas de usar la web para ganar dinero. Las empresas de comercio electrónico, las agencias de publicidad y los medios de comunicación tenían modelos de negocios basados ​​en mostrar imágenes y texto y hacer que hagas clic en suficientes enlaces que se convirtieron en ingresos. Los bloggers vieron lo fácil que fue y decidieron escribir las cosas, colocar algunas imágenes y enlaces alrededor de sus palabras, y exponerse para ver si podían construir un negocio haciendo lo mismo.

Una vez que los navegadores web y los servidores de servicios de fondo se vuelven un poco más sofisticados, un sitio web podría hacer algunas cosas más además de mostrar imágenes y texto. Con la invención de las redes sociales, ahora podrían conectarte con amigos, familiares e incluso extraños con solo hacer clic en un botón. Si bien el front-end de estos sitios todavía solo representaba texto e imágenes, los gráficos sociales que se construían detrás de escena hicieron que el contenido fuera mucho más interesante personalmente. En lugar de solo leer artículos de personas que descubrieron cómo configurar su propio sitio web, ahora puede averiguar qué está pasando con cualquiera que tenga los medios para escribir algunas palabras al respecto.

Pero se está haciendo un trabajo realmente interesante e innovador con la tecnología web que está cambiando el juego por completo. Cosas como WebSockets, WebGL, WebAssembly y WebVR están posibilitando la creación de aplicaciones basadas en la web que rivalizan con la funcionalidad y el poder que anteriormente solo podían haber sido posibles en una aplicación nativa. He escuchado muchas veces que Slack es básicamente “IRC para la web”, y aunque eso es cierto, también es bastante similar al rechazo de personas que dijeron que el iPad es “solo un gran iPod”. Hay algo fundamentalmente diferente en una aplicación cuando su UI y UX son accesibles, incluso cuando la funcionalidad se duplica en su mayor parte en otro lugar.

Dado que los sitios web a los que accedemos en los navegadores se han vuelto mucho más “similares a las aplicaciones” últimamente, los desarrolladores web modernos están comenzando a parecerse mucho más a los desarrolladores de aplicaciones. Necesitan cosas como herramientas de compilación, compiladores y pruebas unitarias, porque el código que escriben está haciendo mucho más que solo mostrar texto e imágenes en una pantalla. Como lenguaje, a medida que Javascript mismo madura y es responsable de algo más que la simple manipulación del DOM, adquiere características de los lenguajes que un desarrollador nativo podría usar. Cosas como las funciones asincrónicas se ven casi idénticas en C #, por ejemplo. ¡Incluso hay una propuesta para que un operador de tubería admita estilos de programación funcionales vistos típicamente en lenguajes como Elixir y F #!

WebAssembly en particular es bastante interesante debido a la promesa de no tener que “tirar” todo el increíble trabajo que se ha realizado en aplicaciones nativas durante años. Actualmente, si desea crear cualquier tipo de aplicación dinámica para la web, debe escribir el código del lado del cliente (léase: navegador) en Javascript. Esto ha llevado a todo tipo de cosas como reproductores de video, editores de fotos y juegos basados ​​en la web que se escribieron directamente en Javascript o se compilaron en Javascript desde otro idioma. El problema con esto es que Javascript es luego interpretado por el navegador como algo que la computadora puede entender. Con WebAssembly, podemos omitir ese paso intermedio por completo y enviar el código que la máquina entiende directamente al navegador.

Entonces, para mí, el desarrollo web moderno se trata de crear experiencias de clase de escritorio como juegos, aplicaciones y experiencias multimedia que se pueden enviar directamente al navegador a través de la web.

¡Pero estas experiencias también pueden reproducir texto e imágenes realmente bien!

En mi opinión, el “desarrollo web moderno”, impulsado por la revolución móvil, equivale a intentar lograr la experiencia del usuario y la utilidad comercial que se espera de las aplicaciones nativas, pero en el entorno del navegador web. El navegador web es en sí mismo una aplicación, por lo que está escribiendo una aplicación dentro de una aplicación, en lugar de directamente sobre el sistema operativo (por ejemplo, Android, iOS en dispositivos móviles, Windows o macOS o Linux en la computadora portátil). Escribir una aplicación dentro de un navegador significa escribir JavaScript, que es el único idioma para el que los navegadores proporcionan un “entorno de tiempo de ejecución”.

Por lo tanto, el desarrollo web moderno implica el uso de JavaScript a un nivel de ambición para el que no estaba destinado originalmente, pero para el cual se está adaptando muy rápidamente. El uso de “frameworks” de JavaScript como React y Angular se ha convertido en estándar porque proporcionan tanta funcionalidad y contexto que la mayoría de los desarrolladores serían incapaces de crear por sí mismos. Por lo tanto, para muchas personas, “desarrollo web moderno” significa escribir aplicaciones web dentro de las API de los marcos de trabajo de JavaScript, y tal vez usar otras herramientas avanzadas de JavaScript (como TypeScript) que también se encuentran “encima de” lo que a menudo se llama “JavaScript vainilla”. ”

Este es solo el lado “frontal” de la ecuación: la aplicación escrita para descargarse en el navegador del usuario y ejecutarse allí. Pero el lado del servidor de la ecuación (‘back end’) también está evolucionando rápidamente. Solía ​​ser que la aplicación del lado del navegador hizo poco más que presentar una interfaz, y el servidor hizo todo, incluso componer el contenido de la página que se está viendo en todos los aspectos. Con el surgimiento de lo que se llama la “Aplicación de página única” (SPA), el lado del servidor simplemente proporciona los datos solicitados por la aplicación “front-end” del lado del cliente, que se ocupa de todos los aspectos de la pantalla. El SPA está impulsado por la necesidad de que el usuario móvil haga un uso mínimo y eficiente de las transacciones de datos con el servidor como sea posible, y permita que la aplicación “front-end” en el dispositivo móvil maneje la mayor parte del trabajo posible. Esto surgió naturalmente en las aplicaciones móviles nativas, que no se ejecutan en el navegador, por lo que el esfuerzo actual es duplicar ese modelo lo más cerca posible con las “aplicaciones web” que se ejecutan en un navegador móvil. El cambio de las aplicaciones nativas (descargadas de una “tienda” e instaladas localmente) a las aplicaciones web que no requieren tal instalación y que pueden vincularse fácilmente (y así descubrirse en los motores de búsqueda) es fundamental y, en mi opinión, irreversible y seguro. Es solo una cuestión de rendimiento de la aplicación web que se pone al día completamente con el rendimiento de la aplicación nativa. Esto sucederá a velocidad warp porque todo en este negocio sucede a velocidad warp, por eso es tan exitoso.

El desarrollo web moderno es muy diferente de lo que vimos hace 7/8 años. Hoy las tecnologías han cambiado y cambiarán una y otra vez.

WebGL es la comida del desarrollador web actual: un sitio web ahora es una aplicación real con cosas dinámicas y un efecto sorprendente.

Quiero vincular mi blog, hablo sobre tecnologías web modernas: http://dailygit.com