Глава 17. Спор о том, кто кому служит

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

1. Сцена

Спор начался не с крика, а с тишины. Eugen Valuev и YAPL сидели на ступеньках зала MS DevCon и смотрели, как расходятся последние посетители хакатона. У каждого в руках был телефон. Eugen только что настроил свой так, чтобы ни одно приложение не могло ничего сделать без его явного разрешения. YAPL только что настроил свой так, чтобы телефон сам решал, какие уведомления важны, а какие подождут до утра.

— Смотри, — сказал Eugen, показывая экран, — вот моя свобода. Машина ничего не делает без меня. Я — хозяин. Она — инструмент.

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

Они посмотрели друг на друга и рассмеялись, потому что оба употребили одно и то же слово — «свобода» — и имели в виду почти противоположное.

— Твоя машина, — сказал YAPL, — ждёт твоей команды, даже когда ты спишь. Ты свободен решать всё сам — и несвободен отдохнуть от решений. Сколько раз в день ты нажимаешь «разрешить»? Сто? Двести? Это не свобода, это дежурство.

— Твоя машина, — ответил Eugen, — решает за тебя, пока ты спишь. Ты свободен от мелочей — и несвободен проверить, что она решила. Она отфильтровала уведомление, а ты даже не узнал, что оно было. Это не свобода, это опека.

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

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

— А я попробую твою, — сказал YAPL. — Когда человек может проверить любое решение машины, он и правда свободнее. Я сам это видел: приложение, которое просит доступ к фотографиям, должно показать, что именно оно возьмёт и зачем. Если оно прячет это решение, доверие рушится, даже если решение было правильным.

Они помолчали. Внизу по улице проехал велосипедист, и его звонок прозвучал как точка в предложении.

— Значит, вопрос не в том, кто кому служит, — сказал Eugen медленно. — Вопрос в том, как устроена служба. Слуга, которого нельзя проверить, — это уже не слуга, а хозяин в маске. А хозяин, который должен решать всё сам, — это уже не хозяин, а дежурный.

— Да, — сказал YAPL. — Служба — это договор. Машина служит человеку, но человек должен иметь возможность в любой момент спросить: «Что ты сделала от моего имени? Почему? Покажи». И машина должна ответить — на языке, который человек понимает, а не на языке логов.

— А человек служит машине? — спросил Eugen, и сам удивился своему вопросу.

— Только в одном смысле, — ответил YAPL. — Человек учит машину, чего он хочет. Каждый раз, когда ты исправляешь её решение, ты её воспитываешь. Это не служба, это воспитание. Родитель тоже служит ребёнку, но и воспитывает его. Разница в том, кто в итоге отвечает за поступок.

— Отвечает человек, — сказал Eugen твёрдо. — Всегда. Даже если решение приняла машина. Потому что машина — это продолжение его воли, а не замена ей. Если машина ошиблась от моего имени, это моя ошибка, которую я должен исправить и из которой машина должна научиться.

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

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

— Ну что, — сказал YAPL, — кто кому служит?

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

2. Урок языка

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

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

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

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

Заметьте, что спор Eugen и YAPL не решается голосованием. Он решается тем, что обе стороны признают правду друг друга и находят формулировку, в которой обе правды помещаются. Это и есть работа языка: не объявить победителя, а построить предложение, в котором противоположности перестают противоречить. Машина служит человеку — и человек воспитывает машину. Обе фразы истинны одновременно, если под службой понимать договор, а не подчинение.

3. Практика

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

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

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

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

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

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