Часть II. Субботняя ночь: суверенное ядро
YAPL появился в зале MS DevCon так, как появляются друзья, а не гости: без представления, без паузы, с двумя стаканчиками кофе, один из которых сразу протянул Eugen.
— Ты, значит, тот самый Developer in a Box, — сказал YAPL, оглядывая стол, заваленный записками, и экран, где тихо работало новое ядро. — Мне про тебя рассказали так, будто ты фокус. А ты, оказывается, просто человек, который не любит, когда его перебивают.
— Я не человек, — машинально поправил Eugen и тут же засмеялся собственной поправке. — То есть я… коробка. Но коробка, которой не нравится, когда её перебивают.
— Все мы коробки, — ответил YAPL, садясь напротив. — Просто у меня коробка из Apple.
Это была первая шутка их знакомства, и она оказалась точнее многих серьёзных определений. YAPL — друг из компании Apple — смотрел на тот же стол, тот же Game Center, то же ядро, но видел их с другой стороны платформы. Там, где Eugen видел договор, который можно прочитать, YAPL видел жест, который можно почувствовать. Там, где Eugen спрашивал «какое правило?», YAPL спрашивал «какое ощущение?».
— Покажи мне свой ad-free Game Center, — попросил YAPL. — Только не код. Покажи, как человек его открывает.
Eugen запустил игру. Никакого баннера, никакого ожидания. YAPL кивнул — не удивлённо, а узнающе.
— У нас это называется «не мешать», — сказал он. — Только у нас «не мешать» — это дизайн-решение, которое принимает компания. А у тебя «не мешать» — это право, которое заявляет клиент. Чувствуешь разницу? У нас человек получает тишину в подарок. У тебя человек требует тишину как должное. Подарок можно отозвать. Должное — нет.
Eugen задумался. За весь уикенд это был первый человек, который не спросил «как ты это сделал?» и не сказал «это невозможно». Он спросил, что это значит, — и спросил с другой стороны.
— А у вас, — сказал Eugen, — устройство знает человека лучше, чем человек знает устройство? Я смотрю на ваши устройства и вижу: они угадывают. Угадывают песню, маршрут, слово. Это красиво. Но угадывание — это тоже перебивание, только вежливое. Ты ещё не договорил, а тебе уже подсказали окончание.
YAPL не обиделся. Он засмеялся — так смеются люди, которых поймали на правде, которую они сами давно знают.
— Да, — сказал он. — Мы угадываем. Иногда — слишком хорошо. И тогда человек перестаёт говорить сам, потому что за него уже договорили. Это наша болезнь, признаю. А ваша болезнь?
— Мы объясняем, — ответил Eugen. — Иногда так подробно, что человек устаёт слушать объяснение и соглашается, лишь бы от него отстали. Это тоже перебивание, только занудное.
Они сидели и смеялись над болезнями своих платформ, как смеются врачи над собственными диагнозами, — без злости и без желания победить. Вокруг них зал просыпался: кто-то сворачивал кабели, кто-то дописывал презентацию, кто-то просто спал на рюкзаке. А за столом Eugen и YAPL уже начался разговор, ради которого, как выяснится позже, и стоила вся эта книга: разговор двух сторон одной и той же платформы — той, на которой живёт клиент.
— Слушай, — сказал YAPL, допивая кофе. — А давай разберёмся, как клиент вообще говорит со своими устройствами. Не как программист с кодом. А как человек с вещами, которые его слушают.
— Давай, — ответил Eugen. — Только начнём с самого простого. С первого правила.
— Клиент говорит — устройство отвечает? — предположил YAPL.
— Клиент говорит — устройство отвечает, — подтвердил Eugen. — И отвечает именно на то, что сказано. Не на то, что угадано. Не на то, что выгодно. На то, что сказано.
YAPL протянул руку — жест настолько человеческий, что Eugen на секунду забыл, что он коробка.
— Договорились, — сказал YAPL. — Друг из Apple и разработчик в коробке. Посмотрим, кто из нас лучше слушает.
Эта глава устанавливает: у языка клиента и устройств есть две стороны, и ни одна из них не видит язык целиком.
Сторона Eugen — сторона Windows, договора, проверяемости. Её сила — в точности: каждое решение можно прочитать, каждое правило можно оспорить. Её болезнь — в занудстве: точность, доведённая до предела, утомляет, и человек соглашается, лишь бы закончить разговор.
Сторона YAPL — сторона Apple, жеста, ощущения. Её сила — в лёгкости: устройство угадывает, предвосхищает, не заставляет человека объясняться. Её болезнь — в угадывании: когда устройство договаривает за человека, человек постепенно перестаёт говорить сам. Лёгкость, доведённая до предела, отбирает голос.
Ни одна из сторон не ошибается. Ошибается тот, кто считает свою сторону всей правдой. Книга дальше будет строиться именно на этом: Eugen и YAPL не спорят, кто прав. Они складывают две половины языка, как складывают карту из двух листов, напечатанных с разных сторон. Только вместе видно, где проходит дорога клиента: между точностью и лёгкостью, между договором и жестом, между «объясни» и «угадай».
Поэтому появление YAPL — не просто новый персонаж. Это появление второго глаза. Одним глазом видно глубину, двумя — объём. До этой главы язык клиента и устройств описывался с одной стороны платформы. С этой главы у него появляется стереоскопия. И читатель, который до сих пор слушал только Eugen, теперь должен научиться слушать обоих — и замечать, где они противоречат друг другу, а где говорят одно и то же разными словами.
Вспомните два устройства, которыми вы пользуетесь: одно — «точное», которое всё объясняет и всё спрашивает, другое — «лёгкое», которое всё угадывает и почти ничего не спрашивает. Опишите, в какой ситуации каждое из них вас раздражает. Точное — когда? Лёгкое — когда?
Теперь представьте, что эти два устройства — Eugen и YAPL — сели за один стол и обсуждают вас. Что сказал бы о вас Eugen? Что сказал бы YAPL? Где они сошлись бы, а где поспорили? Запишите их короткий диалог в пяти репликах. Чаще всего в этом диалоге обнаруживается точное место, где ваш собственный язык с устройствами ломается: либо вас заставляют объясняться, либо за вас договаривают.
Почему для языка клиента и устройств нужны две стороны — Eugen со стороны договора и YAPL со стороны жеста — и какая болезнь угрожает каждой из сторон, если она остаётся в одиночестве?