10.1 „Ludzie już się nie rodzą, ich się hoduje”
No dobra, skoro wciąż tu jesteście, to kontynuujemy. „I pokażę wam, jak głęboka jest królicza nora” (c)
Opowiem wam, jak przebiega proces tworzenia produktu. Przejdziemy przez kroki od samego szczytu, globalnego poziomu, do najniższego — pisania kodu. Myślę, że czekają was ciekawe odkrycia...
Współczesne produkty IT już się nie piszą: one są tworzone. Składa się je z bibliotek, frameworków, zewnętrznych programów i produktów, albo w ogóle używa się zdalnych, płatnych lub darmowych usług internetowych.
Współczesny produkt to cały zoolog technologii, usług, rozwiązań i procesów. Część pracy wykonują ludzie, część jest zautomatyzowana, a pozostałe 90% obsługują usługi chmurowe w centrach danych. Świat już nie jest taki jak dawniej.
Pierwsza rzecz, na którą zwrócisz uwagę — to ciągłe zmiany. Nie piszesz już programów: wprowadzasz w nie zmiany.
10.2 Ciągłe zmiany
Zaczniesz pracę i dołączysz do zespołu 20 osób, które już 5 lat pracują nad produktem. Obecnie użytkownicy korzystają z jego siódmej wersji. A twoim zadaniem będzie wprowadzanie w ten produkt zmian. Niewielkich, żeby nie zrazić obecnych aktywnych użytkowników.
I to nie będzie łatwe, bo produkt już działa. Ma klientów, którzy płacą. Więc niczego nie można zepsuć. Wprowadzanie zmian do już działającego produktu jest kilka razy trudniejsze niż do nowego. Są na to specjalne standardy, protokoły, migracje i narzędzia. Przychodzi na myśl anegdota:
Spotykają się dwaj starzy przyjaciele: jeden został mechanikiem, drugi chirurgiem... każdy ma swoje życie, troski, radości... Opowiadają sobie o wszystkim, aż rozmowa dochodzi do zarobków. Mechanik mówi "No, zarabiam 30 tysięcy miesięcznie i jestem z tego bardzo zadowolony, a ty ile?" Na to kardiochirurg odpowiada: "No, ja jakieś 100 tysięcy za operację"... A mechanik zainteresowany mówi: "Dziwne, czemu taka duża różnica, przecież robimy to samo – wymieniamy części", a chirurg mówi mu: "No chodź do samochodu, odpal go"... mechanik odpala auto, chirurg otwiera maskę i mówi mechanikowi: "Widzisz, silnik pracuje? Wymień! :)"
Nawet jeśli zdarzy się cud i twoja ekipa przez cały rok pisała produkt od zera i dopiero potem go wydała, wiesz, co się stanie dalej?
Jeśli twój produkt odniesie sukces, właściciel produktu będzie chciał go rozwijać. Wydać nową wersję, dodać jakąś funkcjonalność. A może chociaż przeprowadzić kilka eksperymentów. I wiesz, co za tym idzie? Zmiany.
10.3 Wartość produktu
Z punktu widzenia nowoczesnego tworzenia produktów wartość ma tylko ten kod, który już został wydany, i ta funkcja, z której korzystają użytkownicy. Jeśli napisałeś kod, gdzieś się znajduje, działa, ale nikt z niego nie korzysta, jego wartość jest bliska zeru. Dlatego cały kod musi jak najwcześniej trafić na produkcję.
Twój kod powinien przejść takie etapy:
- Napisaliście go i upewniliście się, że działa
- Twój TeamLead zrecenzował go i dodał do głównej gałęzi w Git
- Testy podczas kompilacji programu pokazały, że nic ważnego nie zostało uszkodzone
- Testy integracyjne pokazały, że produkt działa jak należy
- Tester sprawdził ten kod i zatwierdził wydanie
- Następnie trzeba zbudować nową wersję produktu i wydać ją na serwerze
- Nową wersję produktu trzeba zapakować w Docker Images i wydać
- Możliwe, że trzeba będzie uruchomić skrypty migracyjne i wprowadzić zmiany w bazie danych i/lub innych zewnętrznych rozwiązaniach
- Następnie trzeba zebrać logi na serwerze, aby upewnić się, że wszystko działa jak należy
- W przypadku sytuacji awaryjnej, jeśli coś zepsujesz, musisz cofnąć kompilację, przywrócić poprzedni stan bazy danych i nie stracić tych działań, które wykonali użytkownicy, gdy korzystali z niestabilnej wersji produktu
W większości firm te zadania są obecnie rozwiązane: wypracowane nowe procesy, zatrudnieni specjalni ludzie, wprowadzone specjalne protokoły bezpieczeństwa i standardy kontroli jakości.
Im większa firma, tym mniej czasu upływa od napisania kodu do momentu, gdy trafi na produkcję i stanie się wartością — zacznie przynosić korzyści ludziom.
W większości firm kod przechodzi tę drogę w ciągu dwóch tygodni, ale są firmy, które wydają wersje co tydzień, a nawet codziennie. Specjalne wyjątki — kilka razy dziennie.
Napisany kod nic nie znaczy. Wartość przynosi tylko kod działający na produkcji.
GO TO FULL VERSION