Разработка
January 18, 2024

Этот, ну тот. Теряем контекст

Сначала немножко про людей, потом про код — ниже по тексту.


Знаете, как затянуть обсуждение любого вопроса на лишние бесполезные 5-50 минут, а то и просрать вовсе?

Использовать в диалоге отсылки вида «тот», «там сделали», «когда раньше», «было у них», «снова», следом обобщения «ничего», «везде», и односложные согласия.


В принципе, «не делать так» — можно было бы просто записать в рецепты.
И я именно это писал, для сотрудников.

Плохой пример
— там прямо сейчас всё сломано

Проверяем:
— там (где?) прямо сейчас (время?) всё (что?) сломано (в смысле?)

Исправляем:
— в системе АА на вебе с 10:00 не работают базовые функции, начиная с логина

Но сам вопрос несколько сложнее.


Почему. Потому что коммуникация бывает разная. Немножко уже упоминал, когда писал про следующий шаг. Задайте самостоятельно к своему сообщению проверочные вопросы, и заранее разверните и раскройте контекст так, чтобы он читался одномоментно. Сразу.

Сложность в том, что коммуникация бывает и асинхронная, и односторонняя. Где вы никакого понятия не имеете о том, знает ли адресат, о чем вы вообще говорите. Адресат, соответственно, понятия не имеет, что происходит в вашей голове, и на что вы ссылаетесь в речи.

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

(электропочта решала этот вопрос механизмами цитирования и «ответа на ответ», но помогало не сильно)


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

Вот только есть коллизия:

  • разработчик софта мыслит в рамках понятийного контекста, созданном внутри софта. Всё внимание разработчика отдано экрану приложения, он так со вселенной будет взаимодействовать, вот его детище. Они что, читать не умеют?
  • а пользователю категорически всё равно. В мире пользователя на телефоне запущена дюжина аппликух, сыплются уведомления, вокруг улица, ездит транспорт, орут дети, происходят биржевые кризисы, жене надо выбрать подарок, а, да, вот еще что-то приложение от меня хочет. Сейчас достану из заднего кармана на морозе в перчатках.

Не только не умеют читать, но и не будут. И голову включать не будут, думать не будут (вот еще). Голова пользователя занята явно более важными — для него — вещами, чем хотелки вашего приложения.

Не надо забывать, что ваше место, и место вашего приложения, для пользователя в его мире — где-то около заднего кармана джинсов.
По-русски — в жопе.


Текстового одностороннего общения — текстов, рекламы, инструкций, писем — касается аналогично.

Сидит недалекий маркетолог (или даже владелец бизнеса), и грезит о том, что он сейчас скажет всему миру «теперь ставки по кредитам нашего банка на 3% ниже!», ка-а-ак все сразу всё осознают и побегут к нему.

Ведь в его мире это максимально весомый шаг: минус 3% со ставки в (допустим) 8% означает, что за вычетом 2% оп.расходов это вдвое (!) снижена маржа банка. Это царский скидос в 50% по сути, и это на фоне осеннего падения одобряемости, и можем себе такое позволить.

Значит зеленый-то банк наконец-то нагнул синий, вот и всё, вот и доказали кто здесь папа, вот и началось! Как вообще можно не понять такого фундаментального захода, вы что там, уснули все?!

Читателю категорически насрать, он искренне не понимает и не хочет понимать, о чем идет речь. Это не в его мире происходит, и контекста у читателя никакого на этот счет нет, и не передано.

«Теперь» — а какие они вообще были то? «Нашего банка» — какого? Их только в Питере пятьдесят. «На 3% ниже» — ниже чего? А какие они должны быть? Ниже — это как в слове «выгоднее», или как в слове «меньше денег дадут»?

Почему это вообще должно волновать меня? Цифры — может, вы их сначала подняли на 10%, а потом опустили на 3%, или как там у вас банкиров принято? Может у этого банка минус три, а у соседнего минус пять, и какой из них ваш?

И вообще отстаньте, там что-то на бедном, и не про меня.

Контекст, на который в своей голове ссылался автор, в сообщении не передан никак. Это разговор глухих, он не сойдется.


Общение программной системы с внешним миром — это тоже общение. Которое писали разработчики, а иногда и более способные люди. Совсем плачевно обстоят дела с подобным общением в ситуации реактивной (от слова реакция), когда система вынуждена отреагировать, и даже что-то захотеть.

Ссылаться на любые контексты, состояния, цепочки действий, предполагаемые знания — нельзя. Всю информацию для принятия решения следует раскрывать сразу.


Предупреждение безопасности в редакторе VSCode

Для тех, кто не знаком: человек открывает редактор, чтобы начать работать, и видит вот это. Вместо работы от нас что-то хотят. Что-то про доверие/trust.

Что здесь не так. Окно похорошело с прошлой версии — добавилась папка с кодом, о которой идет речь. Раньше и её не было.

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

Большинство ткнет подсвеченную кнопку, чтобы не включать мозг. Поведение неудачное (нам говорят, что пострадает безопасность).


Ну и любимое:

Domain Mode Elevation в Windows Server

Даже если отбросить наглядную шутку про «возможно невозможно» (переводчик изнасиловал программиста), все равно к такой коммуникации больше вопросов, чем ответов. «Повышение режима работы» с какого на какой? Вероятно, на какой-то злой, раз спрашивают.

Какого домена, exactly? Что значит «невозможно», а если сервак выключу из розетки? А чем повышение грозит? Если вы такие страшные, что сломается то? И у кого, прям у меня, или пользователи придут с вилами? Сомнения.


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

В мире разработчика же всё очевидно, выбрал одно, выбрал другое.

В мире пользователя операционная память девичья (восемь метров) и занята чем угодно, но явно не тем, чтобы догадываться о поведении софта. А поведение просто немного бесит.

Как вариант, для сложных и важных моментов используйте отдельное (сводное) явное подтверждение, «вот что конкретно сейчас произойдет». Не надо мучить человека додумыванием и догадыванием, не тратьте его внимание, ему всегда не до вас.

Да и отмену предусмотреть не лишне. Больше предсказуемости, меньше рисков, значит и париться меньше.


Вернемся к контекстным отсылкам, из начала статьи.
Тот, этот, туда, там, и т.п.

Проверочное правило 1: если собеседник и получатель сообщения не сидит прямо сейчас перед вами, то контекстные отсылки следует раскрывать, в идеале — до фактов. Или избегать их вовсе.

Проверочное правило 2: если взаимодействие предполагает шаги и этапы (или просто длиной более 10 минут), то либо общий контекст должен быть доступен и раскрываться моментально, либо должна быть сводная summary для ясности восприятия.

Проверочное правило 3: убедитесь, что вы общаетесь с адресатом в его мире, а не в своем. Об этом много у Ильяхова, кстати, написано.

Дядя Максим также постулирует: чтобы меньше косячить с контекстами, нелишне будет проработать структуру. Тоже посмотрите.

Если вы проектируете человеко-машинное взаимодействие, т.е одной стороной коммуникации выступает машина/система, то
проверочное правило 4:

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

Но про «возможность помнить» (и забывать) потянет снова на отдельную статью.
Это отложим на попозже.


Вопрос написания хороших полезных задач в том числе связан с раскрытием контекстов, take a look.