Спросите инженера, что он делал на этой неделе, и очень небольшая часть ответа будет про набор новой логики в пустой файл.
Куда на самом деле уходит время
Публичный образ этой работы — сочинение. Реальность ближе к археологии, переговорам и ремонту.
Чтение существующего кода, чтобы понять, что он делает. Воспроизведение сообщённой неисправности. Ревью чужого изменения. Интеграция с системой, документация которой устарела. Ожидание сборки. Обсуждение подхода. Развёртывание. Расследование того, почему деплой повёл себя иначе, чем тестовая среда. Починка того, что работало два года и перестало.
Собственно написание нового кода — настоящая часть работы, и она не самая большая, и редко именно она решает, успешен ли проект.
Ограничение для большинства команд разработки — понимание и координация, а не скорость набора текста.
Отсюда прямое следствие для обучения. Программа развития, сосредоточенная исключительно на языках и фреймворках, обучает меньшей половине работы. Навыки, которые решают исход, — чтение незнакомых систем, качественное ревью, дизайн под изменения, коммуникация технического решения, — можно преподавать, но обычно их оставляют на усвоение самим собой.
Что охватывает направление
Область: архитектура, код, тестирование, программные интерфейсы, контроль версий, развёртывание и командная работа.
Четыре области.
Разработка. Языки, дизайн, интерфейсы и мастерство писать код, который смогут изменить другие.
Верификация. Тестирование на всех уровнях, ревью и дисциплина точного понимания того, что реально проверено.
Доставка. Контроль версий, непрерывная интеграция, развёртывание и практика релизов.
Совместная работа. Работа в команде над общей системой — где на самом деле живёт большая часть сложности коммерческой разработки.
Самый большой прирост рабочих мест во всей таблице
Стоит привести точно, потому что публичный разговор об этой профессии стал путаным.
US Bureau of Labor Statistics прогнозирует рост занятости разработчиков ПО на 15,8% с 2024 по 2034 год — это 267 700 новых мест. В том же наборе прогнозов это самый большой абсолютный прирост среди отслеживаемых технологических профессий — больше в абсолютных числах, чем у дата-сайентистов и аналитиков по информационной безопасности вместе взятых, хотя обе профессии растут более высокими темпами в процентах. Общая занятость по всем профессиям, по прогнозу, вырастет на 3,1% за тот же период.
Рядом с этой цифрой сразу нужны две оговорки, и опустить их было бы нечестно.
Это прогноз. Прогнозы — это модели, построенные на предположениях о внедрении технологий и росте отрасли, и их пересматривают. Этот прогноз включает предположение о том, что искусственный интеллект повышает производительность, — именно поэтому та же таблица показывает снижение по нескольким административным профессиям.
Найм на начальном уровне был трудным. Выпускники и люди, меняющие карьеру, столкнулись с более жёстким рынком, чем предполагает заголовочная цифра роста, а совокупный рост за десятилетие ничего не говорит о том, насколько легко получить первую работу в конкретном году.
Примирение в том, что значительная доля прогнозируемых вакансий приходится на замену, а не на расширение, и что спрос смещён к людям, способным работать с существующими системами. Это утверждение о том, какое обучение окупается, а не аргумент, что роста не существует.
Ревью — навык, который масштабирует команду
Навык с самой высокой отдачей в программной инженерии, которому почти ни одна организация не учит целенаправленно.
Код-ревью — это место, где дефекты ловят до того, как они начинают стоить денег, где знание распространяется по команде, где стандарты становятся реальными, а не задокументированными, и где младшие инженеры учатся быстрее всего. Это также место, где тратится немало времени впустую и откуда берётся удивительное количество конфликтов на работе.
Четыре вещи, которые отличают полезное ревью от ритуала.
Знать, на что смотреть. Корректность, обработка ошибок, безопасность, поведение на масштабе и то, будет ли это понятно через год. Форматирование — то, с чем должен справляться инструмент, и именно на нём неопытные рецензенты тратят внимание.
Ревьюить дизайн, а не диф. Самый ценный комментарий часто в том, что изменение не должно существовать в таком виде, и этот комментарий намного дешевле до того, как работа сделана.
Отделять то, что обязано измениться, от того, что вы бы сделали иначе. Смешивать предпочтение с требованием — самый крупный источник трения в ревью, и это учит людей перестать спрашивать.
Делать это безопасным. Культура ревью, где люди боятся критики, порождает изменения меньше, позже и менее честные, и скрывает проблемы, пока они не станут дорогими.
Ничего из этого не трудно преподать. Просто предполагается, что этому учатся через практику, и люди перенимают то, что делала их первая команда.
Где это находится в домене
Программная инженерия — второе из восьми направлений в домене ИИ, данных и вычислений Astra Trainer, и оно самое многочисленное по штату почти в каждой партнёрской организации. Оно опирается на компьютерные науки за базовой моделью и связано впереди с облачными вычислениями и DevOps, где теперь живёт половина работы, связанная с доставкой.
Оно также связано с кибербезопасностью, поскольку значительная доля уязвимостей — обычные дефекты ПО, и с искусственным интеллектом и машинным обучением, где системы вокруг модели — обычная программная инженерия. Восемь направлений можно посмотреть здесь.
Поддержка — это и есть работа, а не её последствия
ПО не заканчивается в момент релиза. Большая часть денег, потраченных на систему за её жизнь, тратится после первого релиза, и большинство инженеров проводят большую часть карьеры, работая с уже существующим кодом.
При этом почти всё техническое образование использует упражнения «с нуля». Людей учат строить что-то новое, в изоляции, с чистыми требованиями и без истории, а потом нанимают в систему с пятнадцатью годами накопленных решений, частичных миграций и комментариев, описывающих поведение, которое давно изменилось.
Навыки, которые закрывают этот разрыв, конкретны и преподаваемы.
Чтение незнакомого кода. Найти точку входа, проследить путь, построить рабочую ментальную модель, не читая всё подряд.
Безопасное изменение кода. Добавлять тесты к непокрытому коду до его изменения, делать маленькие обратимые правки и использовать типы и контракты, чтобы ограничить эффект от правки.
Понимание того, почему это устроено именно так. Многое из того, что выглядит нерационально в устаревшем коде, было верным ответом на ограничение, которого больше нет, или на баг, о котором уже забыли. Удалить это, не зная, что именно, — так и случаются сбои.
Честное управление техническим долгом. Отличать решения, которые были разумным компромиссом, от накопленного пренебрежения, и делать цену каждого видимой для людей, решающих приоритеты.
Постепенная миграция. Почти каждый крупный переписыватель, задуманный как единовременная замена, — предостерегающая история. Постепенная миграция — навык с известными паттернами, которому редко учат.
Роли, поимённо
Инженеры-программисты — во фронтенде, бэкенде и full stack.
Платформенные инженеры, строящие внутренние инструменты, от которых зависят другие команды.
Мобильные инженеры.
Инженеры по качеству и тестированию, включая автоматизацию.
Инженеры по надёжности эксплуатации, где программная инженерия встречается с эксплуатацией.
Технические архитекторы.
Инженерные менеджеры и технические лиды, где ограничение обычно в суждении, а не в умении писать код.
Инженеры по опыту разработчиков (developer experience) — растущая специализация, нацеленная на узкое место понимания и координации.
Инженеры по интеграции, соединяющие системы, которые не проектировались для встречи друг с другом.
Кого можно обучить этому
Специалисты по контролю качества и тестированию. Самая сильная внутренняя конверсия. Они уже знают продукт, знают, как он ломается, и знают кодовую базу со стороны.
Инженеры поддержки и эксплуатации. В разработку, обладая знанием продакшена, которого разработке часто не хватает.
Аналитики данных. Уже пишут код, им нужна инженерная практика: контроль версий, тестирование, ревью и дизайн под изменения.
Бизнес-аналитики и продуктовые специалисты с техническим складом — в роли рядом с инженерией, где дефицитна именно отраслевая экспертиза.
Инженеры из других дисциплин. Механики, электрики и инженеры-строители хорошо конвертируются, принося системный метод.
Учёные и исследователи, которые уже пишут код для своей работы, — им нужна практика совместной разработки, а не программирование.
Опытные разработчики на устаревающих технологиях. Часто их упускают из виду, хотя у них глубокое знание систем и им нужен актуальный стек, а не смена карьеры.
О сгенерированном коде и ответственности. За код, произведённый инструментами генерации, отвечает организация, которая его выпускает, и он может содержать дефекты, уязвимости, лицензионные последствия или поведение, которое никто в команде объяснить не может. Ревью, тестирование и обязательства по происхождению кода не переносятся на инструмент. В отраслях с регулируемым ПО, включая медицину, автомобилестроение, авиацию и финансовые системы, есть специфические требования к процессу разработки и прослеживаемости, которые применяются независимо от того, как был произведён код.
Что важно вынести
Производство нового кода — меньшая часть работы, и обучение, покрывающее только языки и фреймворки, закрывает меньшую половину.
По прогнозу, разработчики ПО добавят 267 700 рабочих мест к 2034 году — самый большой абсолютный прирост среди технологических профессий, которые отслеживает BLS, и это прогноз, который соседствует с по-настоящему трудным рынком найма на начальном уровне.
Код-ревью — навык команды с самой высокой отдачей, и его почти повсеместно оставляют на самостоятельное усвоение.
Поддержка и работа с устаревшим кодом — там, где реально проходит карьера, а образование почти целиком готовит к работе с нуля.
И лучшие внутренние кандидаты обычно в тестировании, поддержке и эксплуатации — они уже обладают знанием, на получение которого у новых сотрудников уходит год.
На что на самом деле уходит время у разработчиков ПО?
На чтение существующего кода, воспроизведение неисправностей, ревью изменений, интеграцию с системами с устаревшей документацией, развёртывание и расследование различий между средами. Написание нового кода реально, но это не самая большая доля.
Продолжает ли расти разработка ПО как профессия?
BLS прогнозирует рост на 15,8% с 2024 по 2034 год — это 267 700 новых мест, самый большой абсолютный прирост среди отслеживаемых технологических профессий. Это прогноз, а не наблюдение, и он сосуществует с трудным рынком найма на начальном уровне.
Почему код-ревью так важно?
Потому что оно ловит дефекты до того, как они начинают стоить денег, распространяет знание по команде, делает стандарты реальными и учит младших инженеров быстрее всего остального. Оно же — источник большей части технического трения, когда сделано плохо.
Почему работу с устаревшим кодом недообучают?
Потому что техническое образование использует упражнения с нуля и чистыми требованиями, а большинство инженеров проводят карьеру, меняя системы с годами накопленной истории, частичными миграциями и недокументированными причинами решений.
Кто хорошо конвертируется в программную инженерию?
Сначала инженеры по тестированию и качеству, затем сотрудники поддержки и эксплуатации, аналитики данных, которые уже пишут код, инженеры из других дисциплин и опытные разработчики на устаревающих технологиях, которым нужен актуальный стек, а не смена карьеры.
