Глава 14. Протокол вежливости

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

1. Сцена

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

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

— Покажи, — сказал YAPL, — как он отказывает.

Eugen не удивился вопросу. За день до этого, в главе о первом правиле диалога, они уже договорились: клиент говорит — устройство отвечает. Но ответ бывает не только согласием. Иногда устройство должно сказать «нет». И вот тут начинается самое интересное.

Eugen открыл Game Center без рекламы, тот самый, переписанный в субботу ночью. Он нажал кнопку, которая раньше всегда вела к покупке внутри приложения. Теперь экран не вспыхнул баннером и не выскочил с предложением «только сегодня». Он просто спокойно сообщил: «Это действие требует подтверждения. Продолжить?»

— Скучно, — честно сказал YAPL. — Где драма?

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

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

— Видишь? — сказал YAPL. — У нас это называется вежливостью по умолчанию. Устройство спрашивает так, чтобы человек мог ответить, не чувствуя себя глупым или загнанным в угол.

— А у нас, — сказал Eugen, — вежливость часто прячут в настройки. Человек должен сам найти, где спрятано «нет». Я хочу, чтобы «нет» лежало на поверхности, как кнопка «да».

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

— Вот это, — сказал YAPL, указывая на третий экран, — невежливость в чистом виде. Устройство делает вид, что слушает, а на самом деле просто повторяет себя. Это как человек, который на любой вопрос отвечает «ага», не вникая.

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

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

— Это же обычный этикет, — сказал YAPL.

— Да, — ответил Eugen. — Только записанный в протокол. Этикет, который нельзя забыть от усталости, потому что он — часть языка.

2. Урок языка

Язык клиента и его устройств — это не набор команд. Это диалог, а в любом диалоге отказ значит не меньше, чем согласие. Если устройство умеет только соглашаться, оно не собеседник, а слуга, который кивает, даже когда не понимает. Если оно умеет только запрещать, оно не собеседник, а надзиратель.

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

Заметьте: вежливость здесь — не украшение и не тон голоса. Это структура высказывания. Грубое «Ошибка 403» и вежливое «У вас нет доступа к этой папке, потому что она принадлежит другой команде; попросить доступ можно здесь» сообщают, по сути, одно и то же. Но первое оставляет человека одного с проблемой, а второе оставляет его с дорогой. Разница между ними — это разница между языком, который описывает мир, и языком, который помогает в нём жить.

Именно поэтому Eugen и YAPL так долго разбирали экраны. Они проверяли не дизайн и не шрифты, а грамматику отказа. Есть ли в отказе подлежащее — кто отказывает? Есть ли причина — почему? Есть ли будущее время — что будет дальше? Если хотя бы одного элемента нет, фраза получается невежливой, даже если написана вежливыми словами. «К сожалению, произошла ошибка» звучит мягко, но ничего не объясняет и никуда не ведёт. Это вежливость как маска, а не как протокол.

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

Отсюда следует положение этой главы, которое стоит запомнить целиком: вежливый отказ — это отказ с адресом. Без адреса «нет» превращается в стену. С адресом «нет» превращается в указатель.

3. Практика

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

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

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

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

Почему фраза «К сожалению, произошла ошибка» может быть менее вежливой, чем короткое «Нет, файл удалён. Восстановить можно из корзины до понедельника», хотя первая звучит мягче?

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