
Признаюсь откровенно. Эта вся история с «простыми» приложениями сводит меня с ума.
На прошлой неделе мама показывала мне новое приложение для медитации. Ей понравилось его лаконичность. «Оно такое простое, — сказала она. — Наверное, они сделали его очень быстро, раз оно такое элементарное».
Я не смог ей объяснить, что к чему. За этим «элементарным» приложением наверняка кроется огромная сложность — я знаю это по своему двенадцатилетнему опыту разработчика.
Причина, по которой приложение кажется простым, в том, что целая команда людей приложила невероятные усилия, чтобы сделать его именно таким. Это секрет, о котором никто не говорит. Это иллюзия простоты. Очень дорогая, тщательно созданная иллюзия.
Чистый экран всего с двумя кнопками? Это не отсутствие работы. Это результат тысячи совещаний, на которых спорили, какие функции убрать. Плавная, быстрая загрузка? Это результат труда инженера, потратившего три месяца на оптимизацию кода, который вы никогда не увидите.
Слово «простой» — это самый большой комплимент и источник самого большого недопонимания в мире технологий. Вы говорите: «Мне было легко этим пользоваться». В этом как раз и заключается цель. Но сделать что-то легким для вас было невероятно сложно для других.
Позвольте объяснить, почему этот миф так живуч и почему «простое» приложение в вашем телефоне не такое уж простое.
Что мы подразумеваем под словосочетанием «простое приложение»?

Когда кто-то называет приложение «простым», он никогда не описывает его код. Он говорит о чувстве спокойной уверенности. Это чувство обуславливается впечатлениями, которые мы все испытывали, но, возможно, не могли выразить словами:
- Приложение не заставляет вас думать. Ваш взгляд не атакуют со всех сторон. В таком приложении есть свободное пространство, а одна-две кнопки на экране, очевидно, именно те, что вам нужны.
- Оно не заставляет вас ждать. Когда вы нажимаете на кнопку, сразу видите результат. Нет дергающегося индикатора загрузки, который портит вам настроение.
- Оно не заставляет вас гадать. Вы просто знаете, что делать дальше. Оно кажется очевидным, почти предсказуемым — в лучшем смысле этих слов.
- Оно не сбивает вас с толку. Нет лишних шагов, нет запутанных меню, которые нужно расшифровывать. Приложение предоставляет прямой путь от вашего намерения к результату.
Такой опыт — самый большой комплимент для команды, создавшей продукт. Он означает, что разработчики успешно сняли со своего пользователя все бремя сложности. Пользователю не нужно думать о серверах, схемах данных или конечных точках API. Он просто делает то, зачем скачал приложение.
И здесь кроется главное недопонимание: поскольку приложением пользоваться легко, мы предполагаем, что его было легко создать. Мы принимаем конечный, отточенный опыт за отсутствие проделанной работы. Мы видим изящную, минималистичную вершину айсберга и забываем о массивной, сложной конструкции, которая поддерживает ее снизу. Эта простота — намеренная и тяжело давшаяся иллюзия, вершина дизайна, ориентированного на пользователя.
Скрытый механизм «за кулисами»

Если бы вы могли заглянуть «под капот» вашего любимого «простого» приложения, вы бы увидели машинное отделение потрясающей сложности. То, что для вас — одна кнопка, на самом деле — замысловатая синергия систем, работающих в идеальной гармонии.
Объясню свою мысль на нескольких понятных примерах.
Такая элегантная кнопка, как «Войти через Google» — это шедевр скрытой работы. Для вас — это одно нажатие. Для разработчиков — это внедрение протокола OAuth, управление безопасными токенами, обработка разрешений, защита от уязвимостей и создание запасного варианта на случай сбоя сервиса. Одно нажатие скрывает сложное взаимодействие между несколькими серверами по всей сети.
Рассмотрим минималистичное приложение для заметок, такое как Apple Notes или Google Keep. Его красота — в чистом холсте. Но за этим холстом скрывается целый лабиринт сложности. Как заметка, которую вы набросали на телефоне, мгновенно появляется на вашем ноутбуке? Для этого требуются системы синхронизации в реальном времени, которые должны разрешать конфликты. Что, если вы редактировали одну и ту же заметку на двух устройствах одновременно, будучи оффлайн? Приложение должно управлять хранением, оффлайн-работой и слиянием данных, и при всем этом сохранять магию для пользователя.
Вспомните какой-нибудь мессенджер. Вы видите пустое поле. Печатаете. Нажимаете «Отправить». Такое ощущение, будто вы запускаете бумажный самолетик. Что же тут сложного?
Но это не бумажный самолетик. Это — скоростной поезд, мчащийся по секретной глобальной сети путей, которые приходится прокладывать в реальном времени.
Маленькая галочка «Доставлено» — прекрасная ложь. Она скрывает лихорадочный, невидимый процесс: шифрование вашего сообщения в секретный код, поиск самого быстрого пути через хаос интернета, преодоление заблокированного экрана телефона вашего друга с помощью уведомления и сохранение идеальной копии в цифровом хранилище. Все это — в мгновение ока. И эта система должна работать для миллиардов людей, которые одновременно запускают свои «бумажные самолетики», не замедляя работу сервиса ни на миг.
Почему простота обходится дороже, чем сложность

Если сложность — естественное состояние кода, то простота — его отточенная, отполированная противоположность. А шлифовка стоит дорого. Это главный парадокс разработки программного обеспечения: для создания чего-то с меньшим количеством функций зачастую требуется больше вложений — времени, денег и умственной энергии — чем для разработки перегруженного продукта.
На это есть несколько контринтуитивных причин.
Во-первых, меньшее количество функций требует больше решений. Каждый элемент на экране находится там потому, что команда его обсуждала и решила, что он заслуживает своего места. Каждая кнопка, попавшая в финальную версию, стоила десятка других, которые были отвергнуты. Эти споры — «стоит ли добавлять переключатель?», «нужно ли это меню?» — могут занять недели работы продакт-менеджеров, дизайнеров и инженеров. Требуется огромное мужество, чтобы сказать «нет» функции, которая кажется полезной, но захламляет опыт.
Во-вторых, более понятные интерфейсы требуют большего объема пользовательского тестирования. Нельзя угадать, что будет интуитивно понятным; нужно наблюдать, как реальные люди используют ваш продукт. «Очевидный» путь навигации может сбить с толку половину тестировщиков, отправив вас обратно к эскизной доске. Упрощение процесса с трех шагов до одного может потребовать полной перестройки архитектуры серверной части. Усилия титанические, даже если результат выглядит незначительным.
Наконец, сложность — это путь наименьшего сопротивления. Легко добавлять новые опции и настройки. Гораздо труднее превратить сложную проблему в чистое и элегантное решение. По мере роста приложения поддержание такой ясности требует постоянной переработки и «обрезки». Это похоже на работу садовника, неустанно ухаживающего за деревом. Команда постоянно «поглощает» сложность, освобождая от нее пользователя, и это когнитивно затратная работа. Необходимость в простоте только усиливается по мере того, как базовые системы становятся все более изощренными.
Что пользователи не видят — и почему это важно
Так почему же все это имеет значение? Ведь разработчики вкладывают свой труд не просто для того, чтобы почувствовать свое превосходство. Они меняют то, как мы воспринимаем цифровой мир.
Когда вы видите в чистом интерфейсе достижения инженерии, а не ее отсутствие, вы начинаете ценить хорошие продукты на совершенно новом уровне. Вы понимаете, почему идеально спроектированное приложение кажется таким ценным — вы чувствуете, какую огромную работу в него вложили.
Подобный образ мышления также многое объясняет. Именно поэтому стартап не может просто «скопировать» успешное минималистичное приложение за выходные. Да, можно скопировать внешний вид — цвета, шрифты, расположение кнопок. Любой может скопировать экран. Это как обвести рисунок. Но невозможно обвести те тысячи мелких решений, которые сделали этот экран необходимым.
Нельзя скопировать память о ночном рабочем совещании, на котором члены команды решили убрать полюбившуюся вам функцию, потому что она сбивала с толку всех остальных. Нельзя воспроизвести внутреннее чутье, которое подсказало ведущему инженеру структурировать данные именно так — решение, которое окупается лишь тогда, когда приложением одновременно пользуются десять миллионов человек.
И, честно говоря, именно поэтому меня так раздражают поверхностные суждения о задержках в развитии технологий. Когда видишь заголовок «Запуск приложения отложен снова!», а потом читаешь комментарии, авторы которых называют разработчиков ленивыми, приходишь к выводу о полном непонимание сути ситуации.
Я сам проходил через эти трудности. Речь идет не о лени. Речь идет о напряженной, бескомпромиссной битве против хаоса. Ведь разработчики не просто «добавляют фичу», а пытаются создать функцию, которая не превратит всю программу в медленную, глючную груду шлака. Они ведут серьезную битву за поддержание простоты. То, что вы никогда не видите этой битвы, —единственное доказательство того, что они ее выигрывают.
Важно осознавать спектр качества продукта:
- Плохие приложения выставляют свою сложность напоказ, заставляя разбираться с их внутренним хаосом.
- Функциональные приложения выполняют свою задачу, но вы чувствуете определенные препятствия, когда пользуетесь ими.
- Хорошие приложения кажутся простыми, потому что команда проделала тяжелую работу, взяв на себя всю сложность.
Этот сдвиг в восприятии крайне важен: простота — это не исходная точка и не отсутствие усилий. Это конечный, тяжело завоеванный результат невероятной работы. Это подарок от создателя пользователю.
Так что в следующий раз, когда приложение покажется вам красивым и понятно устроенным, не называйте его «простым». Назовите вещи своими именами: оно хорошо спроектировано. Это ощущение легкости — не случайность, а сама суть.
То, что вы испытываете, — это конечный результат того, что всю сложную работу мастерски проделали за вас. Все ночные бдения, жаркие споры из-за одной кнопки и изнурительная техническая работа упакованы и спрятаны, а вам предоставлен лишь чистый, функциональный инструмент.
В этом и заключается настоящая магия. Дело не в том, что приложение «простое», а в том, что команда людей прошла через все трудности, чтобы этого не пришлось делать вам. Та самая «легкость», которую вы чувствуете, — это их усилия, полностью реализованные на практике.
Читайте также:
- Как создать платный доступ, который не вызовет раздражения у пользователей
- Почему Cloudflare не использует контейнеры в инфраструктуре платформы Workers?
- Отходим от монолита: освоение модульной навигации в Android (Kotlin и компонент Jetpack Navigation)
Читайте нас в Telegram, VK и Дзен
Перевод статьи Activated Thinker: The Myth of the “Simple” App





