Skip to content

💻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