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