Закон Конвэя внутри нас: инженерные системы ломаются по тем же причинам, что и люди
Linux пропитан магией. Тип файла определяется не по расширению, а библиотекой magic, которая смотрит на сигнатуру первых байтов. В системе живут демоны, процессы могут работать в режиме daemon, а исполняемые файлы хранятся в формате ELF и разбираются утилитой readelf. Это похоже на шутки старых разработчиков, но они появились не случайно.
Инженерные системы наполнены метафорами, потому что так проще думать о сложном, объяснять невидимое и работать с тем, что нельзя потрогать руками. Со временем мы привыкаем к этой «магии» и перестаём замечать, что вместе с ней перенимаем определённый способ мышления.
Закон Конвэя обычно применяют к организациям и архитектурам. Но этот принцип работает и на уровне отдельного человека. Каждый из нас тоже система со своими процессами, ограничениями, шаблонами мышления и сбоями.
Привет, Хабр! Я Анатолий Панин-Бычков архитектор по облачным технологиям в X5 Tech. Увлекаюсь проектированием и оптимизацией эффективных распределённых систем как в сервисах, так и в командах, системным подходом к архитектуре и жизни в целом. В этой статье предлагаю посмотреть на инженерные системы и человека как на конструкции одного класса. Почему перегрузка ломает и сервисы, и людей. Откуда берутся токсичные взаимодействия. Зачем нужно логирование, даже если речь идёт не о коде. И почему в инженерном мире удовольствие от работы связано не с мотивацией, а с устойчивостью системы. Цель не в том, чтобы «оптимизировать себя как микросервис», а научиться вовремя замечать деградацию — свою и системную — и бережнее распределять ресурсы.
Магия как инженерный язык
Ранние вычислительные системы работали в условиях жёстких ограничений. Память измерялась килобайтами, процессорное время было дорогим, а доступ к машине был сразу у нескольких человек. Любое лишнее действие стоило ресурсов, а ошибка могла означать потерю результатов многочасовой работы.
В такой среде сложность держали под контролем. Поэтому архитектуру делали простой, интерфейсы минимальными, а поведение системы сильно предсказуемым. Разработчикам приходилось разбираться, как всё устроено внутри, потому что уровень доступных абстракций был ограничен, и за ними быстро начинались реальные ограничения железа.
При этом команды были небольшими и стабильными. Люди годами работали с одними и теми же системами, знали их ограничения и постепенно вырабатывали общий язык. Метафоры помогали передавать знания и снижать когнитивную нагрузку. Они служили способом договориться о сложных вещах без длинных спецификаций. Ведь всем известные тиражируемые образы понятнее любых объяснений.

Всё это напоминало классическое фэнтези, где магия сильна, но стоит дорого. Ограничения замедляли развитие, снижали мобильность и часто приводили к жёсткой иерархии. Зато они формировали среды, в которых и системы, и люди были вынуждены оставаться цельными и согласованными.
Парадокс современного комфорта
Со временем ограничения ослабли. Память и вычислительная мощность подешевели, а доступ стал персональным. Многие задачи, которые раньше требовали глубокого понимания устройства системы, стали решаться автоматически или скрываться за API и сервисами.
На первый взгляд это должно было упростить работу, но на практике увеличило нагрузку. Выросло количество контекстов, каналов коммуникации и точек входа. Задачи стали мельче, переключения чаще, а ожидания выше. Системы стали сложнее, но эта сложность распределилась между десятками уровней абстракции.
В результате мы всё реже видим систему целиком. Многие процессы просто «работают», пока не перестают. А когда что-то ломается, приходится искать причину поломки сразу на нескольких уровнях, не всегда понимая, как они между собой связаны.

Комфорт убрал одни ограничения, но принёс другие. Менее заметные, но не менее жёсткие: перегрузка, фрагментация внимания и постоянное ощущение нехватки времени. Именно в этой точке инженерные системы и люди начинают ломаться похожим образом.
Закон Конвэя уровня N-1
Закон Конвэя обычно формулируют так: архитектура системы отражает структуру коммуникаций внутри организации. Им объясняют появление микросервисов, особенности распределённых команд и многие организационные антипаттерны.
Но по мере роста сложности систем и процессов, с которыми работают команды, становится заметно, что этот принцип подходит и для «другой стороны». Команды состоят из людей, а значит архитектура системы в конечном счёте отражает не только формальные процессы, но и индивидуальные способы мышления, и точки интеграции: мы как инженеры, так же представляем собой распределённую систему и имеем свои каналы коммуникации внутри неё.
С точки зрения системного подхода, мы сами являемся системой, а наши коллеги и смежники являются системами в нашем окружении (system in operational environment). При этом что под нагрузкой, что без: наши привычки взаимодействия определяются нашими «внутренними конфигами». Каждый человек внутри команды не только по-своему распределяет внимание, обрабатывает входящие запросы, переключается между задачами и справляется с перегрузкой. Он имеет свой слой убеждений (предубеждений, предвзятостей и т. д.), который определяет на что он базово обращает внимание, какие понятия выделяет, с кем и в каком стиле общается. Все эти особенности напрямую влияют на то, как он проектирует системы, пишет код, обсуждает решения и идёт на компромиссы.
В этом смысле закон Конвэя можно рассматривать на уровне N-1. Архитектура системы отражает не только структуру команды, но и внутреннюю архитектуру людей, которые её строят. Чем менее устойчивы эти внутренние системы, тем менее устойчивыми оказываются и внешние.
В обычных условиях влияние внутренних особенностей человека на систему почти незаметно. Но под нагрузкой мы начинаем упрощать решения, усиливать связность, плодить обходные пути. Это не мгновенный отказ, а постепенная деградация: очереди растут, таймауты увеличиваются, кеши доминируют, качество падает ради доступности.
То же самое происходит и с человеком. Под давлением он сокращает контекст и чаще выбирает знакомые паттерны. Например, почти все слышали о слепой десятипальцевой печати. Она повышает скорость набора текста и снижает количество ошибок. Но мы вспоминаем о ней, когда во время демонстрации экрана забываем переключить раскладку и печатаем бессмысленный набор символов под неловкое молчание коллег. Потом пытаемся одним длинным нажатием Backspace стереть всё сразу и злимся ещё больше, когда это не получается.

В устойчивом режиме таких ошибок почти не бывает, но при росте входящего потока задач и ожиданий человек начинает действовать как система с переполненными очередями. Снижается глубина анализа, увеличивается количество быстрых решений, возрастает зависимость от привычных паттернов. Контекст удерживается хуже, а сложные связи между частями задачи выпадают первыми.
Такая деградация почти незаметна изнутри. И система, и человек продолжают функционировать. Они отвечают на запросы, закрывают задачи и формально остаются работоспособными. Но устойчивость уже потеряна, а любая дополнительная нагрузка приводит к сбоям.
Существует устойчивый антипаттерн, который редко воспринимается как проблема. Система формально работает, инциденты закрываются, SLA соблюдаются, но почти всегда в режиме спешки. Временные фиксы закрепляются, а аварийный режим становится нормой.
В 2012 году алгоритмы Knight Capital Group, одного из крупнейших игроков рынка высокочастотной торговли в США, обеспечивали 17% объёма торгов на NYSE и NASDAQ. Команда готовила систему к новому биржевому протоколу. В коде торговых маршрутизаторов SMARS, через которые ежедневно проходили миллиарды долларов, изменили один флаг, чтобы включить новую логику. При этом старый функционал остался в кодовой базе, а один из серверов из-за ошибки деплоя не получил обновление.
В результате 1 августа, после открытия рынка, семь серверов работали корректно, а восьмой запускал старый код и генерировал миллионы дочерних ордеров на каждую входящую заявку, не проверяя факт исполнения сделок. За сорок пять минут система отправила около четырёх миллионов ошибочных ордеров. Поток удалось остановить только вручную. Убыток составил 440 миллионов долларов, что было в несколько раз больше годовой прибыли компании.
Этот инцидент не был результатом одного бага. Он стал следствием системы, которая долгое время работала в режиме перегрузки и временных решений.
Именно поэтому перегрузка опасна не резким отказом, а накоплением технического и когнитивного долга. Он растёт постепенно и проявляется только тогда, когда не хватает времени на продуманные решения.
Практические следствия
1. Личная наблюдаемость важнее оптимизации внимания.
Введите метрики для себя как системы: отслеживайте свои золотые сигналы — уровень фокуса (время на задачу до снижения производительности), переключения контекста (количество тасков в очереди), эмоциональную нагрузку (сон/стресс по логам). Без дашборда мы не увидим собственной деградации, и аналогичны системе без логов в момент сбоя.
2. Рефакторинг привычек — архитектурный долг.
Временный хак (кофе вместо сна) закрепляется как постоянное решение; проводите code review своих паттернов еженедельно, заменяя на модульные (сон по расписанию + N-мин циклы работы/отдыха).
3. Аварийный режим должен быть явно отделён от нормального.
Введите circuit breaker для перегрузки. Установите SLO на время/энергию: min 20% буфера от 16ч бодрствования (~3ч на восстановление). С отказом от новых тасок при >80% нагрузки; пост-мортем — обязательный лог после спринта, чтобы не нормализовать деградацию.
4. Телеметрия себя — базовый слой архитектуры.
Логируйте ежедневно: метрики (сон, переключения), трассировки взаимодействий (с кем/как общались), чтобы ловить шум до сбоя; это снижает когнитивный техдолг, как в распределённых системах.
5. Перегрузка «внутренней команды» отражается в архитектуре.
Убеждения и привычки — это наши подсистемы, иногда они подобны хардкоду и порождают токсичные интеграции. По возможности рефакторьте их еженедельно: протестируйте на evolvability (возможность адаптации к новым условиям). Без этого Закон Конвэя N-1 работает против вас.
Логирование как инструмент отладки
В инженерных системах устойчивость невозможна без наблюдаемости. Метрики, логи и трассировки нужны не для отчётов, а чтобы понимать, в каком режиме система находится прямо сейчас. Без этого трудно отличить нормальную работу от деградации, временный всплеск от системной проблемы.
Когда система перегружена, наблюдаемость ухудшается первой. Логи начинают теряться или агрегироваться слишком грубо, метрики запаздывают, а трассировки становятся неполными. Система всё ещё отвечает на запросы, но сигнал о её состоянии становится шумным и противоречивым. Внешне она работает, но внутри уже трудно понять, что именно идёт не так.
При избыточной нагрузке человек теряет способность отслеживать собственное состояние, перестаёт понимать, что именно вызывает усталость, где корень проблемы и какой фактор стал триггером. Внимание переключается на срочные задачи, а внутренняя «телеметрия» отбрасывается как второстепенная.

Например, без явного объяснения выгод метода слепой десятипальцевой печати своим «внутренним стейкхолдерам», апгрейд существующей системы кажется необязательным.
shell
sudo apt install klavaro # вам в помощь как пример
Формально система и так работает. Текст набирается, задачи закрываются, срочной боли нет. Затраты же понятны сразу: время, усилия, дискомфорт. В результате решение откладывается.
Если же относиться к обучению как к улучшению инфраструктуры и инвестировать в него небольшими, но регулярными шагами, например по 15 минут в день, эффект становится измеримым. Уже через несколько месяцев снижается когнитивная нагрузка, уменьшается количество мелких ошибок и освобождается внимание для более сложных задач.
Важно, что это не вопрос мотивации. Это скорее попытка продать нашим «внутренним стейкхолдерам» новый образ жизни. Организм стремится сохранить энергетическое равновесие, а психика привычную зону комфорта. Любая новая идея сначала проходит проверку на гарантированный результат. Если успех нельзя быстро оценить или формально доказать, система предпочитает не инвестировать и переключается. Зачем вкладывать усилия, если мы и так неплохо живём?
В результате и человек, и система начинают принимать решения вслепую, на основе неполных данных и привычных предположений. Это усиливает деградацию и ускоряет накопление долга, потому что корректирующие действия запаздывают или оказываются неточными.
Наблюдаемость нужна не ради контроля. Она нужна затем, чтобы заметить потерю устойчивости до того, как она станет критичной.
Удовольствие как признак устойчивости
В инженерии не оперируют эмоциями. Система считается надёжной, если она предсказуемо работает под нагрузкой и восстанавливается после сбоев. У человека формальных индикаторов нет, поэтому его состояние приходится оценивать по косвенным признакам.
Например, вы пишете в другую команду и не получаете ответа или сталкиваетесь с неожиданной реакцией. В такие моменты легко интерпретировать это как личную проблему, но чаще речь идёт о несовпадении контрактов между системами. У разных ролей разные представления об одной и той же сущности.
-
Для разработчика виртуальная машина — это код и окружение.
-
Для инфраструктуры — ресурсы (CPU, RAM, дисковое пространство).
-
Для менеджмента — бюджет и обязательства.
Когда такие расхождения игнорируются, взаимодействие начинает давать сбои. Это похоже на warning в логах, который можно либо проигнорировать, либо разобрать и устранить причину.
В психологии для описания устойчивого поведения есть понятие функциональной свободы выбора. Эта способность зависит от того, насколько человек удерживает контекст, перерабатывает входящую информацию и контролирует процесс принятия решений. Под нагрузкой свобода сужается: человек быстрее фиксирует позицию, сокращает количество рассматриваемых вариантов и выбирает решения с минимальными когнитивными затратами.
Это снижает качество взаимодействия и делает систему менее устойчивой, даже если формально она продолжает работать. В работе человек вынужден откладывать немедленное удовольствие и тратить ресурсы, поэтому особенно важно получать его от самого процесса проектирования и создания новой системы.
Это хорошо видно на примере скоропечатания. Если воспринимать тренировку как утреннюю гимнастику или короткую медитацию, процесс перестаёт сводиться к «Я уже вторую неделю долблю цифры и всё ещё делаю ошибки!». И начинает восприниматься как постепенное улучшение инструмента, которым вы пользуетесь каждый день.

Когда инженер работает в устойчивой среде, у него сохраняется свобода выбора. Он способен удерживать контекст, видеть систему целиком и принимать решения, которые не закрывают возможные варианты развития в будущем. В таком режиме появляется ощущение контроля и осмысленности, которое часто воспринимается как удовольствие от работы.
Важно, что удовольствие здесь не цель и не KPI. Это побочный эффект системы, в которой нагрузка соразмерна возможностям, а свобода выбора не утрачена. С инженерной точки зрения отсутствие этого ощущения — не личная проблема и не вопрос характера. Это сигнал о том, что система слишком долго работает за пределами своего нормального режима.
Выводы
Инженерные системы и люди ломаются похожим образом. Не из-за одной ошибки, а из-за длительной работы за пределами нормального режима. Деградация накапливается постепенно, маскируется под «рабочее состояние» и становится заметной, когда система теряет устойчивость.
На работе мы обычно действуем рационально. Умеем анализировать системы, находить узкие места, улучшать архитектуру, интегрироваться с другими компонентами и разбираться с проблемами. Но когда речь заходит о нас самих и о нашем взаимодействии с миром, мы почему-то используем другие критерии. Закрываемся и действуем не так системно, как в профессиональной среде.
Это хорошо выражает афоризм Питера Друкера «Культура съедает стратегию на завтрак», который подчёркивает, что организационная культура зачастую определяет успех (или провал) стратегии и планов в компании. Обычно её применяют к организациям, но на уровне человека она работает не хуже. Среда и принятые в ней паттерны формируют то, какие решения мы считаем допустимыми, а какие даже не рассматриваем. Это напрямую влияет на то, как мы взаимодействуем с другими и какие системы в итоге строим.
В этом и проявляется закон Конвэя уровня N-1. Система начинает копировать не только структуру формальных коммуникаций, но и внутренние установки людей, которые её проектируют. На личном опыте я видел, как это работает. Пока я воспринимал смежные команды как источник проблем, я писал функциональное, но недружелюбное ПО, которое решало локальные задачи, но плохо интегрировалось и не предполагало развитие.
Когда я изменил убеждение с «они мешают» на «мы все в одной лодке, в которой постоянно происходят сбои коммуникации», фокус сместился. Я стал больше думать об интеграциях, контрактах, читаемости кода и её evolvability, способности адаптироваться к новым требованиям без постоянного аварийного режима. Если внутренняя система перегружена, внешняя архитектура рано или поздно начнёт это отражать. И наоборот, возвращение к устойчивому режиму почти всегда начинается с восстановления наблюдаемости, свободы выбора и способности принимать решения.
Автор: Silverus

