Кто умнее: программист, или берёзовое полено?
В коллективном сознании современного общества прочно засела мысль, что программисты — это интеллектуальная элита. Люди в толстовках с логотипами стартапов, способные заставить компьютер делать магию, будто бы превосходят в умственных способностях среднестатистического обывателя. Эта уверенность основана на целом ряде железобетонных аргументов. Во-первых, программисты знают языки программирования, а значит, они полиглоты особого рода. Во-вторых, они решают сложные алгоритмические задачи, требующие логического мышления. В-третьих, они работают с абстракциями высокого порядка и способны держать в голове архитектуру целых систем. В-четвертых, они постоянно учатся новым технологиям, что свидетельствует о гибкости ума. В-пятых, их работа требует точности и внимания к деталям, ведь одна пропущенная точка с запятой может обрушить всю систему. И, наконец, программисты получают высокие зарплаты, а рынок, как известно, не ошибается в оценке интеллектуального труда.
Все это выглядит примерно настолько же убедительно, как реклама зубной пасты с участием актера в белом халате. Давайте же сравним этих титанов мысли с представителями других профессий и посмотрим, кто на самом деле заслуживает медали за умственное превосходство.
Начнем с хирурга. Этот человек стоит над операционным столом, где лежит живой организм со всеми его непредсказуемыми реакциями. Перед ним — задача, которая не терпит отладки в продакшене. Никакого git revert, никакого rollback, никакой возможности откатить коммит, если что-то пошло не так. Решение нужно принимать здесь и сейчас, основываясь на годах опыта, знании анатомии, физиологии, фармакологии, и при этом держать в голове десятки возможных осложнений. Пациент может начать кровоточить, давление упадет, сердце остановится — и на все это у хирурга есть секунды, а не спринты по две недели на обдумывание. А теперь представьте программиста, который три часа смотрит в экран, пытаясь понять, почему тест падает. Потом идет пить кофе. Возвращается, гуглит ошибку, находит обсуждение на Stack Overflow пятилетней давности. Пробует предложенное решение. Не работает. Спрашивает коллегу. Тот предлагает переписать весь модуль. К вечеру проблема решена, все довольны. Никто не умер.
Авиадиспетчер вот еще. Перед ним экран радара, на котором движутся точки — самолеты с сотнями живых людей на борту. Каждое решение должно учитывать скорость, высоту, направление ветра, погодные условия, топливный запас, возможные чрезвычайные ситуации. И все это в реальном времени. Малейший просчет — и два лайнера окажутся на пересекающихся курсах. У программиста же есть линтеры, юнит-тесты, code review, staging-окружение, production-мониторинг и целая команда коллег, готовых подсказать, что он где-то напутал с индексами массива. Если код упал — перезагрузили сервер, написали багрепорт, пообещали исправить в следующем релизе. Никаких обломков, никаких жертв, только слегка раздраженные пользователи. Да и Калоев вряд ли придёт в твой уютненький домик в Клотене.
Следующий кандидат — учитель начальных классов. Тридцать детей, каждый со своим характером, темпераментом, уровнем подготовки и семейными обстоятельствами. Задача — не просто передать знания, а сделать это так, чтобы все тридцать поняли материал, при этом удерживая дисциплину, мотивируя ленивых, успокаивая гиперактивных, находя подход к замкнутым. И все это без возможности просто выключить особо проблемного ученика командой kill -9. Учитель работает с самым непредсказуемым и забажированным интерфейсом в мире — с человеческой психикой. Причем в условиях, когда любое его действие может повлиять на всю дальнейшую жизнь ребенка. Программист же общается с машиной, которая делает ровно то, что ей сказали. Если она делает не то — значит, ей сказали делать не то, ну. Корректировка инструкции — и проблема решена. Никакой многозначности, никаких эмоций, никаких родительских собраний.
Перейдем к строителям мостов. Инженер-конструктор рассчитывает нагрузки, учитывает свойства материалов, климатические условия, сейсмическую активность, ветровые нагрузки. Он проектирует сооружение, которое должно простоять десятилетия, выдерживая постоянные ралли тяжелых грузовиков. Ошибка в расчетах — и мост рухнет, похоронив под собой и людей и машины. Ответственность абсолютная, последствия необратимые. А что делает программист? Пишет код, который с вероятностью пятьдесят процентов будет переписан через полгода, потому что появился новый фреймворк или изменились требования заказчика. Его творение не обязано стоять веками — достаточно, чтобы оно работало до следующего рефакторинга. Или пока модуль не зашатается настолько, что проще будет сменить работу — у разработчиков ведь магическим оразом обнуляются долги, когда заковыристая подпись генерального ложится на заявление по собственному.
Возьмем теперь медсестру в отделении интенсивной терапии. Ночная смена, несколько пациентов в критическом состоянии, каждый подключен к десятку приборов. Нужно постоянно отслеживать показатели, вовремя заметить ухудшение, ввести препарат, вызвать врача, при этом не перепутать дозировки и не ошибиться в назначениях. Одна неверная цифра — и человек умрет. Никаких unit-тестов для проверки правильности введенной дозы. Никакой возможности откатиться к предыдущему состоянию пациента. Только знания, опыт и стальные нервы. Программист в это время сидит дома с ноутбуком на коленях, попивает чай и разбирается, почему у него в браузере не работает анимация кнопки. Уровень стресса сопоставим разве что с выбором между flat white и капучино в кофейне.
А ведь есть еще такая профессия, как пожарный. Горящее здание, дым, высокая температура, нулевая видимость, риск обрушения конструкций. Нужно быстро оценить ситуацию, определить, где могут находиться люди, выбрать путь эвакуации, координировать действия бригады — и все это в условиях, когда каждая секунда на счету и собственная жизнь висит на волоске. Решения принимаются мгновенно, на основе интуиции и опыта, потому что времени на раздумья нет. Программист же может спокойно почесать затылок, налить себе еще кофе, почитать документацию, посоветоваться с ментором, написать в корпоративный чат и получить три разных мнения от коллег, которые тоже никогда не уверены, но всегда готовы подискутировать пару часов.
И наконец, нейрохирург. Операция на головном мозге. Это даже не просто хирургия — это ювелирная работа с самой сложной структурой во вселенной. Малейшее повреждение не того участка — и человек теряет речь, память, способность двигаться. Операция длится часами, требует абсолютной концентрации, знания мельчайших деталей анатомии, умения мгновенно реагировать на изменения. Это высшая математика, физика, биология и искусство одновременно, помноженные на колоссальную ответственность. А программист в это время спорит на Reddit о том, какие отступы лучше — табы или пробелы, и считает это принципиальным вопросом, достойным часовой дискуссии.
Так в чем же превосходство программистов? В том, что они знают, как заставить машину выполнить четко определенную последовательность операций? В том, что они могут разобраться в чужом коде, если потратят достаточно времени? В том, что они освоили синтаксис очередного языка программирования, который устареет через пять лет?
Правда в том, что программирование — это ремесло. Очень полезное, востребованное, хорошо оплачиваемое, но все же ремесло. Оно требует определенных навыков, усидчивости, внимания к деталям. Но оно не требует выдающегося интеллекта. Умения работать с формальными системами, следовать инструкциям, разбивать задачи на подзадачи — да. Думать? — Отнюдь. Это ближе к бухгалтерии, чем к науке. Ближе к сборке мебели по инструкции IKEA, чем к созданию архитектурного шедевра.
Миф об интеллектуальном превосходстве программистов подпитывается несколькими факторами. Во-первых, индустрия отлично умеет продавать себя. Красивые истории про стартапы, изменившие мир, харизматичные основатели в черных водолазках, глянцевые офисы с гамаками и настольным футболом — все это создает ореол исключительности. Во-вторых, высокие зарплаты. Общество привыкло ассоциировать доход с интеллектом, хотя связь эта примерно такая же прочная, как между фазами луны и урожайностью картофеля. В-третьих, непрозрачность профессии. Для непосвященного человека программирование выглядит как волшебство, а программист — как маг. На самом деле бо́льшая часть работы — это копипаста со Stack Overflow, чтение документации и отладка чужих ошибок. Ну ладно, вайбкодинг еще, в шезлонге под смузи.
Конечно, среди программистов есть выдающиеся умы. Те, кто создает новые алгоритмы, двигает вперед теорию вычислений, разрабатывает языки программирования. Но таких единицы, как и в любой другой профессии. Средний же разработчик — это человек, который пишет бизнес-логику для очередного веб-приложения, интегрирует API, делает верстку по макетам дизайнера. Джейсон перекладывает, иными словами. Работа нужная, но не требующая не то, что гениальности — мозга как такового. При этом, разработчики очень трепетно относятся к собственной работе: мне никогда не доводилось слышать, чтобы дворника распирала претензия типа: «Я уже десять лет мету улицу, а меня до сих пор не сделали мэром города». Ладно.
Так что, ребята, когда я вижу упоминание связи между профессией разработчика и интеллектом, мне хочется завопить: алё! мы не спасаем жизни, не строим мосты, не учим детей и не тушим пожары. Мы пишем код, который, скорее всего, максимум через пять лет окажется в мусорном ведре. И если сравнивать ценности разработчика и берёзового полена по уровню влияния на мир, то полено, по крайней мере, может согреть в холодную зиму.
Автор: cupraer

