Feb. 21st, 2017

migmit: (Default)
Программисты бывают осторожные и ещё не осторожные. Первых, как ни странно, очень мало.

Осторожный программист, написав код, прогоняет все тесты.

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

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

Исправляет замечания.

Прогоняет тесты ещё раз.

Ещё раз запускает систему локально и пробует вручную.

Пушит исправления.

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

Ребейзит код на текущий мастер.

Ещё раз запускает тесты.

Ещё раз пробует локально.

Пушит.

Пробегается глазами по исправлениям.

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

А затем ещё некоторое время приглядывает — как оно, нормально работает? Не надо ли откатить на предыдущую версию?

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

А джип, как известно, застрянет там, куда другая машина не доедет.

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