Глава 15. Когда устройство молчит

Часть III. Язык клиента и его устройств

1. Сцена

Ночью зал MS DevCon опустел почти полностью. Остались только те, кто не хотел уходить, и те, кому некуда было спешить. Eugen Valuev сидел один, если не считать ноутбука, который вдруг перестал отвечать. Экран не погас и не выдал ошибку. Он просто замер. Курсор стоял на месте, как человек, который начал фразу и забыл её продолжение.

Eugen подождал десять секунд. Потом двадцать. Потом нажал клавишу — ничего. Нажал ещё раз — ничего. Обычный разработчик в такой момент сделал бы то, что делают все: закрыл бы программу, перезагрузил бы машину, выругался бы тихо и пошёл бы за кофе. Eugen не сделал ничего из этого. Он смотрел на замерший экран так, как смотрят на собеседника, который внезапно замолчал посреди разговора.

Подошёл YAPL. Он возвращался из коридора с двумя стаканчиками воды и остановился, увидев лицо друга.

— Завис? — спросил YAPL.

— Молчит, — ответил Eugen. — Это разные вещи.

YAPL поставил стаканчики и сел рядом. Он тоже знал эту разницу. В мире Apple молчание устройства — отдельная дисциплина. Когда телефон не отвечает, человек не думает: «Наверное, он занят». Человек думает: «Он меня бросил». И чем дольше тишина, тем громче эта мысль.

— Сколько оно уже молчит? — спросил YAPL.

— Сорок секунд, — сказал Eugen, глянув на часы. — Сорок секунд — это уже высказывание. Устройство сказало: я не знаю, что с тобой делать, и не собираюсь тебе об этом сообщать.

Они стали разбирать молчание, как лингвисты разбирают паузу в разговоре. Пауза бывает разной. Пауза после вопроса — это обдумывание. Пауза посреди рассказа — это потеря нити. Пауза вместо ответа — это отказ отвечать. А пауза устройства, которое зависло, — это хуже всего: оно не выбрало молчать, оно просто перестало быть собеседником, не предупредив.

Eugen открыл логи. Там было пусто ровно на том месте, где должен был быть ответ. Как будто устройство дошло до определённой строки и решило, что дальше — не его дело. Никакой ошибки, никакого кода, никакого «извините». Просто обрыв.

— Знаешь, что самое обидное? — сказал Eugen. — Если бы оно сказало «я не справился», я бы помог. Я бы дал ему другой файл, другой путь, другое время. Но оно молчит, и я не знаю, помочь ему или ждать. Молчание лишает меня роли. Я из участника разговора превращаюсь в зрителя чужой поломки.

YAPL кивнул и рассказал свою историю. Однажды его телефон во время важного звонка просто перестал передавать звук. Ни сигнала, ни сообщения — собеседник на том конце говорил в пустоту, а YAPL говорил в пустоту с другой стороны. Они оба решили, что другой повесил трубку. Разговор распался не из-за ссоры, а из-за тишины, которую каждый истолковал по-своему.

— Вот оно, — сказал Eugen. — Тишина всегда толкуется. Если устройство молчит, человек сам придумывает, что это значит. И придумывает, как правило, худшее: меня игнорируют, меня бросили, я что-то сломал.

К утру они написали на белой доске три правила для молчания. Первое: устройство не имеет права молчать дольше, чем человек готов ждать без объяснения, а это обычно несколько секунд. Второе: если работа долгая, устройство обязано говорить о процессе: «я ещё здесь, я прошёл половину пути, мне нужно ещё столько-то». Третье: если устройство сломалось, оно должно сломаться вслух — сообщить, что случилось, что потеряно, что можно спасти.

Eugen стёр доску, но правила переписал в блокнот. Он понимал: эта глава — не про баги. Баги бывают у всех. Эта глава — про то, что молчание после бага хуже самого бага, потому что оно разрывает язык.

2. Урок языка

В прошлой главе мы установили, что отказ — это часть диалога, если у него есть адрес. Теперь добавим: молчание — тоже часть диалога, только самая опасная. Потому что отказ хотя бы сообщает позицию, а молчание сообщает пустоту, которую каждый заполняет сам.

Человеческий разговор устроен так, что пауза всегда что-то значит. Мы умеем различать паузу задумчивости и паузу обиды, паузу вежливости и паузу растерянности. Мы делаем это по дыханию, по взгляду, по тому, как собеседник держит руки. У устройств нет дыхания и взгляда. Поэтому их пауза не читается — она только пугает. Человек смотрит на замерший экран и не знает, ждать ему, действовать или сдаваться.

Отсюда следует простое, но жёсткое положение: устройство не имеет права на немое молчание. Оно может работать долго, оно может ошибаться, оно может не знать ответа — но оно обязано сообщать о своём состоянии. «Я работаю» — это тоже высказывание. «Я застрял на этом шаге» — тоже высказывание. «Я потерял связь и пытаюсь её восстановить» — тоже высказывание. Даже «Я не понимаю, что вы от меня хотите, уточните, пожалуйста» — это высказывание, и оно в сто раз лучше тишины.

Важно различать два вида молчания. Первое — молчание как вежливость: устройство не перебивает человека, не сыплет уведомлениями, даёт ему договорить. Это хорошее молчание, оно похоже на паузу внимательного слушателя. Второе — молчание как исчезновение: устройство перестало отвечать, не объяснив, вернётся ли оно вообще. Первое молчание сохраняет диалог, второе — убивает его.

Разница между ними — в обещании возвращения. Внимательный слушатель молчит, но его поза говорит: «Я здесь, продолжай». Устройство, которое исчезло, не говорит ничего, и человек вправе решить, что его бросили. Поэтому хороший язык устройств всегда содержит сигналы присутствия: индикатор работы, промежуточный результат, хотя бы пульс. Не ради красоты, а ради доверия.

И ещё одна мысль, которую Eugen записал той ночью и подчеркнул дважды. Сбой — это не конец языка, а его проверка. Именно в сбое видно, был ли язык настоящим. Если устройство умеет говорить только тогда, когда всё хорошо, это не язык, а витрина. Настоящий язык проверяется тем, что устройство говорит, когда у него не получается.

3. Практика

Вспомните последний раз, когда устройство у вас зависло, потеряло сеть или просто перестало отвечать. Запишите, сколько времени вы ждали, прежде чем начали нервничать, и что именно вы подумали в этот момент. Скорее всего, ваша мысль была не о технической причине, а о социальном смысле: «меня игнорируют», «всё пропало», «я что-то испортил».

Теперь перепишите этот эпизод так, как он должен был выглядеть на языке, которому доверяют. Что устройство должно было сказать через пять секунд? Через тридцать? В момент, когда стало ясно, что оно не справится? Придумайте три фразы: о процессе, о проблеме, о спасении. Первая сообщает, что устройство ещё здесь. Вторая — что случилось. Третья — что можно сохранить и как продолжить.

Если вы разработчик, сделайте то же самое для одного долгого процесса в вашем продукте. Добавьте туда не просто индикатор загрузки, а честный рассказ о состоянии: какой шаг идёт сейчас, сколько осталось, что будет, если прервать. Вы удивитесь, как сильно меняется отношение людей, когда устройство перестаёт молчать и начинает рассказывать, чем оно занято.

4. Вопрос на проверку

Почему сбой с честным сообщением об ошибке разрушает доверие меньше, чем зависание без всякого сообщения, хотя в обоих случаях работа не выполнена?

Ответ засчитывается, если в нём есть мысль: сообщение сохраняет диалог и оставляет человеку роль участника — он знает, что случилось и что делать дальше; а молчание разрывает диалог, и человек сам придумывает худшее объяснение, превращаясь из участника в зрителя чужой поломки.