Узнайте, как ошибка выжившего искажает советы по программированию. Научитесь отличать реальные причины успеха от везения. Читайте статью.
Вы когда-нибудь видели картинку самолёта с красными точками без контекста? Это история про статистика Абрахама Вальда и бомбардировщики Второй мировой. Военные смотрели на вернувшиеся самолёты, отмечали места попаданий и хотели усилить броню там. Вальд указал на очевидное: они смотрят на вернувшиеся самолёты. Те, что получили попадания в двигатель или кабину, упали в Ла-Манш. Усиливать нужно места без пробоин — именно туда попадали в сбитых машинах.
Я часто вспоминаю эту историю, читая посты вроде «10 привычек, сделавших меня 10x инженером». Вся индустрия — это опрос вернувшихся самолётов.
Неудобная правда: почти все мудрости в разработке собраны с вернувшихся самолётов. Успешные компании пишут блоги, основатели дают подкасты, инженеры выступают с докладами «Масштабирование до 100 млн пользователей с тремя людьми и мечтой». Компании, которые делали то же самое и прогорели, не имеют стенда на конференции. Они на дне.
Но мы продолжаем опрос: смотрим на пробоины выживших и говорим: «Вот тут надо усилить».
У вас 11 пользователей. Трое — сооснователи, один — мама. Netflix управляет глобальной империей на сотнях микросервисов, потому что у них сотни команд, миллиарды выручки и проблемы, которые у вас появятся через 10 лет. У вас Postgres, который отлично справляется, и монолит, который стартует за 4 секунды.
И вы тратите 8 месяцев, разбивая приложение на 23 микросервиса, добавляя очередь сообщений, которую не понимаете, и service mesh для управления ненужными сервисами. Локальная среда требует 40 ГБ RAM и молитву. Вы сделали как Netflix! И скорее всего, через два года тихо вернётесь к монолиту, написав пост «Почему мы вернулись к монолиту». Его прочитают те, кто собирается сделать ту же ошибку.
Пробоины — на выживших. Броня нужна там, где пробоин нет.
Ошибка выжившего любит истории о найме. «Наши лучшие — самоучки, без CS-степени, просто делали». Круто. Вы описываете четырёх самоучек, которых наняли и удержали. Вы не описываете огромный пул отклонённых самоучек, тех, кто уволился через месяц, или тех, кто даже не подал заявку, увидев «10 лет опыта с Kubernetes» для технологии, которой 9 лет.
Вы наняли выживших и заключили, что быть выжившим — отличный предиктор выживания. Гениально.
Легендарная надёжность старого софта. Та COBOL-система 1987 года, которая до сих пор работает. Да, это выживший. В 1987 небеса были полны мусорного софта, который упал, был отменён или удалён. Никто не пишет статьи про PayrollSystem_FINAL_v3_actuallyfinal.exe, потому что его добили в 1991.
Мы помним старый софт так же, как самолёты, которые приземлились: остальных нет в опросе.
Самая опасная форма ошибки выжившего — уверенная ретроспектива от первого лица: «Я никогда не писал тесты, не использовал дебаггер, просто быстро выкатывал и доверял чутью. И посмотрите, где я сейчас». Да, вы — одна точка данных с микрофоном. На каждого такого приходится кладбище разработчиков, которые тоже не писали тесты, выкатывали на ощущениях и теперь объясняют спокойной комнате, почему прод упал на 6 часов. Их нет на этой конференции. Они в слаке #incident-2024.
Доверие чутью работает, пока не перестаёт, а «перестаёт» невидимо, потому что не получает доклада.
Решение из истории Вальда обманчиво просто: ищите пропавшие самолёты. Когда вам говорят «делайте X, это причина нашей победы», спросите: сколько команд делали X и проиграли? Если признак встречается и в обломках, и среди победителей, он не причина победы. Микросервисы, переписывание на Rust, четырёхчасовые ежедневные стендапы, безлимитный отпуск, «у нас нет встреч» — проверьте всё через этот фильтр. Выжившие скажут, что их привычки привели к успеху. Мёртвые не скажут, что их идентичные привычки не привели ни к чему.
Вот почему постмортемы ценнее историй успеха. Описание того, как что-то провалилось — редкий документ из обломков. Это передача с самолёта, который не вернулся. Единственные полезные данные на карте.
Читайте инженерные блоги FAANG. Восхищайтесь диаграммой архитектуры с 200 блоками. Чувствуйте желание всё скопировать. А потом вспомните, что вы опрашиваете вернувшиеся самолёты, закройте вкладку и выкатите скучный монолит, который будет реально полезен вашим 11 пользователям.
Пробоины — ловушка. Выжившие — смещённая выборка. И в следующий раз, когда кто-то скажет «надо делать как в Google», вы можете быть тем невыносимым человеком на встрече, который, раздражающе, прав. Вальд бы гордился. Вальд также сказал бы писать тесты.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →