Кому ты нужен завтра, программист?

В 2018 году я выступил на конференции SECON с докладом «Кому ты нужен завтра, программист?». Программистов не хватало, зарплаты росли, а я пытался разобраться, может ли наша профессия повторить путь радиоинженеров: создать универсальный инструмент, который постепенно заберёт часть работы у своих создателей.
Спустя восемь лет я вернулся к этому выступлению и понял, что сказанное тогда по-прежнему актуально. Особенно мысль о том, что сохранение профессии ещё не гарантирует востребованности каждого, кто ею владеет. Программисты могут остаться нужны, а привычные способы работы и набор навыков — заметно измениться.
Ниже — статья по материалам того доклада. Я сохранил рассуждения, сомнения и взгляд из 2018 года, поэтому «сегодня» в основном тексте означает именно тот момент. Мне интересно снова пройти эту цепочку рассуждений — и предложить вам сопоставить её с собственным опытом последних лет.
Март 2018 года.
20 октября 2017 года Герман Греф заявил, что «век айтишников закончился». На такое заявление легко ответить: программистов не хватает, зарплаты растут, компании конкурируют за людей. Обсудили, посмеялись — пошли дальше писать код.
Но меня этот вопрос не отпустил. Мы создаём системы, которые позволяют обходиться без части чужого труда. Почему собственную профессию мы считаем исключением?
Я попробовал соединить две идеи: жизненный цикл профессии и смену технологий во время промышленных революций. Получилась гипотеза о том, как программист может оказаться в положении радиоинженера — специалиста, который сам придумал инструмент, изменивший его профессию.
Радиоинженеры уже проходили этот путь
Инженеру хочется однажды сделать универсальную штуку, чтобы потом не решать каждую похожую задачу с нуля. В идеале — немного её настроить и получить новое устройство.
С этой точки зрения интересно посмотреть на промышленные революции.
Паровая машина стала универсальным источником механической энергии. Часть работы, которую выполняли люди и животные, перешла к машине. Тяжёлый физический труд не исчез, но для выполнения прежнего объёма работы стало нужно меньше мускульной силы.
Электричество дало ещё больше возможностей: электрическую энергию можно преобразовать не только в движение, но и в другие виды энергии. Развивалась электротехника, затем электроника. Появлялись новые устройства и специалисты, умеющие их создавать.
А потом радиоинженеры сделали ЭВМ.
Для целого класса задач стало возможно не проектировать новое устройство, а изменить программу универсальной машины. Не нужно заново разрабатывать и перепаивать плату, если нужное поведение можно задать кодом.
Так появился отдельный специалист — программист. Часть работы переместилась от человека, проектирующего электронную схему, к человеку, программирующему вычислительную машину.
Радиоинженеры не исчезли. Но они создали технологию, которая позволила решать некоторые задачи без их непосредственного участия.
И здесь возникает неприятный для нас вопрос: почему следующий такой переход не должен произойти с программистами?
Высокий спрос — это ещё не вечная молодость
Мне попалась модель, в которой профессия рассматривается примерно как продукт. У неё есть рождение, становление, стандартизация, зрелость, стагнация, деградация и смерть.
Это не расписание, по которому можно вычислить дату исчезновения программистов. Но как способ посмотреть на собственную профессию со стороны такая схема полезна.

Первые стадии мы явно прошли.
В момент рождения профессии ещё не очень понятно, где заканчивается одна работа и начинается другая. Люди создают ЭВМ, запускают их, обслуживают, пишут для них программы. Устойчивого разделения функций и системы подготовки кадров нет.
Затем машины становятся доступнее, задач — больше. Создателей оборудования уже недостаточно: нужны отдельные люди, которых специально учат программировать. Возникает рынок труда.
Накопленный опыт постепенно превращается в повторяемые методы. Появляются учебные материалы, профессиональные инструменты, специализации. Одни пишут системное ПО, другие — приложения. Это становление и стандартизация.
Теперь посмотрим вокруг. Разработчиков не хватает. Зарплаты растут. Курсы предлагают стать программистом за 21 день. Куда ни посмотришь — профессиональное сообщество, митап или конференция. Даже в Пензе конференция проходит.
Всё это похоже на зрелую профессию, а не на только что родившуюся.
При этом в некоторых направлениях уже заметны признаки следующей стадии. Пять-десять лет назад мы охотно писали собственные библиотеки, CMS и прочие велосипеды. Теперь многое написано и стандартизировано. Там, где раньше требовалось искать новый способ решения, всё чаще нужно выполнять знакомую последовательность действий.
Это ещё не означает, что вся разработка стала рутиной. Внутри большой профессии могут появляться новые направления со своими циклами развития. Но часть работы явно меняется.
Я пока не берусь утверждать, что стагнация уже началась. Спрос на специалистов и обучение не падает, популярность профессии тоже. До деградации, на мой взгляд, ещё достаточно далеко.
Однако зрелость не даёт гарантии, что нынешнее положение сохранится навсегда.
Для спада нужна технология, которая заберёт работу
В этой модели после стагнации появляется «технология-убийца». Она позволяет выполнять привычную работу без прежнего количества специалистов. Вслед за этим могут уменьшиться спрос на них, зарплаты и потребность в массовой подготовке кадров.
Необязательно исчезают все задачи. Может исчезнуть необходимость решать их прежним способом.
Вернёмся к промышленным революциям. Меня в них интересует повторяющийся ход: появляется более универсальный инструмент, а вместе с ним меняются профессии. Паровая машина, электричество, ЭВМ.
Вокруг четвёртой промышленной революции называют много технологий. Но если продолжить эту логику, должна появиться очередная универсальная система, которая возьмёт на себя часть нашей работы.
Моя текущая гипотеза — искусственный интеллект.
Не потому, что это самое модное словосочетание. А потому, что появляется другой способ получить нужное поведение системы: не описать все правила вручную, а обучить её на данных.
Если этот способ окажется пригоден для большого класса задач, он изменит и потребность в людях, которые сегодня решают их программированием.
Два плюс два не нужно угадывать
Из этого не следует, что нейронная сеть должна заменить любую программу.
Есть задачи, для которых известен точный алгоритм. Если мне нужно сложить два числа, я не вижу смысла обучать этому модель. Проще выполнить вычисление по известным правилам.
В машинном обучении мы получаем решение на основе данных и оцениваем, насколько хорошо оно работает. Успешное обучение само по себе не означает гарантии правильного ответа в любой ситуации.
Для одних задач такой подход подходит. Для других цена ошибки слишком высока. Поэтому идея заменить строгий алгоритм управления критической системой — например, ядерным реактором — на обученную модель вызывает у меня вопросы. Что именно мы гарантируем и на каком основании?
Я не знаю, сможет ли искусственный интеллект со временем стать действительно универсальным и научиться решать любые задачи. Но не стоит приписывать нынешним системам все свойства возможных будущих.
Поэтому полного исчезновения программистов я не ожидаю. Гораздо интереснее другой вариант: часть работы останется, но выполнять её придётся уже иначе.
Нейросеть не обязательно увольняет технолога
В одной из лекций Яндекса мне запомнился пример с металлургическим заводом.
На вход поступает сырьё разного качества. На выходе нужно получить металл с заданными характеристиками. Между ними — технологический процесс, которым управляет опытный специалист.
Технолог десятилетиями работает на заводе. Он знает, что добавить, какую температуру выдержать, как изменить режим. Опирается не только на формальные знания, но и на опыт, который трудно целиком записать в инструкцию.
По описанию из лекции, завод был хорошо автоматизирован и накопил данные о процессе: в каких условиях он шёл, какие решения принимал технолог и что получалось на выходе. На этих данных обучили нейронную сеть, которая стала давать более хорошие результаты.
Означает ли это, что технолог больше не нужен?
Не обязательно. Ему можно поставить следующую задачу: сделать процесс ещё эффективнее, снизить затраты, найти новые возможности. Но ту часть работы, которую он выполнял раньше, машина уже начала забирать.
Для меня этот пример важен именно сменой роли. Человек не обязательно становится бесполезным в тот момент, когда автоматизируют его привычную работу. Но продолжать делать только её уже недостаточно.
С программистом может произойти похожая история. Если часть решения будет получать обучаемая система, понадобятся люди, которые умеют с ней квалифицированно работать: выбрать подходящую модель, обучить её, разобраться, для каких задач она подходит.
Это тоже сложная работа. Только набор необходимых знаний будет другим.
Профессия может сохраниться, а привычная роль — нет
Здесь многое зависит от того, что мы называем профессией программиста.
Можно понимать её узко — как человека, который вручную описывает решение в коде. Тогда система, способная брать эту работу на себя, действительно выглядит угрозой.
Но можно посмотреть шире: программист — частный случай инженера, который умеет формализовать задачи и создавать решения. При таком определении новые инструменты не обязательно уничтожают профессию. Они меняют способ работы.
Часть рутины можно будет передать машине. Самому — ставить задачи и заниматься тем, что пока не удаётся автоматизировать.
Это не обещание, что для каждого разработчика всё закончится хорошо. Профессия может переродиться, но конкретному человеку тоже придётся меняться. Кто-то освоит новую роль, кто-то останется в старой.
Вспомним радиоинженеров. Они по-прежнему нужны. Но появление ЭВМ создало рядом с ними новую большую область работы. Нельзя было автоматически перенести в неё своё место, просто сохранив прежнее название профессии.
Я не исключаю, что и рядом с программистом появится специалист, которого будут называть иначе. Пока важнее не придумать ему название, а понять, что он будет уметь.
Уйти в творчество — тоже не готовый план
Есть соблазн провести удобную границу: машине достанется всё механическое, а человеку останется творчество.
Но искусственный интеллект уже пробует себя по другую сторону этой границы.
У Яндекса есть проект «Нейронная оборона»: нейросеть написала тексты в стиле «Гражданской обороны». Есть эксперименты с музыкой, когда систему обучают на произведениях композитора, а затем она создаёт новые композиции в похожем стиле.
Можно спорить, считать ли такой результат творчеством. Но для нашего разговора важно другое: даже деятельность, которую мы привыкли считать исключительно человеческой, уже становится предметом автоматизации.
Поэтому формула «буду заниматься творческим, и меня это не коснётся» кажется мне слишком простым ответом.
Учиться придётся не один раз
Я всё же хочу закончить на позитивной ноте.
Если привычная работа меняется, это означает не только потерю старых возможностей, но и появление новых. Понадобятся люди, умеющие работать с технологиями, которых раньше не было.
Мечта владельца бизнеса — собрать работающую систему из готовых кубиков. Но даже когда эти кубики появятся, кому-то нужно будет понять, какую задачу решать и как их соединить. Именно здесь у инженера может оказаться следующая область работы.
Чего точно не стоит делать — считать сегодняшнюю востребованность пожизненной гарантией. То, что сейчас мы программисты, которым хорошо платят и которых всем не хватает, ничего не обещает на всю оставшуюся карьеру.
Возможно, поэтому учиться нужно не только конкретной профессии. Нужно учиться быстро переквалифицироваться: осваивать новые инструменты и переходить к новым задачам, когда прежние меняются.
На жизненный цикл всей профессии отдельный человек вряд ли сильно повлияет. Но можно заметить, что он движется дальше, и двигаться вместе с ним.
Программист может не исчезнуть. Но это не значит, что ему удастся остаться прежним.
Максим Семенкин, CodeInside. По материалам выступления на SECON 17 марта 2018 года.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.