La belleza está en los ojos del que mira

Llevo tiempo desarrollando aplicaciones web. Mucho tiempo. Mis primeras aplicaciones web en el entorno Lotus Domino las creé en una época en la que la palabra «google» todavía no era un verbo, y para buscar información en internet las personas usaban Yahoo! y Rambler. Yo usaba Infoseek' — tenían una búsqueda más refinada y una interfaz menos sobrecargada que Yahoo!

El desarrollo de aplicaciones, de cualquier tipo de aplicaciones, no solo para la web, es un trabajo creativo. Es difícil que alguien discuta esta afirmación. Y la belleza en la creatividad es como la práctica en el conocimiento científico: un criterio de verdad. Pero mientras que la práctica científica es objetiva y se basa en mediciones, la belleza es un tema subjetivo, depende de quién esté mirando. Así que me pregunté, ¿qué es para mí una hermosa aplicación web?

La belleza está en los ojos del que mira

(aunque mi ojo no es el de una mujer, IMHO, el ojo femenino en la belleza es más apropiado que el masculino, ya que esto es — belleza!)

Debajo, mis propios criterios de lo que actualmente puede considerarse una hermosa aplicación web. Una exposición muy subjetiva, determinada por mi experiencia personal. Es posible que para algunos mis criterios de belleza parezcan criterios de fealdad. No se sorprendan, simplemente tienen otra experiencia.

Y dado que ustedes han bajado, por favor, sean cuidadosos en los comentarios. Porque, si pueden dejar de leer el artículo en cuanto lo que se expone les parezca feo o incluso horrendo, yo, como autor, tengo que leer todos los comentarios.

Entorno

Protocolos

No estoy seguro si vale la pena resaltar este criterio por separado. Las aplicaciones web viven en la red y deben cumplir con las leyes de la red (protocolos). Los principales protocolos en la red son TCP y IP. Sobre ellos se basan muchos otros protocolos, pero para las aplicaciones web considero el más importante . La mejora del rendimiento de nginx se debe al uso de una arquitectura asíncrona basada en eventos, a diferencia del modelo multihilo. Esto, junto con un alto paralelismo, permite a nginx manejar solicitudes con un bajo consumo de memoria. Esto hace que Nginx sea una excelente solución para servidores web, tanto para grandes como para pequeños volúmenes de tráfico. nginx es una solución madura y completamente documentada, que permite configurar fácilmente la configuración según tus necesidades. Los desarrolladores también utilizan nginx como proxy inverso para (más bien, su extensión HTTPS basado en TLS). Es decir, una hermosa aplicación web es accesible a través de HTTPS/TLS (como alternativa — por HTTP), y otros protocolos (LDAP, RPC, IMAP4, POP3, SMTP, FTP, NNTP, …) la hacen menos hermosa con cada protocolo adicional que se soporte. La propia aplicación puede, mediante estos protocolos adicionales, utilizar recursos externos.

En cuanto a WebSocket, así que no tengo suficiente experiencia usando este protocolo con aplicaciones web. Parece hermoso y prometedor, pero no puedo decir cuán estable y práctico es.

Navegadores

Una aplicación web se encuentra a medio camino entre el lado del servidor y el lado del cliente. El lado del cliente es el navegador. Un navegador moderno ofrece muchas funcionalidades, que una aplicación web moderna puede y debe aprovechar en su beneficio. Una bonita aplicación web utiliza las capacidades modernas de los navegadores y no está obligada a funcionar en aquellos navegadores que no las ofrecen. Entiendo que los polyfills son una medida necesaria, pero no son estéticamente agradables. Al final, no solo los desarrolladores deben mantenerse al día con las tecnologías modernas, también se aplica a los usuarios y a los negocios.

Lenguajes de programación

Con los lenguajes de programación utilizados para crear aplicaciones web, todo es muy confuso. Para la parte del cliente de las aplicaciones web, hay muchas tecnologías que permiten al desarrollador facilitar la creación de la tríada HTML/CSS/JS (lo que todos los navegadores modernos comprenden). Pero en su momento, tuve un contacto estrecho con GWT y considero que es estéticamente mejor cuando el desarrollador puede ver el código original en el navegador, y no el resultado de la compilación o transpileción. Por lo tanto, el uso de webpack‘y productos similares para generar código del lado del cliente es, en mi opinión, poco atractivo. Cuanto más se asemeje el código ejecutable en el navegador al código fuente creado por el desarrollador, mejor. ¿No lo crees? Intenta depurar en producción el código creado por GWT.

En el lado del servidor hay más libertad (Java, PHP, Perl, Python, C#, Ruby, ...), pero me parece hermoso cuando en el lado del servidor y en el navegador se utiliza un solo lenguaje de programación: JavaScript. Al final, el lenguaje define el pensamiento, y los equipos de personas afines son más productivos.

Humanidad

Una bonita aplicación web debe ser útil. Útil, ante todo, para la persona como consumidor final. Por lo tanto, no puedo considerar una aplicación web como bonita los servicios web. Para una persona común (que no es desarrollador web), son complicados. Los servicios web son bonitos a su manera,

Una bonita aplicación web debe tener una interfaz intuitiva. Se puede debatir sobre Interfaz de Usuario‘es algo bastante subjetivo. Pero con UX todo es mucho más sencillo si el usuario no puede utilizar la aplicación sin el anhelado RTFM — mala experiencia de usuario, aplicación web poco atractiva. Las aplicaciones web más bellas en relación a este criterio pueden ser utilizadas fácilmente por niños que aún no saben leer.

Escalabilidad inversa

Hace tiempo, los programas se podían transferir en disquetes, ahora se usan memorias USB o se descargan directamente de la red. Copiar una aplicación común y ejecutarla en otra máquina es una tarea trivial. La situación con las aplicaciones web es algo especial. La red representa un entorno global donde no es necesario tener clones de la misma aplicación web. En la red hay suficientes Facebook, Twitter, Instagram, Mail.ru o Yandex. Puedes tener diferentes aplicaciones web en el mismo nicho temático, pero con diferentes audiencias (como Facebook y Vkontakte, Mail.ru y Gmail, Google Maps y Azure Maps). Los recursos de hardware necesarios para garantizar la disponibilidad global de tales aplicaciones web son, digamos que, no triviales.

Nunca he trabajado con aplicaciones web de ese nivel como desarrollador y no tengo idea de cómo están organizadas por dentro. Para garantizar el funcionamiento de tales aplicaciones web se requieren equipos de especialistas adecuados y centros de datos separados. Me fascina la capacidad de las personas para colaborar en tales escalas y crear productos así, pero mi estándar de belleza es una aplicación web que se puede ejecutar en una laptop independiente.

Una hermosa aplicación web se escala no solo hacia arriba y hacia afuera (para los usuarios), sino también hacia abajo y hacia adentro (para los desarrolladores).

«Anfibios»

Para acceder a aplicaciones web modernas se utilizan dispositivos de dos tipos:

  • ordenadores (portátiles, de escritorio);
  • dispositivos móviles (smartphones y tablets);

Por ahí en el horizonte aparece también el «internet de las cosas», pero por ahora eso es así.

Los ordenadores se diferencian de los dispositivos móviles tanto como los seres terrestres se diferencian de los acuáticos. Estos son entornos diferentes y presentan diferentes exigencias a los seres que habitan en ellos (programas). Las hermosas aplicaciones web no son aquellas que se parecen a anfibios, sino aquellas que en el agua son como los peces, en la tierra como los mamíferos, y en el aire (SEO) como las aves.

Considero que la «anfibiedad» es poco atractiva, es como intentar sentarse en dos (con SEO, tres) sillas. Mejor ser como Fiona de Shrek: durante el día una, y por la noche otra. Sí, es más caro. Pero es mejor.

Intercambio cruzado

Ya he señalado en el punto "Escalabilidad Inversa" que la globalidad de la red permite tener una sola aplicación web para el planeta. Por lo tanto, cada aplicación web debe diferenciarse de alguna manera de las demás para garantizar su supervivencia. Sin embargo, mi experiencia de muchos años con Magento (marco para construir tiendas de comercio electrónico) indica que entre aplicaciones web individuales puede haber más similitudes que diferencias. Una bonita aplicación web no solo debe ser modular, también debe compartir sus módulos con otras aplicaciones web. En cierta medida, esta idea está reflejada en las especificaciones JSR 168 y JSR 286 y en frameworks como WordPress, Django y la misma Magento. Cuantos más módulos de una aplicación web sean utilizados por otras aplicaciones, más bella me parece. El intercambio cruzado permite crear módulos de mayor calidad y, como consecuencia, aplicaciones web más estables.

Por módulo no me refiero a bibliotecas como jQuery o RequireJS, sino más bien a entidades más grandes, como plugins en WordPress y Django. Pero para las bibliotecas también es cierto que la amplia difusión de una biblioteca puede hacerla más cualitativa y robusta.

La arquitectura de Harvard

La arquitectura de Harvard, a diferencia de la actual bal princetoniana, implica la separación de código y datos. La arquitectura no despegó, pero la idea me parece hermosa. Especialmente para aplicaciones web. Cualquier estática (HTML/CSS/JS/Imágenes/…) es código. Se puede y debe almacenar en caché tanto del lado del servidor como del lado del cliente. Y los datos son REST/JSON (hermosos) o SOAP/XML (algo menos hermosos). O WebSockets/JSON (puede ser la mejor opción, pero no lo he probado).

Localización

Hay dos cosas que me preocupan especialmente al desarrollar aplicaciones web: la interfaz multilingüe y los husos horarios. Yo soy de Letonia, donde usamos tres idiomas: LV, RU, EN. Una bonita aplicación web debe permitir no solo usar varios idiomas en la aplicación misma, sino también permitir ampliar el número de idiomas utilizados mediante recursos externos, como Crowdin. Esto también es aplicable a los módulos de los cuales se compone la aplicación web.

Con los husos horarios todo es simple; en todos los casos donde no quede claro cómo manejar la fecha y la hora, hagan lo siguiente: todo lo que está en el servidor, se envía al servidor y viene del servidor — UTC; todo lo que se muestra al cliente — de acuerdo con el huso horario del perfil del usuario. Es hermoso.

Forjas en lugar de «Estrellas de la Muerte»

Hace mucho tiempo, en cada ciudad de tamaño considerable había su propia forja. Quizás no solo una. Algunas eran mejores, otras peores. Había maestros herreros conocidos en todo el mundo, y otros a los que se acudía por falta de opciones. Pasaban guerras, epidemias, desastres naturales. Algunas ciudades desaparecían junto con su población. Pero el oficio de la herrería seguía vivo. En lugar de las ciudades desaparecidas se construían nuevas, y en ellas también aparecían forjas.

Y ahora miren un servicio como DNS. Cuando los servidores raíz caen, todo el mundo se ve afectado.

En mi opinión, una bonita aplicación web no puede ser del tamaño de Facebook o Mail.ru. Eso ya se asemeja más a una «Estrella de la Muerte» tanto por los recursos necesarios para construirla como por los necesarios para mantenerla operativa. Sí, en caso de que Facebook sea destruido, la humanidad no desaparecerá; sus funciones serán rápidamente asumidas por otras aplicaciones (la misma VK en el territorio de la Federación Rusa y adyacentes, Instagram, Twitter, ...). Sin embargo, la concentración de una parte significativa de la población del planeta en una sola aplicación — eso no es bonito. Más aún, con la existencia de alternativas mucho más robustas (por ejemplo, torrents).

Currículum

Si has llegado hasta aquí y sientes perplejidad — «¿qué fue eso?», te expreso mi más sincero pésame. No te obligué a leer esto. Simplemente intenté plasmar mis pensamientos en palabras, para encontrar a quienes piensan de la misma manera. Quizás pueda discutir con ellos algunos aspectos sobre la creación de aplicaciones web hermosas y encontrar respuestas a mis preguntas. Y tengo muchas.

Gracias por leer.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster