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