open atlas
↑ К треку
Инженерная практика ENG · 00 · 01

С нуля: что такое инженерные практики на самом деле

Инженерные практики — это набор командных привычек (коммиты, тесты, CI, ревью, рефакторинг, ритм деплоя), которые позволяют менять код безопасно и многократно. Это карта «с нуля» и восемь слов, которые остальной трек считает уже знакомыми.

ENG Основы ◷ 10 min
Уровень
ОсновыJuniorMiddleSenior

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

Единственная проблема, которую решают инженерные практики

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

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

Восемь слов, которые остальной трек считает знакомыми

Senior-уроки дальше используют эти термины, не останавливаясь на определениях. Вот они, по одному предложению — что это и зачем оно.

СловоЧто этоЗачем оно
Контроль версий / коммитСохранённый снимок кодовой базы в определённый момент с сообщением, объясняющим «почему».Чтобы всегда можно было вернуться к любому прошлому состоянию и увидеть, кто что и зачем изменил.
Ветка (branch)Параллельная копия кодовой базы, где ты делаешь изменения, не затрагивая основную копию.Чтобы несколько человек работали одновременно, не перезаписывая работу друг друга.
ТестКод, который вызывает твой код и проверяет, что результат совпадает с ожидаемым.Чтобы сразу, а не через шесть недель, знать, когда изменение что-то сломало.
Автоматизированный набор тестовКоллекция тестов, которую компьютер запускает без участия человека.Чтобы каждое изменение проверялось последовательно, а не только те части, которые вспомнил ревьюер.
CI (непрерывная интеграция)Сервис, автоматически запускающий набор тестов при каждом пуше изменения.Чтобы сломанное изменение ловилось до мёржа, а не после того, как его увидят пользователи.
Ревью кодаКоллега читает твоё изменение и даёт обратную связь до мёржа.Чтобы баги и ошибки в дизайне увидел второй человек, а знания распространялись по команде.
РефакторингИзменение структуры кода без изменения того, что он делает.Чтобы кодовая база оставалась понятной по мере роста, не ломая существующее поведение.
РегрессияБаг, при котором что-то, что раньше работало, перестаёт работать после изменения.Знание этого слова позволяет точно говорить об ошибке, которую тесты и CI существуют предотвращать.
Ритм деплоя (deploy cadence)Как часто команда отгружает изменения в продакшен — ежедневно, еженедельно, по фиче.Чтобы релизы были маленькими и предсказуемыми, а значит — безопаснее и проще для отката.

Как они складываются вместе

Прочитанные по порядку, слова рассказывают одну историю: ты пишешь код в ветке и фиксируешь прогресс коммитами в контроль версий. Автоматизированный набор тестов ловит любую регрессию в момент пуша. CI запускает тесты автоматически при каждом пуше — ничто не проскальзывает. Коллега делает ревью кода до того, как ветка мёржится, — и ловит ошибки, которые легко заметить свежим взглядом. Изменение мёржится, и ритм деплоя доставляет его пользователям в предсказуемом, малорисковом окне. Между фичами ты рефакторишь без страха — зная, что тесты скажут, если ты случайно что-то сломал. Это один абзац — весь трек в миниатюре.

Почему это работает

Почему не просто написать код и выложить? Потому что без этих привычек каждое изменение — это ставка. Первый раз пропустил тесты — кажется, обошлось. На десятый раз — кодовая база, которой все боятся. Привычки кажутся накладными расходами поначалу: написать тест дольше, чем просто запустить приложение. Но время, которое экономит первый серьёзный баг, пойманный тестом, окупает годы написания тестов. Инженерные практики — это инвестиция с процентами.

Викторина

Что такое регрессия в разработке программного обеспечения?

Расставь шаги по порядку

Расставь шаги безопасного изменения кода — от написания до пользователей:

  1. 1 Написать код в ветке и зафиксировать прогресс в контроль версий
  2. 2 CI запускает набор тестов и ловит регрессии
  3. 3 Коллега делает ревью кода до того, как ветка мёржится
  4. 4 Изменение мёржится и доставляется в следующем окне ритма деплоя
Вспомните перед уходом
  1. 01
    В одном дыхании: какую проблему решают инженерные практики и в чём их ядро?
  2. 02
    В чём разница между тестом, набором тестов и CI — и почему это разграничение важно?
Итог

Инженерные практики — это одна идея с набором привычек: делать изменения кода безопасными и воспроизводимыми для команды, работающей вместе долгое время. Половина изоляции — контроль версий: каждое изменение живёт в ветке, каждое состояние зафиксировано в коммите, ничто не теряется навсегда. Половина безопасности — тесты и CI: автоматизированный набор тестов определяет, что система обязана делать, а CI запускает его при каждом пуше — регрессии ловятся до пользователей и коллег. Ревью кода добавляет второй взгляд и распространяет знания. Ритм деплоя делает релизы маленькими и предсказуемыми. Рефакторинг удерживает кодовую базу чистой — и он безопасен, потому что тесты смотрят. Не нужно держать все восемь слов сразу — у каждого впереди свой юнит. Теперь, когда встретишь команду, которая уверенно меняет большую кодовую базу без хаоса, — ты узнаешь привычки, стоящие за этим, и будешь точно знать, какую из них применить, когда что-то пойдёт не так.

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources4
expand
  1. 01
  2. 02
  3. 03
  4. 04

Trademarks belong to their respective owners. Editorial reference only.