Красотата е в очите на наблюдателя

Отдавна се занимавам с разработка на уеб приложения. Много отдавна. Първите си уеб приложения в среда Lotus Domino създадох в онези времена, когато думата „google“ още не беше глагол, а за търсене на информация в интернет хората използваха Yahoo! и Rambler. Аз обаче ползвах Infoseek‘ом — те имаха стеснен търсене и не толкова претрупан интерфейс, като този на Yahoo!

Разработката на приложения, всякакви приложения, не само за уеб — е творческа работа. Много малко хора биха спорили с това твърдение. А красотата в творчеството е като практиката в научното познание — критерий за истина. Но докато научната практика е обективна и се основава на измервания, красотата е субективен предмет, зависи от това, кой гледа. Ето защо се запитах, какво за мен лично е красиво уеб приложение?

Красотата е в очите на наблюдателя

(на КДПВ моят поглед не е, женският поглед, но, IMHO, женският поглед на КДПВ е по-подходящ от мъжкия, защото това е — КДПВ!)

Под кат моите собствени критерии за това, какво уеб приложение в момента може да се счита за красиво. Много субективно изложение, обусловено от личния ми опит. Може би на някого моите критерии за красота ще се сторят критерии за уродство. Не се учудвайте, просто имате различен опит.

И тъй като сте под кат, моля бъдете внимателни в коментарите. Защото, ако можете да спрете да четете статията, щом изложеното в нея ви се стори некрасиво или дори грозно, то аз, като автор, съм принуден да чета всички коментари.

Среда на Обитание

Протоколи

Не знам дали си струва да отделям този критерий. Уеб приложенията съществуват в мрежата и са принудени да спазват Законите на мрежата (протоколите). Основните протоколи в мрежата — TCP и IP. На тях се основават множество други протоколи, но за уеб приложенията смятам, че най-важен е HTTP (по-скоро, неговото разширение HTTPS на база TLS). Т.е., красиво уеб приложение е достъпно по HTTPS/TLS (като вариант — по HTTP), а другите протоколи (LDAP, RPC, IMAP4, POP3, SMTP, FTP, NNTP, …) го правят по-малко красиво с всеки допълнителен поддържан протокол. Самото приложение може с помощта на тези допълнителни протоколи да използва външни ресурси.

Що се отнася до WebSocket, така че нямам достатъчен опит с използването на този протокол с уеб приложения. Изглежда красиво и перспективно, но не мога да кажа колко стабилно и практично е.

Браузери

Уеб приложението е само с единия крак на сървърната страна, а другият — на клиентската страна. Клиентската страна е браузерът. Съвременният браузер предлага много неща, които съвременното уеб приложение може и трябва да използва в свои ползи. Красивото уеб приложение използва съвременните възможности на браузерите и не е задължено да работи в тези браузери, които не предоставят съвременни възможности. Разбирам, че полифилите са принудителна мярка, но това не е красиво. В крайна сметка, не само разработчиците трябва да настигат съвременните технологии, това важи и за потребителите и бизнеса.

ЯП

С програмните езици, които се използват за създаване на уеб приложения, всичко е много объркано. За клиентската част на уеб приложенията има много технологии, които позволяват на разработчика да улесни създаването на триадата HTML/CSS/JS (това, което всички съвременни браузери разбират). Но в свое време се сблъсках плътно с GWT и смятам, че е красиво, когато разработчикът вижда в браузера оригиналния код, а не резултата от компилацията или транспилацията. Затова използването на webpackи подобни продукти за генериране на клиентски код, IMHO, не е красиво. Колкото повече изпълняемият код в браузера прилича на изходния код, създаден от разработчика, толкова по-добре. Не вярвате? Опитайте да отдебъгнете в production кода, създаден от GWT.

На сървърната страна свободата е повече (Java, PHP, Perl, Python, C#, Ruby, …), но ми се струва, че е красиво, когато и на сървърната страна, и в браузера се използва един програмен език — JavaScript. В крайна сметка езикът определя мисленето, а екипите от съмишленици са по-продуктивни.

Човечност

Красивото уеб приложение трябва да бъде полезно. Полезно, преди всичко, за човека, като крайния потребител. Затова не мога да нареча красиво уеб приложение уеб услуги. На обикновения човек (не уеб разработчика) им е трудно с тях. Уеб услугите са красиви по свой собствен начин,

Красивото уеб приложение трябва да има интуитивно разбираем интерфейс. Може да се спори за UI— това е доста субективно. Но с UX ситуацията е много по-проста, ако потребителят не може да използва приложението без желаното RTFM — лош UX, грозно уеб приложение. Най-красивите уеб приложения, по този критерий, могат лесно да се използват от деца, които все още не умеят да четат.

Обратна мащабируемост

Отдавна програмите можеха да се пренасят на дискети, сега - на флашки или веднага да се свалят от интернет. Копирането на обикновено приложение и стартирането му на друга машина е тривиална задача. С уеб приложенията ситуацията е малко по-особена. Мрежата представлява глобална среда, в която няма нужда от клони на едно и също уеб приложение. В мрежата ни е необходим само един Facebook, Twitter, Instagram, Mail.ru или Yandex. Може да има различни уеб приложения в една и съща тематична ниша, но с различна аудитория (като Facebook и Вконтакте, Mail.ru и Gmail, Google Maps и Azure Maps). Хардверните ресурси за осигуряване на глобалната достъпност на такива уеб приложения са нужни, да речем, нетривиални.

Никога не съм работил с уеб приложения на такова ниво като разработчик и не мога да си представя как са устроени отвътре. За да функционират успешно тези уеб приложения, са нужни екипи от съответните специалисти и отделни дата центрове. Възхищавам се на способността на хората да си сътрудничат в такива мащаби и да създават подобни продукти, но моят еталон за красота е уеб приложение, което може да се стартира на отделен лаптоп.

Красивото уеб приложение мащабира не само нагоре и надолу (за потребителите), но и надолу и навътре (за разработчиците).

«Земноводство»

За достъп до съвременни уеб приложения се използват устройства от два типа:

  • компютри (лаптопи, десктопи);
  • мобилни устройства (смартфони и таблети);

Някъде на хоризонта се появява още «интернет на нещата«, но за сега така.

Компютрите и мобилните устройства се различават толкова, колкото сухопътните същества от водоплаващите. Това са различни среди, които предявяват различни изисквания към обитаващите ги същества (програмите). Красивите уеб приложения не са тези, които приличат на амфибии, а тези, които в водата - като риби, на сушата - като животни, а във въздуха (SEO) - като птици.

Смятам, че е грозно «земноводство«, сякаш се опитваш да седиш на два (с SEO - три) стола. По-добре както Фиона от Шрек - през деня една, а през нощта друга. Да, по-скъпо. Но по-добре.

Крос-споделяне

Вече споменах в пункта „Обратна Масштабируемост“, че глобалността на Мрежата предоставя възможност за съществуването на едно уеб-приложение на Планетата. Ето защо всяко уеб-приложение трябва по някакъв начин да се различава от другите, за да осигури своето оцеляване. Въпреки това, многогодишният ми опит с Magento (каркас за изграждане на e-commerce магазини) показва, че между отделните уеб-приложения може да има повече общо, отколкото различия. Красивото уеб-приложение не само трябва да бъде модулно, но също така трябва да споделя своите модули с други уеб-приложения. В известен смисъл тази идея е отразена в спецификациите JSR 168 и JSR 286 и такива фреймворкове като WordPress, Django и същата Magento. Колкото повече модули от уеб-приложението се използват от други уеб-приложения, толкова по-красиво става то от моята гледна точка. Крос-споделянето позволява създаването на по-качествени модули и, следователно, по-стабилни уеб-приложения.

Под модул не разбирам библиотеки като jQuery или RequireJS — по-скоро става дума за по-големи образувания, като плъгини в WordPress и Django. Но за библиотеките също важи тезата, че широкото разпространение на библиотеката я прави по-качествена и устойчива.

Харвардската архитектура

Харвардската архитектура, за разлика от настоящата "балансираща" принстънска, предвижда разделение на кода и данните. Архитектурата не успя да се утвърди, но самата идея ми се струва красива. Особено за уеб-приложения. Всяка статика (HTML/CSS/JS/Images/…) е код. Той може и трябва да се кешира както на сървърната страна, така и на клиентската. А данните са REST/JSON (красиво) или SOAP/XML (малко по-малко красиво). Или WebSockets/JSON (може би най-добрия вариант, но не съм пробвал).

Локализация

Има две неща, които ме вълнуват особено при разработката на уеб-приложения — това са многоезичният интерфейс и часовите зони. Аз самият съм от Латвия, където имаме три езика: LV, RU, EN. Красивото уеб-приложение трябва да предоставя възможност не само за използването на няколко езика в самото приложение, но и да позволява разширяване на броя на използваните езици с помощта на външни ресурси, като Crowdin. Това важи и за модулите, от които се изгражда уеб-приложението.

С часовите зони всичко е просто, във всички случаи, когато не е ясно как да се обработи дата-време, правете така: всичко, което е на сървъра, отива на сървъра и идва от сървъра — UTC, всичко, което се показва на клиента — в съответствие с часовата зона от профила на потребителя. Това е красиво.

Ковачници вместо „Звезди на смъртта“

Отдавна, във всеки по-голям град имаше своя ковачница. Вероятно не една. Някои по-добри, някои по-лоши. Имаше ковачески майстори, известни на целия свят, а имаше и такива, при които отиваха от липса на алтернатива. Преминаваха войни, епидемии, природни бедствия. Някои градчета изчезваха заедно с населението си. Но ковашкото изкуство оставаше живо. Вместо изчезналите градове се строяха нови и в тях също се появяваха ковачници.

А сега погледнете на такава услуга, като DNS. Когато оригиналните сървъри падат, всички светът трепери.

Според мен, красиво уеб приложение не може да е толкова голямо, колкото Facebook или Mail.ru. Това вече е по-близо до „Звезда на смърттаи по ресурсите, необходими за построяване, и по ресурсите, необходими за поддържане на работоспособността. Да, в случай на унищожаване на Facebook, човечеството няма да изчезне, функциите му бързо ще бъдат поети от други приложения (същият ВК на територията на РФ и прилежащите, Instagram, Twitter, …). Въпреки това, заклещването на съществена част от населението на Планетата в едно приложение — е грозно. Още повече, при наличието на много по-устойчиви алтернативи (например, торенти).

Резюме

Ако сте прочели до края и се чувствате объркани — „какво беше това?“, изразявам искреното си съчувствие. Не ви принуждавах да го четете. Просто опитах да изразя мислите си в думи, за да намеря тези, които мислят по същия начин. Може би, ще мога да обсъдя с тях някои аспекти на създаването на красиви уеб приложения и да науча отговори на въпросите си. А тях ги имам много.

Благодаря за прочитането.

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster