18+
реклама
18+
Бургер менюБургер меню

Сатоши Накомото – Второй язык мышления: как думать алгоритмами (страница 2)

18

Ветвление: если-то-иначе

Если температура ниже нуля – надеть куртку. Иначе – достаточно кофты. Если клиент согласен – подписываем договор. Иначе – готовим контрпредложение. Если есть время – сделаю сам. Иначе – делегирую.

Мы делаем это постоянно, но редко явно. Результат: забываем проверить условие, действуем по привычке в неподходящей ситуации, не готовы к альтернативе. Явное ветвление выглядит так:

Если [условие проверено]

То [действие А]

Иначе [действие Б]

Ключевое слово – проверено. Не «если мне кажется», не «если обычно», а «если я убедился, что». Проверка требует критериев. «Холодно» – не критерий. «Температура ниже 10 градусов» – критерий. «Клиент доволен» – не критерий. «Клиент подписал акт приёмки без замечаний» – критерий.

Вы собираетесь на встречу. Неявное ветвление: «Если успею – заеду за документами». Явное: «Если до выхода осталось больше 20 минут – заезжаю. Иначе – прошу коллегу прислать скан». Разница в надёжности очевидна. Неявное ветвление оставляет место для самообмана. «Успею» – субъективно. «20 минут» – объективно.

Вложенные ветвления: если А, то если Б, то В, иначе Г. Жизнь полна таких конструкций. Если работа срочная, то если ресурсов хватает, то делаем сами, иначе нанимаем подрядчиков. Если подрядчики доступны, то запускаем тендер, иначе ищем напрямую. Каждый уровень добавляет сложность. Каждый уровень требует явности. Иначе теряетесь в лесу условий.

Циклы: повторение с изменениями

Сделай X. Проверь условие Y. Если Y не выполнено – повтори. Циклы экономят мыслетопливо. Вместо «позвони всем клиентам из списка» – десять раз «возьми следующего клиента, позвони, отметь результат». Вместо «пишу диссертацию» – каждый день «пишу 500 слов, проверяю прогресс, корректирую план».

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

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

Условие продолжения: когда останавливаемся. Не «пока не устану», а «пока не закончится список» или «пока не пройдёт 2 часа» или «пока качество не упадёт ниже порога».

Изменение состояния: что меняется, чтобы цикл не был бесконечным. Список сокращается, время истекает, прогресс накапливается. Без изменения – вы делаете то же самое снова и снова, ожидая другого результата. Это определение безумия, не алгоритма.

Пример плохого цикла: «Буду улучшать презентацию, пока не станет идеально». Результат: 47 версий и дедлайн сорван. Идеально – не критерий, это иллюзия. Пример хорошего цикла: «Делаю версию → показываю коллеге → если одобряет – стоп, иначе – вношу правки и повторяю (максимум 3 итерации)». Ясное тело, ясное условие, ясное изменение.

Комбинация элементов

Последовательность, ветвление, цикл – строительные блоки. Из них строится всё. Сложный алгоритм – это вложенность: цикл внутри ветвления внутри последовательности внутри цикла. Читаемость требует структуры. Отступы, группировка, именование.

В жизни: сначала определяете структуру дня (последовательность периодов). Внутри каждого периода – циклы задач. Внутри каждой задачи – ветвления по контексту. Внутри каждого ветвления – последовательность шагов. Явная структура позволяет отлаживать. Что работает, что нет, где задержка, где ошибка.

Упражнение: три кита в одном

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

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

Это не упражнение на бумаге. Это прототипирование реальности. Чем точнее описание, тем плавнее исполнение. Чем размытее описание, тем больше сюрпризов.

Глава 3. Абстракция: зачем забывать детали

Парадокс деталей

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

Абстракция – намеренное забвение. Отбрасывание деталей, которые не влияют на решение прямо сейчас. Не потому что они неважны, а потому что важны в другом контексте, в другое время, для другого человека.

Почему мозг не любит абстракцию

Эволюция наградила нас вниманием к деталям. Заметить шевеление в кустах – выжить. Пропустить деталь – стать добычей. Мы прирождённые деталисты, а не абстракционисты.

Но современный мир требует обратного. Информации слишком много. Деталей бесконечно. Выбрать значимое – ключевой навык.

Абстракция идёт против инстинкта. Требует усилия, дисциплины, практики. Награждается способностью видеть лес за деревьями, стратегию за тактикой, суть за формой.

Уровни абстракции: подробный разбор

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

Уровень минус один: физика. Молекулы, атомы, квантовые эффекты. Нужно физикам-теоретикам, никому больше.

Уровень ноль: биомеханика. Сокращение мышц, углы суставов, распределение веса. Нужно реабилитологам, спортивным тренерам, инженерам экзоскелетов. Для похода в магазин – избыточно.

Уровень один: двигательные акты. Идти, поворачивать, открывать дверь, брать продукт. Нужно обучающим системам для роботов. Для человека – автоматизировано.

Уровень два: навигация. Выйти из дома, повернуть налево, пройти 200 метров, войти в магазин. Нужно планирующему маршрут, оценивающему время, объясняющему дорогу другому.

Уровень три: цель покупки. Купить молоко. Нужно составляющему список покупок, контролирующему бюджет, планирующему питание семьи.

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

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

Уровень шесть: цель самореализации. Жить осмысленно, реализовывать потенциал, оставить след. Нужно философу, выбирающему между карьерой, творчеством, служением, потреблением.

Переключение уровней

Мастерство абстракции – не выбор «правильного» уровня, а умение переключаться. Застряли в деталях – поднимитесь. Потеряли смысл – опуститесь.

Пример: конфликт на работе. Уровень ноль: кто что сказал, в каком тоне, кто первый начал. Уровень два: распределение ролей в команде, зоны ответственности, процедуры коммуникации. Уровень четыре: цели проекта, ценность результата, приоритеты бизнеса.

Застрять на уровне ноль – превратить конфликт в войну. Подняться на уровень четыре – найти решение, удовлетворяющее всех. Но игнорировать уровень ноль полностью – потерять доверие команды, которая видит детали.

Абстракция в коммуникации

Разные люди работают на разных уровнях. Разногласия часто – не по сути, а по уровню абстракции.

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

Хороший коммуникатор явно маркирует уровень. «Стратегически нам нужен рост. Тактически я вижу три направления. Операционно начнём с перераспределения бюджета соцсетей на поиск». Три уровня – три аудитории – одно сообщение.

Абстракция в обучении

Обучение – движение между уровнями. Хороший учитель начинает с конкретики (уровень два), поднимается к принципу (уровень четыре), возвращается к новой конкретике (уровень два).

Пример: математика. Конкретная задача: сколько яблок у Пети. Принцип: уравнение с одним неизвестным. Новая конкретика: сколько времени до встречи.

Плохой учитель застревает на одном уровне. Или только задачи без принципов (зубрёжка). Или только принципы без задач (оторванная теория).

Опасность абстракции: потеря существенного

Абстракция – нож. Можно отрезать лишнее, можно отрезать важное.

Классическая ошибка: «Сотрудники – это ресурс». Абстракция верна для бухгалтерии: зарплата в строке расходов. Губительна для корпоративной культуры: люди уходят, мотивация падает, продукт страдает.

Другая ошибка: «Клиент – источник выручки». Верна для отчётности. Губительна для продукта: игнорируются реальные потребности, оптимизируется конверсия, теряется доверие.

Правило: всегда помните, что отбросили. Ведите список допущений. Периодически проверяйте: не стали ли они критичными?

Абстракция и эмпатия

Эмпатия требует спуска на уровень деталей конкретного человека. Абстракция – подъёма к общим принципам. Баланс между ними – основа мудрости.

Слишком абстрактно: «Все люди хотят счастья». Бесполезно для конкретного действия.

Слишком конкретно: «Петя хочет яблоко». Не помогает с Марией, Васей, следующим запросом Пети.

Золотая середина: «Люди хотят удовлетворения базовых потребностей разными способами». Направляет, но не предписывает. Оставляет место для исследования.