Skip to content Перейти к разделу

💻Craft & Know-How

Инженер-программист · Пишет, тестирует и поддерживает код, который управляет современной жизнью, и является одной из первых профессий, наблюдающих, как ИИ автоматизирует свою повседневную работу.

Одним взглядом
Плотность баллов

Чем темнее клетка, тем выше балл по этому показателю.

Последняя проверка Источники и титрыМедиа-кредитыМетодология

Короткие ответы

Чем на самом деле занимается инженер-программист весь день?

Большую часть времени вы тратите на написание нового кода, чтение кода других людей во время проверки, исправление ошибок и обсуждение с товарищами по команде того, что делать дальше. Встречи, планирование и наставничество занимают больше времени, чем ожидают новички. Старший инженер часто лично пишет меньше кода, чем младший, тратя больше времени на проектные решения, обзоры и разблокировку других.

Нужна ли мне степень в области компьютерных наук, чтобы стать инженером-программистом?

Нет, но это остается наиболее распространенным и наименее трудным путем. Четырехлетняя степень преподает алгоритмы, структуры данных и системные концепции, изучение которых на работе обходится дорого. Выпускников Bootcamp и инженеров-самоучек нанимают, особенно в небольшие компании, но обычно им требуется сильное портфолио или работа с открытым исходным кодом, чтобы заменить диплом.

Подвержена ли разработка программного обеспечения риску со стороны ИИ?

Частично это уже есть. Инструменты, встроенные в современные редакторы кода, теперь пишут большую часть рутинного кода — шаблонного кода, первых набросков тестов, переводов между языками — для инженеров, которые используют их регулярно. Гораздо сложнее автоматизировать решение, что создавать, почему и как следует сформировать систему, чтобы она выдержала контакт с реальными пользователями и сбои.

Сколько зарабатывают инженеры-программисты?

Это сильно варьируется в зависимости от страны и компании. В Соединенных Штатах медианная сумма составляет около 133 000 долларов в год; в Германии примерно 69 000 евро; в Индии, где в отрасли занято больше всего людей, средний показатель по стране приближается к 900 000 фунтов стерлингов. Старшие и штатные инженеры крупных технологических компаний могут зарабатывать в несколько раз больше среднего показателя по стране, если включить в них вознаграждение за акции.

В чем разница между инженером-программистом, программистом и разработчиком?

На практике мало — названия пересекаются и компании используют их непоследовательно. «Программист» — самый старый термин, в котором особое внимание уделяется написанию кода; «разработчик» часто встречается в веб- и продуктовых компаниях; «Инженер-программист» опирается на идею применения дисциплинированных процессов, тестирования и проектирования, заимствованных из старых инженерных областей, для создания программного обеспечения. Должностные инструкции редко различают их последовательно.

Действительно ли собеседование по программированию необходимо для приема на работу?

Да, в большинстве авторитетных технологических компаний: живое или домашнее техническое собеседование, часто связанное с проблемами алгоритмов в общем документе или на доске, остается стандартным фильтром, наряду с этапом проектирования системы для более старших должностей. Небольшие компании и стартапы с большей вероятностью заменят их платным пробным проектом, обзором портфолио или разговором о прошлой работе.

Начать с этого раздела - Craft & Know-How

Открыть лабораторию сравнения

Share

Представление об инженере, непрерывно печатающем в течение восьми часов, во многом ошибочно. Чтение кода других людей, рассуждения о сбоях без очевидной причины и объяснение технических компромиссов людям, не являющимся инженерами, занимают такую ​​же часть работы, как и написание нового кода, а зачастую и больше, для тех, кто старше первых двух лет.

Мастерство, передаваемое внутри профессии, заключается не столько в том, какой язык изучать, сколько в привычках ума: как систематически искать ошибку, а не гадать, когда оставить работающий код в покое, а когда удаление кода — самое ценное, что вы сделали за всю неделю.

What the work demands

889074807083
Декомпозиция проблемы
88
Отладка
90
Проектирование системы
74
Общение и сотрудничество
80
Тестирование и качество кода
70
Непрерывное обучение
83

Декомпозиция проблемы

Разбиение расплывчатого, большого запроса на маленькие, независимо создаваемые и тестируемые части — навык, который больше всего отличает продуктивных инженеров от тех, кто тормозит над большими задачами.

Отладка

Систематическое определение того, где и почему система ведет себя неправильно, вместо того, чтобы гадать и менять вещи, пока она не заработает.

Проектирование системы

Выбор того, как следует разделить сервисы, данные и команды, чтобы все это могло безопасно меняться в течение многих лет, а не просто работать с первого дня.

Общение и сотрудничество

Объяснение технических компромиссов неинженеру, четкое описание изменений для рецензентов и обсуждение объема — большинство профессионального кода читаются и обсуждаются гораздо чаще, чем пишутся.

Тестирование и качество кода

Написание проверок, которые выявляют неработающие изменения до того, как это сделает пользователь, и сохранение кодовой базы достаточно разборчивой, чтобы следующий человек — часто тот же инженер, спустя несколько месяцев — мог безопасно изменить ее.

Непрерывное обучение

Языки, фреймворки, а теперь и инструменты искусственного интеллекта меняются каждые несколько лет; инженеры, которые перестают намеренно учиться после того, как их первая работа быстро останавливается.

A day in the life

Входящие, стендап и сортировкаГлубокая работа: написание кодаОбедОбзоры, пейринги и встречиОтладка, развертывание и завершение работыНерабочее время (в основном) 036912151821 24h
  1. 7–9 Входящие, стендап и сортировка

    Обработка ночных оповещений и сообщений, а затем короткая встреча, на которой команда рассказывает, над чем она работает и что ей мешает.

  2. 9–12 Глубокая работа: написание кода

    Самый защищенный блок дня, в идеале с отключенными уведомлениями, посвященный реализации функции или исправления, требующего постоянной концентрации.

  3. 12–13 Обед

    Настоящий перерыв; многие инженеры сообщают, что это первое, что исчезает при резком падении, и первое, о чем они сожалеют.

  4. 13–16 Обзоры, пейринги и встречи

    Чтение запросов коллег, объединение усилий для решения сложной проблемы, а также встречи по проектированию или планированию, которые, как правило, собираются во второй половине дня.

  5. 16–19 Отладка, развертывание и завершение работы

    Завершение и отправка дневной смены, наблюдение за ее безопасным развертыванием и оставление заметок на завтра или для тех, кто дежурит ночью.

  6. 19–7 Нерабочее время (в основном)

    Личное время и сон — если только это не дежурная неделя, когда телефонный звонок может превратить 3 часа ночи в незапланированный производственный инцидент.

The know-how

Craft knowledge practitioners actually pass on — not motivation.

01

Биссектриса, не угадай

Когда ошибка появляется где-то между рабочей версией и сломанной, выполните двоичный поиск в истории вместо того, чтобы просматривать различия — проверьте среднюю точку, затем повторяйте, пока не останется одно изменение.

Стандартная отладка с помощью двоичного поиска, автоматизированная командой Git bisect.
02

Прочитайте ошибку, прежде чем читать код

Полное сообщение об ошибке, трассировка стека и окружающие строки журнала обычно уже содержат ответ; Прыжок прямо к источнику и догадки приводят к потере той единственной улики, которую компьютер бесплатно предоставил вам.

Откликается в книге Брайана Кернигана и Роба Пайка «Практика программирования» (1999).
03

Сделайте изменение легким, а затем сделайте легкое изменение

Если функцию сложно добавить, обычно это признак того, что код для нее создан неправильно. Сначала выполните рефакторинг, без изменения поведения, пока функция не станет небольшим очевидным отличием, а затем создайте это различие.

Кент Бек
04

Забор Честертона

Прежде чем удалять или упрощать код, значение конфигурации или проверку, которую вы не понимаете, выясните, почему они были там помещены. Возможно, именно по этой причине он тихо защищает от неудачи, которой не было уже много лет.

Г.К. Честертон, Существо (1929), принятое как инженерный фольклор.
05

Удаление кода выполняется

Код, который больше не существует, не может содержать ошибок, не может сбить с толку следующего читателя и не может нуждаться в обновлении. Удаление мертвых путей и неиспользуемых функций следует отмечать так же, как и выпуск новых функций.

Вторит Джефф Этвуд, Coding Horror, 2007 («лучший код — это отсутствие кода вообще»)
06

Отладка резиновой утки

Прежде чем просить о помощи, объясните проблему вслух, построчно, коллеге или даже неодушевленному предмету. Акт точного формулирования часто выявляет ошибку еще до того, как кто-нибудь ответит.

Программист-прагматик, Эндрю Хант и Дэвид Томас (1999)

Tools of the trade

Редактор кода/IDE

Доминируют Visual Studio Code и IDE JetBrains; оба теперь создают автозаполнение с помощью искусственного интеллекта и общаются прямо в редакторе.

Гит

Система контроля версий была стандартизирована почти во всей отрасли после того, как Торвальдс написал ее в 2005 году; без него почти ничего не поставляется.

Трекер проблем

Проблемы Jira, Linear или GitHub превращают накопившиеся ошибки и функции в то, что команда может планировать на неделю или квартал.

CI/CD-конвейер

Автоматизированные системы, которые создают, тестируют и развертывают код при каждом изменении, превращая выпуск релиза из нервного ручного мероприятия в рутинное.

Помощник по кодированию с использованием искусственного интеллекта

Такие инструменты, как GitHub Copilot, теперь записывают большую часть строк, которые принимает инженер, смещая повседневную работу в сторону просмотра и управления, а не набора текста.

How people fail at it

Разработка, основанная на резюме

Выбор модного языка, фреймворка или архитектуры потому, что он хорошо смотрится в резюме, а не потому, что он соответствует проблеме, оставляя позади сложность, которую должна поддерживать следующая команда.

Не читая сообщение об ошибке

Сопоставление шаблонов с запомненным исправлением вместо чтения того, что на самом деле сообщает программа, что может потратить часы на поиск неправильной причины.

Переписывание Большого Взрыва

Отказ от работающей системы для ее «правильного» восстановления с нуля — это общеизвестный рискованный шаг: полная переработка браузера Netscape в конце 1990-х годов — широко упоминаемый случай, когда это стоило компании лидерства на рынке.

Similar professions

📊

Специалист по данным

Находит закономерности и строит прогнозные модели на основе данных — должность 2008 года, основанная на трех столетиях подсчета, тестирования и визуализации доказательств.

AI-resistant 38
📦

Инженер МЛОпс

Создает системы, которые обучают, развертывают, контролируют и управляют моделями машинного обучения в производстве.

AI-resistant 54
🗺️

Менеджер по продукту

Решает, что компания должна построить дальше и почему, превращая потребности клиентов, бизнес-цели и технические ограничения в один общий план, которым никто больше не владеет.

AI-resistant 50
🔐

Специалист по кибербезопасности

Защищает системы, данные и людей, обнаруживая, предотвращая и реагируя на цифровые атаки.

AI-resistant 63
🌿

Менеджер по устойчивому развитию

Руководит стратегией, измерениями и отчетностью, которые помогают организациям снизить экологический и социальный ущерб при выполнении деловых обязательств.

AI-resistant 66
🧾

Бухгалтер

Хранитель книг: наследник ремесла, настолько древнего, что оно изобрело само письмо, и теперь ведет переговоры с программным обеспечением, созданным для его автоматизации.

AI-resistant 35

Continue exploring

Keep exploring

More in Engineering & Technology

🤖

Исследователь искусственного интеллекта

Разрабатывает и тестирует алгоритмы, лежащие в основе машинного интеллекта, в области, которая сейчас стремится автоматизировать растущую долю собственного исследовательского процесса.

AI-resistant 50
🛰️

Аэрокосмический инженер

Проектирует, анализирует и сертифицирует летательные аппараты, ракеты и космические корабли, отрывающиеся от земли, работая с запасом безопасности, не оставляющим места для догадок.

AI-resistant 74
🌉

Инженер-строитель

Профессия, превращающая реки, скалы и гравитацию в мосты, дороги и чистую воду — тихая несущая сила цивилизации со времен Имхотепа.

AI-resistant 72
🔌

Инженер-полупроводник

Разрабатывает и производит транзисторы внутри каждого компьютера, телефона и оружия, используя настолько точные станки, что их могут эксплуатировать лишь несколько заводов на Земле.

AI-resistant 60
🦾

Инженер-робототехника

Разрабатывает машины, которые чувствуют, принимают решения и действуют в физическом мире, где сложной проблемой является не интеллект, а сам мир.

AI-resistant 65
🔐

Специалист по кибербезопасности

Защищает системы, данные и людей, обнаруживая, предотвращая и реагируя на цифровые атаки.

AI-resistant 63
📦

Инженер МЛОпс

Создает системы, которые обучают, развертывают, контролируют и управляют моделями машинного обучения в производстве.

AI-resistant 54
🌬️

Инженер по возобновляемым источникам энергии

Проектирует, строит и совершенствует ветровые, солнечные, накопительные и сетевые системы, которые превращают возобновляемые ресурсы в надежную электроэнергию.

AI-resistant 72