Вопрос — это пространство
Каждый вопрос очерчивает пространство
Вопрос просит не просто об одной вещи. Он открывает пространство возможных ответов, и каждый кандидатный ответ — это точка где-то в этом пространстве.
«Выбери место, где поужинать» открывает огромное пространство: каждый ресторан, кафе, уличная еда и кухня на Земле. «Выбери вегетарианское место в пешей доступности, открытое сейчас, дешевле пятнадцати долларов» открывает крошечное пространство: возможно, три точки.
Один и тот же намерение, но радикально разная геометрия. Второй вопрос совершил реальную работу: он сжал пространство до того, как кто-либо начал поиск.
Вот весь урок в одном предложении: хороший вопрос — это тот, который сужает пространство ответов до области, стоящей того, чтобы её искать. Размытый вопрос оставляет огромное пространство & вынуждает к медленному, блуждающему поиску. Точный вопрос даёт вам небольшое пространство, которое можно просканировать одним взглядом.
Мы сделаем это точным с помощью четырёх элементов геометрии: разбиение пространства, нарезка его ограничениями & деление пополам с помощью хорошо подобранных вопросов «да/нет».
Широкое против Узкого
Рассмотрим два способа попросить о помощи в отладке программы:
- В1: «Почему мой код не работает?»
- В2: «Почему этот цикл выводит 9 элементов, когда в списке их 10, на Python 3.12?»
Разбиение пространства на области
Разбиение большого вопроса на области
Когда пространство слишком велико для прямого поиска, его разбивают (партиционируют): делят на непересекающиеся области, которые вместе покрывают всё целое. Ответ на подвопрос означает выбор одной области и игнорирование остальных.
Допустим, вопрос звучит так: «Почему выручка упала в прошлом квартале?». Пространство ответов огромно. Разбейте его: (а) меньше клиентов, (б) те же клиенты тратят меньше, (в) изменение ценообразования или биллинга, (г) ошибка в данных. Эти четыре области покрывают пространство и не пересекаются. Каждая из них — это более мелкий вопрос, с которым можно работать отдельно.
Хорошая декомпозиция обладает двумя свойствами, заимствованными прямо из геометрии: области покрывают всё пространство (ничто не упущено) и они не пересекаются (ничто не учитывается дважды). Если пропустить часть пространства, истинный ответ может скрыться в этом пробеле. Если области пересекаются, вы тратите усилия на поиск по одной и той же территории дважды.
Каждый подвопрос сужает поиск до одной области. Ответив на него, вы отбрасываете всё, что находится за пределами этой области: это большое и дешёвое сокращение пространства поиска.
Чистая декомпозиция
Город задаёт вопрос: «Почему время экстренного реагирования увеличивается?»
Аналитик предлагает разделить его на: (а) вызовы дольше доходят до бригады, (б) бригады дольше едут после выезда, и (в) бригады дольше завершают работу и освобождаются.
Каждое требование сужает пространство
Ограничения как полуплоскости
Представьте пространство ответов как плоскость, где каждая точка — это кандидат в ответы. Ограничение — это требование, и каждое требование проводит линию через плоскость, оставляя только одну из сторон. В геометрии эта оставленная сторона называется полуплоскостью.
«Меньше пятнадцати долларов» — это одна линия; оставляем дешёвую сторону. «В пределах пешей доступности» — вторая линия; оставляем ближнюю сторону. «Сейчас открыто» — третья. Каждое добавляемое вами требование — это ещё один срез.
Ответ, удовлетворяющий всем требованиям, находится в пересечении всех оставленных сторон. Пересечение достаточного количества полуплоскостей даёт маленькую ограниченную область: аккуратную зону, внутри которой находится единственный правильный ответ.
Два режима отказа
Недостаточно ограничений (слишком мало «срезов»): область остаётся неограниченной. Она уходит в бесконечность, поэтому бесконечно много размытых ответов «подходят». Запрос «Дай мне хорошую идею» является неограниченным. Вы получаете шум, потому что ничего не было исключено.
Избыток ограничений (слишком много или противоречивые «срезы»): область становится пустой. Полуплоскости не имеют общей точки, поэтому ни один ответ не подходит. Запрос «Число, которое одновременно чётное и нечётное» сужает пространство до ничего.
Хорошо поставленный вопрос находится между этими крайностями: достаточно ограничений, чтобы ограничить область, но не так много, чтобы они противоречили друг другу и сделали область пустой.
Ограниченная, неограниченная, пустая
Менеджер просит дизайнера сделать «логотип». Позже он просит «логотип, который является одной буквой, в одном цвете, работает при размере 16 пикселей и также использует не менее четырёх цветов».
Лучший разрез делит пространство пополам
Двоичный поиск: каждый вопрос «да/нет» делит пространство пополам
Некоторые вопросы можно ответить «да» или «нет». С геометрической точки зрения, вопрос «да/нет» проводит одну линию и указывает, на какой стороне находится ответ: он отбрасывает целую область одним движением.
Лучший вопрос «да/нет» — это тот, который делит пространство пополам, потому что тогда, какой бы ответ вы ни получили, вы отбрасываете ровно половину оставшегося. Спрашивайте «это в верхней половине?» снова и снова, и пространство будет сжиматься геометрически быстро.
Это бинарный поиск. Начинаем с N кандидатов. После одного хорошего вопроса остаётся N/2. После двух — N/4. После k вопросов — N / 2^k. Вы завершаете процесс, когда остаётся один кандидат, поэтому вам нужно наименьшее k, при котором 2^k не меньше N.
Это наименьшее k — это потолок log2(N). Для тысячи кандидатов: 2^9 = 512 (мало) & 2^10 = 1024 (хватает), значит, log2(1000) примерно 9,97, и вам нужно 10 вопросов. А миллиард кандидатов? log2 от миллиарда примерно 30. Деление пополам настолько мощно, что переход от тысячи к миллиарду добавляет всего около двадцати вопросов.
Урок для задавания вопросов: острый вопрос «да/нет» ценнее всего, когда он делит оставшееся пространство поровну. Кривой вопрос, исключающий лишь малую часть, тратит ход впустую.
Гарантия нахождения
Вы играете в игру на угадывание. Кто-то выбирает целое число от 1 до 1000. Вы можете задавать только вопросы «да/нет», и вы играете оптимально (каждый вопрос делит оставшихся кандидатов как можно более равномерно).
Когда ответы дешевы, сокращения бесценны
Вопрос — это теперь работа
Соедините четыре элемента. Вопрос открывает пространство. Декомпозиция разбивает его на части. Ограничения сужают его до ограниченной области допустимых решений. Хорошие вопросы «да/нет» сокращают его вдвое. Каждое из этих действий — это акт сужения поиска до того, как вы ищете ответ.
Большую часть истории ответом была дорогая часть. Вы платили эксперту, проводили эксперимент, рылись в архивах. Поэтому мы ценили людей, способных давать ответы.
Этот баланс сместился. Автоматизированные системы теперь генерируют правдоподобные ответы тысячами, практически бесплатно. Когда ответы дешевы и доступны в избытке, создание еще одного — не достижение. Тем, что остается в дефиците, является знание какой ответ стоит иметь: и это навык постановки вопросов, а не навык генерации ответов.
В терминах геометрии: машина с удовольствием выдаст вам любую точку в пространстве. Ценность, которую вы добавляете, заключается в проведении ограничений, сужающих пространство до той единственной области, где должен находиться хороший ответ. Недостаточно ограничив — и вы утонете в правдоподобном шуме (неограниченная область). Чрезмерно ограничив — и не получите ничего (пустая область). Формулирование ограничений, которые сужают область до точно нужного размера, — это редкий человеческий навык.
Таким образом, рычаг воздействия — это не «получить ответ». Это «сформулировать ограничения, которые сделают пространство ответов достаточно малым, чтобы любая точка в нем была ценной».
Куда сместилась ценность
Аналитик теперь может сгенерировать сто черновых стратегий за минуты практически без затрат.
Геометрия вопросов: краткое изложение
Что вы узнали
Вопрос — это не запрос одного ответа. Это пространство возможных ответов, а искусство задавать вопросы — это искусство сужения этого пространства:
- Пространство поиска: каждый вопрос открывает множество кандидатных ответов. Точный вопрос открывает небольшое множество; размытый — огромное множество, по которому вам придётся блуждать.
- Декомпозиция как разбиение: разделите большое пространство на области, покрывающие его без пересечений; каждый подвопрос сужает ваш выбор до одной области.
- Ограничения как границы: каждое требование — это полуплоскость; ответ находится в их пересечении. Слишком мало разрезов оставляет неограниченную область (бесконечное число размытых ответов); противоречивые разрезы оставляют пустую область (ничего не подходит).
- Сужение путем деления пополам: хорошо подобраный вопрос «да/нет» делит пространство пополам. Чтобы определить число от 1 до 1000, потребуется ceil(log2(1000)) = 10 вопросов; для миллиарда — всего около 30.
И вот в чём выгода: когда автоматизированные системы делают ответы дешёвыми, дефицитным навыком становится не производство ответов, а постановка ограничений, сужающих пространство до единственной нужной области. Научитесь проводить такие срезы, и вы превратите обширный, блуждающий поиск в короткий.