La beauté dans l'œil du spectateur

Je développe des applications web depuis longtemps. Un temps très long. J'ai créé mes premières applications Web dans l'environnement Lotus Domino à une époque où le mot "google" n'était pas encore un verbe, et les gens utilisaient Yahoo! Pour rechercher des informations sur Internet. et Rambler. J'ai utilisé Infoseek - ils avaient une recherche plus étroite et une interface surchargée pas si moche comme Yahoo!


Développer des applications, des applications non seulement pour le Web, est un travail créatif. Il est peu probable que quiconque conteste cette affirmation. Et la beauté de la créativité est comme une pratique de la connaissance scientifique - un critère de vérité. Mais si la pratique scientifique est objective et basée sur des mesures, alors la beauté est un sujet subjectif, cela dépend de qui regarde. Je me suis donc demandé, mais qu'est-ce qu'une belle application web pour moi personnellement?



(l'œil sur KDPV n'est pas le mien, l'œil est féminin, mais, à mon humble avis, l'œil féminin sur KDPV est plus approprié que l'œil masculin, car il s'agit de KDPV !)


Sous la coupe, mes propres critères pour lesquels une application web peut être considérée comme belle pour le moment. Présentation très subjective, en raison de mon expérience personnelle. Peut-être que quelqu'un verra mes critères de beauté comme des critères de laideur. Ne soyez pas surpris, vous venez de vivre une expérience différente.


Et puisque vous êtes allé sous la coupe, faites attention dans les commentaires, s'il vous plaît. Après tout, si vous pouvez arrêter de lire un article dès que ce qui y est dit vous semble laid ou même laid, alors, en tant qu'auteur, je dois lire tous les commentaires.


Habitat


Protocoles


Je ne sais même pas si ce critère doit être pris séparément. Les applications Web vivent sur le Web et sont obligées de se conformer aux lois du Web (protocoles). Les principaux protocoles sur le Web sont TCP et IP . De nombreux autres protocoles sont basés sur eux, mais pour les applications Web, je considère que HTTP est le plus important (ou plutôt, son extension HTTPS basée sur TLS ). Autrement dit, une belle application Web est disponible via HTTPS / TLS (en option - via HTTP), et d'autres protocoles (LDAP, RPC, IMAP4, POP3, SMTP, FTP, NNTP, ...) la rendent moins belle avec chacun protocole éventuellement pris en charge. L'application elle-même peut utiliser des ressources externes à l'aide de ces protocoles supplémentaires.


Quant à WebSocket , je n'ai pas assez d'expérience dans l'utilisation de ce protocole avec des applications Web. Il est beau et prometteur, mais je ne peux pas dire à quel point il est stable et pratique.


Navigateurs


Une application Web avec un seul pied se trouve côté serveur, l'autre côté client. Le côté client est le navigateur. Un navigateur moderne fournit beaucoup de choses qu'une application Web moderne peut et doit utiliser à son avantage. Une belle application Web utilise les capacités modernes des navigateurs et n'est pas obligée de fonctionner dans les navigateurs qui n'offrent pas de capacités modernes. Je comprends que les polyphiles sont une mesure nécessaire , mais c'est moche. En fin de compte, non seulement les développeurs devraient suivre le rythme des technologies modernes, mais aussi les utilisateurs et les entreprises.


YaP


Avec les langages de programmation utilisés pour créer des applications Web, tout est très déroutant. Il existe de nombreuses technologies pour le côté client des applications Web qui permettent au développeur de faciliter la création de la triade HTML / CSS / JS (ce que tous les navigateurs modernes comprennent). Mais j'ai déjà eu un contact étroit avec GWT et je le trouve beau quand un développeur voit le code original dans un navigateur, et non le résultat d'une compilation ou d'une transpilation. Par conséquent, l'utilisation de webpack et de produits similaires pour générer du code client, à mon humble avis , est moche. Plus le code exécuté dans le navigateur est similaire au code source créé par le développeur, mieux c'est. Ne croyez pas? Essayez de dévier en production le code créé par GWT.


Il y a plus de liberté côté serveur (Java, PHP, perl, python, C #, Ruby, ...), mais il me semble que c'est beau quand côté serveur et navigateur utilisent un même langage de programmation - JavaScript. Pourtant, le langage détermine la pensée et les équipes partageant les mêmes idées sont plus productives.


Humanité


Une belle application web devrait être utile. Utile, tout d'abord, pour une personne en tant qu'utilisateur final. Par conséquent, je ne peux pas appeler les services Web une belle application Web. Il est difficile pour une personne ordinaire (pas un développeur Web) de le faire. Les services Web sont beaux à leur manière,


Une belle application Web devrait avoir une interface intuitive. Vous pouvez discuter des interfaces utilisateur - c'est une chose plutôt subjective. Mais avec UX, tout est beaucoup plus simple si l'utilisateur ne peut pas utiliser l'application sans le RTFM convoité - une mauvaise UX, une application Web laide. Les plus belles applications web concernant ce critère peuvent être facilement utilisées par des enfants qui ne savent toujours pas lire.


Évolutivité inversée


Il était une fois, des programmes pourraient être transférés sur des disquettes, maintenant sur des lecteurs flash, ou immédiatement téléchargés sur le Web. Copier une application standard et l'exécuter sur une autre machine est une tâche triviale. Avec les applications Web, la situation est quelque peu particulière. Un réseau est un environnement mondial dans lequel il n'est pas nécessaire d'avoir des clones de la même application Web. Un Facebook, Twitter, Instagram, Mail.ru ou Yandex suffit sur le Web. Vous pouvez avoir différentes applications Web dans la même niche thématique, mais avec des publics différents (comme Facebook et Vkontakte, Mail.ru et Gmail, Google Maps et Azure Maps). Des ressources matérielles pour assurer la disponibilité mondiale de ces applications Web sont nécessaires, disons, non triviales .


Je n'ai jamais travaillé avec des applications web d'un tel niveau en tant que développeur et je ne peux pas imaginer comment elles sont organisées à l'intérieur. Pour garantir l'opérabilité de ces applications Web, des équipes de spécialistes concernés et des centres de données distincts sont nécessaires. J'admire la capacité des gens à coopérer à une telle échelle et à créer des produits similaires, mais mon standard de beauté est une application Web qui peut être exécutée sur un ordinateur portable séparé.


Une belle application Web évolue non seulement vers le haut et en largeur (pour les utilisateurs), mais vers le bas et en dedans (pour les développeurs).


"Amphibie"


Deux types d'appareils sont utilisés pour accéder aux applications Web modernes:


  • ordinateurs (ordinateurs portables, ordinateurs de bureau);
  • appareils mobiles (smartphones et tablettes);

Quelque part à l'horizon se profile un autre " Internet des objets ", mais jusqu'à présent.


Les ordinateurs des appareils mobiles diffèrent autant que les créatures terrestres des oiseaux aquatiques. Ce sont des environnements différents et ils imposent des exigences différentes aux créatures (programmes) qui y vivent. Les belles applications Web ne sont pas celles qui ressemblent à des amphibiens , mais celles qui sont dans l'eau comme des poissons, sur terre comme des animaux et dans l'air ( SEO ) comme des oiseaux.


Je considère que l' amphibianisme est laid, c'est comme essayer de s'asseoir sur deux (avec SEO - trois) chaises. Mieux que Fiona de Shrek - un pendant la journée et un autre la nuit. Oui, plus cher. Mais mieux.


Partage croisé


J'ai déjà noté dans le paragraphe "Évolutivité inverse" que la nature globale du Réseau permet d'avoir une seule application web sur la Planète. Par conséquent, chaque application Web doit être au moins quelque peu différente des autres afin d'assurer sa survie. Néanmoins, mes nombreuses années d'expérience avec Magento (le cadre pour la création de magasins de commerce électronique) indiquent qu'il peut y avoir plus en commun entre les applications Web individuelles qu'il n'y a de différences. Une belle application Web ne doit pas seulement être modulaire, elle doit également partager ses modules avec d'autres applications Web. Dans une certaine mesure, cette idée se reflète dans les spécifications de JSR 168 et JSR 286 et des cadres tels que WordPress , Django et le même Magento. Plus le nombre de modules d'applications Web utilisés par d'autres applications Web est grand, plus il est beau de mon point de vue. Le partage croisé vous permet de créer de meilleurs modules et, par conséquent, des applications Web plus stables.


Par module, je ne veux pas dire des bibliothèques comme jQuery ou RequireJS - plutôt, des formations plus grandes, telles que des plugins dans WordPress et Django . Mais pour les bibliothèques, la thèse est également vraie que la large diffusion de la bibliothèque permet de la rendre meilleure et plus stable.


Architecture de Harvard


L'architecture de Harvard , contrairement à l'actuelle balle de Princeton , implique la séparation du code et des données. L'architecture n'a pas décollé, mais l'idée elle-même me semble belle. Surtout pour les applications web. Toute statique (HTML / CSS / JS / Images / ...) est du code. Il peut et doit être mis en cache au moins côté serveur, au moins côté client. Et les données sont REST / JSON (belles) ou SOAP / XML (un peu moins belles). Ou WebSockets / JSON (peut être la meilleure option, mais je n'ai pas essayé).


Localisation


Il y a deux choses qui me tiennent particulièrement à cœur lors du développement d'applications Web: il s'agit d'une interface multilingue et de fuseaux horaires. Je suis moi-même de Lettonie, nous utilisons trois langues: LV, RU, EN. Une belle application Web devrait offrir la possibilité non seulement d'utiliser plusieurs langues dans l'application elle-même, mais également d'augmenter le nombre de langues utilisées avec des ressources externes, telles que Crowdin . Il en va de même pour les modules à partir desquels l'application Web est construite.


Tout est simple avec des fuseaux horaires, dans tous les cas quand on ne sait pas comment traiter la date-heure, faites ceci: tout ce qui est sur le serveur va au serveur et vient du serveur - UTC, tout ce qui est affiché sur le client - selon le fuseau horaire de profil utilisateur. C'est magnifique.


Forge au lieu d'étoiles de la mort


Il était une fois, chaque ville plus ou moins grande avait sa propre forge. Peut-être pas un. Certains sont meilleurs, certains sont pires. Il y avait des maîtres forgerons connus dans le monde entier, et il y avait ceux qui ne venaient d'aucune alternative. Des guerres, des épidémies, des catastrophes naturelles ont déferlé. Certaines villes ont disparu avec la population. Mais la forge restait à vivre. Au lieu des villes disparues, de nouvelles ont été érigées et des forges y sont également apparues.


Regardez maintenant un service comme DNS . Lorsque les serveurs racine se couchent, le monde entier a de la fièvre .


À mon avis, une belle application Web ne peut pas être aussi grande que Facebook ou Mail.ru. Ceci est plus proche de l' étoile de la mort , tant en termes de ressources nécessaires à la construction que de ressources nécessaires au maintien de l'opérabilité. Oui, en cas de destruction de Facebook, l'humanité ne disparaîtra pas, ses fonctions seront rapidement reprises par d'autres applications (le même VK en Fédération de Russie et adjacent, Instagram, Twitter, ...). Néanmoins, enfermer une partie importante de la population de la planète dans une seule application est moche. De plus, en présence d'alternatives beaucoup plus stables (par exemple, des torrents ).


Résumé


Si vous avez lu jusqu'au bout et êtes perplexe - « qu'est-ce que c'était? », Alors je vous exprime ma sincère sympathie. Je ne vous ai pas fait lire ça. J'ai juste essayé de mettre mes pensées en mots pour trouver ceux qui pensent la même chose. Je peux peut-être discuter avec eux de certains aspects de la création de belles applications Web et trouver les réponses à mes questions. Et j'en ai beaucoup.


Merci d'avoir lu.

Source: https://habr.com/ru/post/fr461749/


All Articles