Pull to refresh

Красота в глазах смотрящего

Reading time7 min
Views3.1K

Я давно уже занимаюсь разработкой web-приложений. Очень давно. Свои первые web-приложения в среде Lotus Domino я создавал в те времена, когда слово "google" ещё не было глаголом, а для поиска информации в интернете люди использовали Yahoo! и Rambler. Я же пользовался Infoseek'ом — у них был сужающийся поиск и не такой безобразно перегруженный интерфейс, как у Yahoo!


Разработка приложений, любых приложений, не только для web'а — работа творческая. Вряд ли кто-то будет спорить с этим утверждением. А красота в творчестве, это как практика в научном познании — критерий истины. Но если научная практика объективна и базируется на измерениях, то красота — предмет субъективный, зависит от того, кто смотрит. Вот я и задался вопросом, а что для меня лично является красивым web-приложением?



(на КДПВ глаз не мой, глаз женский, но, IMHO, женский глаз на КДПВ более уместен, чем мужской, ведь это же — КДПВ!)


Под катом мои собственные критерии того, какое web-приложение на данный момент может считаться красивым. Очень субъективное изложение, обусловленное моим персональным опытом. Возможно кому-то мои критерии прекрасного покажутся критериями уродства. Не удивляйтесь, просто у вас другой опыт.


И раз уж вы зашли под кат, то будьте аккуратнее в комментах, пожалуйста. Ведь, если вы можете прекратить читать статью, как только изложенное в ней покажется вам некрасивым или даже уродливым, то я, как автор, вынужден читать все комменты.


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


Протоколы


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


Что касается WebSocket, то у меня нет достаточного опыта использования этого протокола с web-приложениями. Выглядит красиво и перспективно, но насколько это стабильно и практично — сказать не могу.


Браузеры


Web-приложение только одной ногой стоит на серверной стороне, вторая — на клиентской стороне. Клиентская сторона — это браузер. Современный браузер предоставляет много чего, что современное web-приложение может и должно использовать в своих интересах. Красивое web-приложение использует современные возможности браузеров и не обязано работать в тех браузерах, которые современные возможности не предоставляют. Я понимаю, что полифилы — это вынужденная мера, но это некрасиво. В конце-концов, не только разрабы должны успевать за современными технологиями, пользователей и бизнес это тоже касается.


ЯП


С языками программирования, которые используются для создания web-приложений, всё очень запутано. Для клиентской части web-приложений есть масса технологий, позволяющих разработчику облегчить создание триады HTML/CSS/JS (то, что понимают все современные браузеры). Но я в своё время плотно соприкоснулся с GWT и считаю красивым, когда разработчик видит в браузере оригинальный код, а не результат компиляции или транспиляции. Поэтому использование webpack'а и ему подобных продуктов для генерации клиентского кода, IMHO, некрасиво. Чем больше исполняемый в браузере код похож на исходный код, созданный разработчиком, тем лучше. Не верите? Попробуйте отдебажить в production'е код, созданный GWT.


На серверной стороне свободы больше (Java, PHP, perl, python, C#, Ruby, ...), но мне кажется, что красиво, когда и на серверной стороне, и в браузере используется один язык программирования — JavaScript. Всё-таки язык определяет мышление, а команды единомышленников более продуктивны.


Человечность


Красивое web-приложение должно быть полезным. Полезным, в первую очередь, для человека, как конечного потребителя. Поэтому я не могу назвать красивым web-приложением web-сервисы. Обычному человеку (не web-девелоперу) с ними сложно. Web-сервисы красивы по-своему,


Красивое web-приложение должно иметь интуитивно понятный интерфейс. Можно спорить о UI'е — это довольно субъективная вещь. Но с UX всё гораздо проще, если пользователь не может использовать приложение без заветного RTFM — плохой UX, некрасивое web-приложение. Самые красивые относительно этого критерия web-приложения могут с лёгкостью использоваться детьми, которые ещё не умеют читать.


Обратная Масштабируемость


Давным-давно программы можно было переносить на дискетах, сейчас — на флешках или сразу скачать из Сети. Скопировать обычное приложение и запустить его на другой машине — задача тривиальная. С web-приложениями ситуация несколько особая. Сеть представляет собой глобальную среду, в которой нет нужды иметь клоны одного и того же web-приложения. В Сети хватает одного Facebook'а, Twitter'а, Instagram'а, Mail.ru или Yandex'а. Можно иметь различные web-приложения в одной и той же тематической нише, но с разными аудиториями (как Facebook и Вконтакте, Mail.ru и Gmail, Google Maps и Azure Maps). Аппаратные ресурсы для обеспечения глобальной доступности таких web-приложений нужны, скажем так, нетривиальные.


Я никогда не работал с web-приложениями такого уровня как разработчик и не представляю, как они там, внутри, устроены. Для обеспечения работоспособности таких web-приложений нужны команды соответствующих специалистов и отдельные дата-центры. Меня восхищает способность людей к кооперации в таких масштабах и созданию подобных продуктов, но моим эталоном красоты является web-приложение, которое можно запустить на отдельном ноутбуке.


Красивое web-приложение масштабируется не только вверх и вширь (для пользователей), но и вниз и вовнутрь (для разработчиков).


"Земноводность"


Для доступа к современным web-приложениям используются устройства двух типов:


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

Где-то на горизонте маячит ещё "интернет вещей", но пока так.


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


Я считаю некрасивым "земноводность", это как попытка усидеть на двух (с SEO — трёх) стульях. Лучше уж как Фиона из Шрека — днём одна, а ночью другая. Да, дороже. Но лучше.


Cross-sharing


Я уже отмечал в пункте "Обратная Масштабируемость", что глобальность Сети даёт возможность иметь одно web-приложение на Планету. Поэтому каждое web-приложение должно хоть чем-то отличаться от других, чтобы обеспечить себе выживание. Тем не менее, мой многолетний опыт с Magento (каркас для построения магазинов e-commerce) говорит, что между отдельными web-приложениями общего может быть больше, чем различий. Красивое web-приложение не только должно быть модульным, оно также должно разделять свои модули с другими web-приложениями. В какой-то мере эта идея отражена в спецификациях JSR 168 и JSR 286 и таких framework'ах, как WordPress, Django и та же Magento. Чем большее количество модулей web-приложения используется другими web-приложениями, тем оно красивее с моей точки зрения. Cross-sharing позволяет создавать более качественные модули и, как следствие, более стабильные web-приложения.


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


Гарвардская архитектура


Гарвардская архитектура, в отличие от ныне правящей бал принстонской, подразумевает разделение кода и данных. Архитектура не взлетела, но сама идея лично мне кажется красивой. Особенно для web-приложений. Любая статика (HTML/CSS/JS/Images/...) — это код. Его можно и нужно кэшировать хоть на серверной стороне, хоть на клиентской. А данные — это REST/JSON (красиво) или SOAP/XML (чуть менее красиво). Или WebSockets/JSON (может быть наилучшим вариантом, но я не пробовал).


Локализация


Есть две вещи, которые меня особенно волнуют при разработке web-приложений — это мультиязычный интерфейс и часовые пояса. Я сам из Латвии, у нас в ходу три языка: LV, RU, EN. Красивое web-приложение должно давать возможность не только использовать несколько языков в самом приложении, но и позволять расширять количество используемых языков при помощи внешних ресурсов, типа Crowdin. Это же справедливо и для модулей, из которых собирается web-приложение.


С часовыми поясами всё просто, во всех случаях, когда непонятно, как обрабатывать дату-время, делайте так: всё, что лежит на сервере, уходит на сервер и приходит с сервера — UTC, всё, что отображается на клиенте — согласно часового пояса из профиля пользователя. Это красиво.


Кузницы вместо "Звезд Смерти"


Давным-давно, в каждом более-менее крупном городке была своя кузница. Возможно и не одна. Некоторые получше, некоторые похуже. Были кузнечные мастера, известные на весь мир, а были и такие, к которым шли от безальтернативности. Прокатывались войны, эпидемии, стихийные бедствия. Некоторые городки исчезали вместе с населением. Но кузнечное ремесло оставалось жить. Вместо исчезнувших городов возводились новые и в них также появлялись кузницы.


А теперь посмотрите на такой сервис, как DNS. Когда ложатся корневые сервера, лихорадит весь мир.


На мой взгляд, красивое web-приложение не может быть такого размера, как Facebook или Mail.ru. Это уже ближе к "Звезде Смерти" и по ресурсам, необходимым для постройки, и по ресурсам, необходимым для поддержания работоспособности. Да, в случае уничтожения Facebook'а человечество не исчезнет, его функции достаточно быстро переймут другие приложения (тот же ВК на территории РФ и прилегающих, Instagram, Twitter, ...). Тем не менее, замыкание значимой части населения Планеты на одно приложение — это некрасиво. Тем более, при наличии гораздо более устойчивых альтернатив (например, torrents).


Резюме


Если вы дочитали до конца и испытываете недоумение — "что это было?", то выражаю вам своё искреннее сочувствие. Я не заставлял вас читать это. Я просто попытался облечь свои мысли в слова, чтобы найти тех, кто думает так же. Возможно, я смогу обсудить с ними некоторые аспекты создания красивых web-приложений и узнать ответы на свои вопросы. А их у меня много.


Спасибо за прочтение.

Tags:
Hubs:
-2
Comments48

Articles