Piękno w oczach patrzącego

Od dawna zajmuję się tworzeniem aplikacji webowych. Bardzo długo. Moje pierwsze aplikacje webowe w środowisku Lotus Domino tworzyłem w czasach, gdy słowo „google” jeszcze nie było czasownikiem, a do wyszukiwania informacji w Internecie ludzie używali Yahoo! i Rambler. Ja korzystałem z Infoseek— mieli oni zawężające opcje wyszukiwania i znacznie mniej chaotyczny interfejs niż Yahoo!

Tworzenie aplikacji, wszelkich aplikacji, nie tylko webowych — to praca twórcza. Mało kto podważy to stwierdzenie. A piękno w twórczości jest jak praktyka w naukowym poznaniu — kryterium prawdy. Ale jeśli praktyka naukowa jest obiektywna i oparta na pomiarach, to piękno jest kwestią subiektywną, zależną od tego, kto patrzy. Postawiłem więc sobie pytanie, co dla mnie osobiście stanowi piękną aplikację webową?

Piękno w oczach patrzącego

(na KDPW nie mój wzrok, to spojrzenie kobiety, ale, IMHO, żeński wzrok na KDPW jest bardziej odpowiedni niż męski, w końcu to — KDPW!)

Pod katem przedstawiam moje własne kryteria, według których obecnie można uznać aplikację webową za piękną. Bardzo subiektywne przedstawienie, będące rezultatem mojego osobistego doświadczenia. Możliwe, że dla niektórych moje kryteria piękna będą wydawały się kryteriami brzydoty. Nie dziwcie się, po prostu macie inne doświadczenie.

A skoro już weszliście pod kat, to proszę zachować ostrożność w komentarzach. Bowiem jeśli możecie przerwać czytanie artykułu, gdy to, co jest w nim przedstawione, wyda się wam niepiękne lub wręcz brzydkie, to ja, jako autor, muszę czytać wszystkie komentarze.

Środowisko życia

Protokół

Nie wiem nawet, czy warto ten kryterium wydzielać osobno. Aplikacje webowe żyją w Sieci i muszą przestrzegać praw Sieci (protokół). Główne protokoły w Sieci to — TCP i IP. Na nich opiera się wiele innych protokołów, ale dla aplikacji webowych uważam, że najważniejszy jest HTTP (a właściwie jego rozszerzenie HTTPS na bazie TLS). Tzn. piękna aplikacja webowa jest dostępna za pomocą HTTPS/TLS (alternatywnie — HTTP), a inne protokoły (LDAP, RPC, IMAP4, POP3, SMTP, FTP, NNTP, …) sprawiają, że staje się mniej piękna z każdym dodatkowo obsługiwanym protokołem. Sama aplikacja może za pomocą tych dodatkowych protokołów korzystać z zewnętrznych zasobów.

Jeśli chodzi o WebSocket., więc nie mam wystarczającego doświadczenia z używaniem tego protokołu z aplikacjami webowymi. Wygląda to ładnie i obiecująco, ale jak stabilne i praktyczne to jest — nie mogę powiedzieć.

Przeglądarki

Aplikacja internetowa stoi jedną nogą na serwerze, a drugą na stronie klienta. Strona klienta to przeglądarka. Nowoczesna przeglądarka oferuje wiele możliwości, które nowoczesna aplikacja webowa może i powinna wykorzystywać na swoją korzyść. Piękna aplikacja internetowa wykorzystuje nowoczesne funkcje przeglądarek i nie musi działać w tych przeglądarkach, które nie oferują nowoczesnych możliwości. Rozumiem, że polyfille to konieczność, ale wygląda to źle. W końcu nie tylko deweloperzy muszą nadążać za nowoczesnymi technologiami, dotyczy to również użytkowników i biznesu.

Języków programowania

używanych do tworzenia aplikacji webowych jest bardzo dużo. W przypadku części klienckiej aplikacji webowych istnieje wiele technologii, które pozwalają programiście ułatwić stworzenie triady HTML/CSS/JS (to, co rozumieją wszystkie nowoczesne przeglądarki). Ale kiedyś miałem do czynienia z GWT i uważam, że pięknie jest, gdy programista widzi w przeglądarce oryginalny kod, a nie wynik kompilacji lub transpilacji. Dlatego stosowanie webpacki podobnych produktów do generowania kodu klienckiego, moim zdaniem, nie jest ładne. Im bardziej kod wykonywalny w przeglądarce przypomina oryginalny kod stworzony przez dewelopera, tym lepiej. Nie wierzycie? Spróbujcie zdebugować w produkcji kod stworzony przez GWT.

Po stronie serwera jest więcej swobody (Java, PHP, Perl, Python, C#, Ruby, …), ale wydaje mi się, że ładnie jest, gdy zarówno po stronie serwera, jak i w przeglądarce używa się jednego języka programowania — JavaScript. W końcu język określa myślenie, a zespoły współpracowników są bardziej produktywne.

Człowieczeństwo

Piękna aplikacja webowa powinna być użyteczna. Użyteczna, przede wszystkim, dla człowieka jako końcowego użytkownika. Dlatego nie mogę nazwać piękną aplikacją webową usług webowych. Zwykłemu człowiekowi (nie deweloperowi webowemu) trudno się z nimi obchodzić. Usługi webowe są piękne na swój sposób,

Piękna aplikacja internetowa powinna mieć intuicyjny interfejs. Można się spierać o UIto dość subiektywna kwestia. Ale z UX jest znacznie prostsze, jeśli użytkownik nie może korzystać z aplikacji bez upragnionego RTFM — kiepski UX, nieestetyczna aplikacja webowa. Najładniejsze aplikacje zgodnie z tym kryterium mogą być z łatwością używane przez dzieci, które jeszcze nie potrafią czytać.

Skalowalność zwrotna

Dawno temu programy można było przenosić na dyskietkach, teraz — na pamięciach USB lub ściągając bezpośrednio z Sieci. Skopiowanie zwykłej aplikacji i uruchomienie jej na innym komputerze to proste zadanie. Sytuacja z aplikacjami webowymi jest jednak nieco inna. Sieć to globalne środowisko, w którym nie ma potrzeby posiadania klonów tego samego web-aplikacji. Jeden Facebook, Twitter, Instagram, Mail.ru lub Yandex wystarczą. Można mieć różne web-aplikacje w tej samej niszy tematycznej, ale z różnymi odbiorcami (jak Facebook i Vkontakte, Mail.ru i Gmail, Google Maps i Azure Maps). Potrzebne są zasoby sprzętowe, aby zapewnić globalną dostępność takich web-aplikacji, powiedzmy, niebanalne.

Nigdy nie pracowałem z aplikacjami webowymi na takim poziomie jako programista i nie wyobrażam sobie, jak one tam, w środku, są zorganizowane. Aby zapewnić funkcjonalność takich aplikacji webowych potrzebne są zespoły odpowiednich specjalistów i oddzielne centra danych. Fascynuje mnie zdolność ludzi do współpracy na taką skalę i tworzenia takich produktów, ale moim wzorem piękna jest aplikacja webowa, którą można uruchomić na osobnym laptopie.

Piękna aplikacja webowa skaluje się nie tylko w górę i na szerokość (dla użytkowników), ale także w dół i do wewnątrz (dla programistów).

Amfibijność

Do dostępu do nowoczesnych aplikacji webowych używa się urządzeń dwóch typów:

  • komputery (laptopy, desktopy);
  • urządzenia mobilne (smartfony i tablety);

Gdzieś na horyzoncie czai się jeszcze „internet rzeczy„, ale na razie to tyle.

Komputery różnią się od urządzeń mobilnych tak bardzo, jak stworzenia lądowe różnią się od wodnych. To różne środowiska i stawiają różne wymagania wobec żyjących w nich istot (programów). Piękne aplikacje webowe to nie takie, które przypominają amfibie, ale te, które w wodzie — jak ryby, na lądzie — jak zwierzęta, a w powietrzu (SEO) — jak ptaki.

Uważam „amfibijność„ za brzydką, to jak próba siadania na dwóch (z SEO — trzech) krzesłach. Lepiej jak Fiona z Shreka — w dzień jedna, a w nocy druga. Tak, drożej. Ale lepiej.

Cross-sharing

Zauważyłem już w punkcie „Obowiązkowa Skalowalność”, że globalność Sieci daje możliwość posiadania jednego web-aplikacji dla całej Planety. Dlatego każda web-aplikacja musi w jakiś sposób różnić się od innych, aby zapewnić sobie przetrwanie. Niemniej jednak, moje wieloletnie doświadczenie z Magento (szkielet do budowania sklepów e-commerce) mówi, że między poszczególnymi web-aplikacjami może być więcej wspólnego niż różnic. Piękna web-aplikacja nie tylko powinna być modułowa, ale także powinna dzielić swoje moduły z innymi web-aplikacjami. W pewnym sensie ta idea jest odzwierciedlona w specyfikacjach JSR 168 i JSR 286 oraz takich frameworkach jak WordPress, Django i ta sama Magento. Im większa liczba modułów web-aplikacji jest używana przez inne web-aplikacje, tym jest bardziej atrakcyjna w moim mniemaniu. Cross-sharing pozwala na tworzenie lepszej jakości modułów i w rezultacie bardziej stabilnych web-aplikacji.

Przez moduł nie rozumiem bibliotek typu jQuery czy RequireJS — raczej większe struktury, jak wtyczki w WordPress i Django. Ale dla bibliotek również prawdziwe jest twierdzenie, że szerokie rozpowszechnienie biblioteki pozwala uczynić ją lepszej jakości i bardziej odporną.

Architektura Harvardzka

Architektura Harvardzka, w przeciwieństwie do obecnie dominującej pryństonskiej, zakłada oddzielenie kodu od danych. Architektura nie zyskała popularności, ale sama idea wydaje mi się piękna. Szczególnie w przypadku web-aplikacji. Każda statyka (HTML/CSS/JS/Obrazy/…) to kod. Można go i należy buforować zarówno po stronie serwera, jak i klienta. A dane to REST/YANG (pięknie) lub SOAP/XML (trochę mniej pięknie). Albo WebSockets/JSON (może być najlepszym rozwiązaniem, ale nie próbowałem).

Lokalizacja

Są dwie rzeczy, które szczególnie mnie niepokoją podczas rozwijania web-aplikacji — to interfejs wielojęzyczny i strefy czasowe. Sam pochodzę z Łotwy, u nas używa się trzech języków: LV, RU, EN. Piękna web-aplikacja powinna umożliwiać nie tylko korzystanie z kilku języków w samej aplikacji, ale także pozwalać na rozszerzenie liczby używanych języków przy pomocy zewnętrznych zasobów, takich jak Crowdin. To samo dotyczy modułów, z których zbierana jest web-aplikacja.

Z strefami czasowymi sprawa jest prosta: we wszystkich sytuacjach, gdy nie wiadomo, jak obsługiwać daty i czasy, postępuj tak: wszystko, co leży na serwerze, wychodzi z serwera i przychodzi z serwera, to UTC; wszystko, co jest wyświetlane u klienta, zgodnie z czasem strefy w profilu użytkownika. To piękne.

Kuźnie zamiast 'Gwiazd Śmierci'

Dawno temu w każdym większym miasteczku była w swojej kuźni. Być może nie jedna. Niektóre lepsze, inne gorsze. Byli kowale znani na całym świecie, a byli też tacy, do których chodzono z braku alternatyw. Przechodziły wojny, epidemie, katastrofy naturalne. Niektóre miasteczka znikały razem z mieszkańcami. Ale rzemiosło kowalskie przetrwało. Zamiast znikających miast powstawały nowe i w nich również pojawiały się kuźnie.

A teraz spójrz na usługę taką jak DNS. Gdy padają serwery główne, cały świat się wstrząsa..

Moim zdaniem, piękna aplikacja webowa nie może mieć rozmiarów Facebooka czy Mail.ru. To już bliżej 'Gwiazdy Śmierci' zarówno pod względem zasobów potrzebnych do budowy, jak i zasobów potrzebnych do jej utrzymania. Tak, w przypadku zniknięcia Facebooka ludzkość nie wyginie, jego funkcje wystarczająco szybko przejmą inne aplikacje (ta sama VKontakte na terytorium RF i w pobliskich rejonach, Instagram, Twitter, ...). Niemniej jednak, zamykanie znaczącej części populacji Planety w jednej aplikacji — to nie jest ładne. Tym bardziej, mając znacznie bardziej stabilne alternatywy (na przykład, torrenty.).

Podsumowanie

Jeśli dotarłeś do końca i czujesz się zdezorientowany — 'co to było?' to wyrażam moje szczere współczucie. Nie zmuszałem cię do czytania tego. Po prostu starałem się ubrać moje myśli w słowa, aby znaleźć tych, którzy myślą podobnie. Może będę mógł omówić z nimi niektóre aspekty tworzenia pięknych aplikacji webowych i poznać odpowiedzi na moje pytania. A mam ich wiele.

Dziękuję za przeczytanie.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster