10.1 «Людей більше не народжують, їх вирощують»
Ну що ж, якщо ви все ще тут, то давайте продовжимо. «І я покажу вам, наскільки глибока кроляча нора» (ц)
Давайте я розповім вам, як відбувається процес розробки продукту. Ми пройдемося по кроках від самого верхнього, глобального рівня, до самого нижнього — написання коду. Думаю, вас чекає кілька цікавих відкриттів…
Сучасні IT-продукти більше не пишуть: їх створюють. Їх збирають по частинах з бібліотек, фреймворків, сторонніх програм і продуктів, або взагалі використовують віддалені платні чи безкоштовні інтернет-сервіси.
Сучасний продукт — це цілий зоопарк технологій, сервісів, рішень і процесів. Частина роботи робиться людьми, частина автоматизована, ну а решта 90% взагалі виконується хмарними сервісами в дата-центрах. Світ вже не той, що раніше.
Але перше, на що ви звернете увагу — це постійні зміни. Ви більше не пишете програми: ви вносите в них зміни.
10.2 Постійні зміни
Ви вийдете на роботу і приєднаєтесь до команди з 20 осіб, яка вже 5 років працює над продуктом. Зараз користувачам доступна його сьома версія. І ваше завдання буде вносити в цей продукт зміни. Невеликі, щоб не відлякати нинішніх активних користувачів.
І це буде непросто, адже продукт вже працює. У нього є клієнти, і вони платять гроші. Тому ламати нічого не можна. Зміни у вже працюючий продукт вносити в кілька разів складніше, ніж створення продукту з нуля. Для цього є спеціальні стандарти, протоколи, міграції та утиліти. Зразу згадується анекдот:
Зустрічаються два старих друга: один став механіком, а інший — хірургом. У кожного своє життя, турботи, радощі... Про все одне одному розповідають і тут мова заходить про зарплати. Автомеханік каже "Ну я 30ку на місяць отримую і дуже цьому задоволений, а ти скільки?", кардіохірург каже: "Ну я приблизно 100 тисяч за операцію"... Тут автомеханік зацікавився "Дивно, чому така різниця велика, начебто одне й те саме робимо з тобою — запчастини змінюємо", а хірург йому каже: "Ну ходімо до машини, заведи"... механік заводить машину, хірург відкриває капот і каже механіку "Ось, бачиш двигун працює? Заміни! :)"
Навіть якщо сталося диво, і ваша команда цілий рік писала продукт з нуля і тільки після цього його відрелізила, знаєте, що відбудеться далі?
Якщо ваш продукт стане успішним, то власник продукту захоче його розвивати. Випустити нову версію, додати певну функціональність. Ну або хоча б провести кілька експериментів. І знаєте, що за цим піде? Зміни.
10.3 Цінність продукту
З точки зору сучасної розробки продукту цінність має лише той код, який вже відрелізили, і та фіча, якою користуються користувачі. Якщо ви написали код, він десь зберігається, працює, але ним не користуються люди, то його цінність близька до нуля. Тому весь код має якнайшвидше потрапляти на production.
Ваш код має пройти такі стадії:
- Ви його написали та переконалися, що він працює
- Ваш TeamLead переглянув його і додав до основної гілки в Git
- Тести під час складання програми показали, що ви не зламали нічого важливого
- Інтеграційні тести підтвердили, що продукт працює як потрібно
- Тестувальник перевірив цей код і дав дозвіл на реліз
- Далі необхідно зібрати нову версію продукту і відрелізити її на сервері
- Нову версію продукту потрібно упакувати в Docker Images і відрелізити
- Можливо, доведеться запустити міграційні скрипти і внести зміни в базу даних та/або інші третьосторонні рішення
- Потім потрібно зібрати логи на сервері, щоб упевнитися, що все працює як потрібно
- У разі нестандартної ситуації, якщо ви щось зламали, потрібно відкотити збірку назад, повернути попередній стан бази даних і забезпечити збереження дій користувачів, які працювали з нестабільною версією продукту.
У більшості компаній ці завдання вже вирішено: розроблені нові процеси, найняті спеціалісти, впроваджено протоколи безпеки та стандарти контролю якості.
Чим більша компанія, тим менше часу проходить від написання коду до того моменту, як він потрапить на production і перетвориться в цінність — почне приносити користь людям.
У більшості компаній код проходить цей шлях за два тижні, але є компанії, які роблять релізи кожного тижня, або навіть кожного дня. Особливі унікуми — кілька разів на день.
Написаний код нічого не вартий. Цінність приносить лише код, що працює на production.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ