1.1 «Люди больше не рождаются, их выращивают»
Ну что ж, раз вы все еще тут, давайте продолжим. «И я покажу вам, как глубока кроличья нора» ©
Давайте я расскажу вам, как происходит процесс разработки продукта — мы пройдемся по шагам от самого верхнего глобального уровня до самого нижнего — написания кода. Думаю, вас ждет несколько интересных открытий…
Современные ИТ-продукты больше не пишут, их создают. Их собирают по частям из библиотек, фреймворков, сторонних программ и продуктов или вообще используют удаленные платные или бесплатные интернет-сервисы.
Современный продукт — это целый зоопарк технологий, сервисов, решений и процессов. Часть работы делается людьми, часть автоматизирована, ну а остальные 90% вообще выполняются облачными сервисами в дата-центрах. Мир уже не тот, что раньше.
Но первое, на что вы обратите внимание — это постоянные изменения. Вы больше не пишете программы, вы вносите в них изменения.
1.2 Постоянные изменения
Вы придете на работу и присоединитесь к команде из 20 человек, которая уже 5 лет работает над продуктом. Сейчас пользователям доступна его 7-я версия. И ваша задача будет вносить в это продукт изменения. Небольшие, чтобы не отпугнуть нынешних активных пользователей.
И это будет непросто, ведь продукт уже работает. У него есть клиенты, и они платят деньги. Поэтому ломать ничего нельзя. Изменения в уже работающий продукт вносить в несколько раз сложнее, чем в новый. Для этого есть специальные стандарты, протоколы миграции и утилиты. Сразу вспоминается анекдот:
Встречаются два старых друга: один стал механиком, второй - хирургом... У каждого своя жизнь, заботы, радости... Обо всем друг другу рассказывают, и тут речь заходит про зарплаты. Автомеханик говорит: "Ну, я 30-ку в месяц получаю и очень этому доволен, а ты сколько?". Кардиохирург говорит: "Ну, я примерно 100 К за операцию...". Тут автомеханик заинтересовался: "Странно, почему такая большая разница? Вроде одно и то же делаем с тобой - запчасти меняем". А хирург ему говорит: "Ну, пойдем к машине, заводи...". Механик заводит машину, хирург открывает капот и говорит механику: "Вот видишь, двигатель работает? Поменяй! :)"
Даже если случилось чудо, и ваша команда целый год писала продукт с нуля и только после этого его отрелизила, знаете, что произойдет дальше?
Если ваш продукт станет успешным, владелец продукта захочет его развивать. Выпустить новую версию, добавить какую-то функциональность. Ну или хотя бы провести несколько экспериментов. И знаете, что за этим последует? Изменения.
1.3 Ценность продукта
С точки зрения современной разработки, ценность имеет только тот код, который уже отрелижен, и та фича, которой пользуются пользователи. Если вы написали код, он где-то хранится, работает, но им не пользуются люди, то его ценность близка к нулю. Поэтому весь код должен как можно раньше попадать на production.
Ваш код должен пройти такие стадии:
- Вы его написали и убедились, что он работает.
- Ваш TeamLead проревьюил его и добавил в основную ветку в Git.
- Тесты во время сборки программы показали, что вы не сломали ничего важного.
- Интеграционные тесты показали, что продукт работает как нужно.
- Тестировщик проверил этот код и дал добро на релиз.
- Затем нужно собрать новую версию продукта и отрелизить ее на сервере.
- Новую версию продукта нужно упаковать в Docker Images и отрелизить.
- Возможно, придется запустить миграционные скрипты и внести изменения в базу данных и/или другие сторонние решения.
- Затем нужно собрать логи на сервере, чтобы убедиться, что все работает как нужно.
- В случае внештатной ситуации, если вы что-то сломали, нужно откатить сборку назад, вернуть прежнее состояние базы данных и не потерять те действия, которые сделали пользователи, пока работали с нестабильной версией продукта.
В большинстве компаний эти задачи сейчас решены: выстроены новые процессы, наняты специальные люди, введены специальные протоколы безопасности и стандарты контроля качества.
Чем компания крупнее, тем меньше времени проходит от написания кода до того момента, как он попадет на production и превратится в ценность — начнет приносить пользу людям.
В большинстве компаний код проходит этот путь за две недели. Однако есть компании, которые делают релизы каждую неделю или даже каждый день. Особые уникумы — несколько раз в день.
Написанный код ничего не стоит. Ценность приносить только код, работающий на production.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ