Ten kod, który kręci się w tornadzie obok krowy? To Twój
Przeszliśmy najciemniejsze zakamarki cudzego kodu. Ty nie musisz.
Ratowanie projektu to nie development, tylko archeologia z terminem wydania. Dostawaliśmy w spadku kod bez testów, bez README i z jednym commitem opisanym słowem „fix”. Nic nas już nie zdziwi. Ale nie martw się. Po to jesteśmy.
Przejęcie projektu, które zaczyna się od czytania kodu, a nie od przepisywania go
Sprawdzamy, co jest, mówimy, ile to jest warte, a potem razem ustalamy, co dalej.
Zanim zaczniemy czytać, warto wiedzieć, co zwykle idzie nie tak – dlatego opisaliśmy pięć sposobów, w jakie rozpada się migracja platformy.
Większość projektów modernizacji starszych systemów wycenia się od razu jako przepisanie od zera, bo łatwiej je oszacować i więcej na nim zarobić. I właśnie tak firmy tracą rok, a na koniec dostają coś, co potrafi mniej niż to, co już miały. Przejęcie projektu powinno zacząć się od audytu: co działa, co jest groźne, czego nikt nie opisał i ile co miesiąc kosztuje utrzymanie tego przy życiu.
Dopiero wtedy ma sens rozmowa o tym, co z kodem zrobić. Czasem odpowiedź brzmi: ustabilizować i rozwijać. Czasem: wymienić dwa serwisy, resztę zostawić. Zdarza się, że naprawdę trzeba budować od nowa – wtedy powiemy to wprost, choć to odpowiedź dla nas najmniej wygodna. Zmiana dostawcy powinna kosztować Cię kilka tygodni pracy na zakładkę, a nie rok w plecy.
Refaktoryzacja kodu i przejęcie projektu: co naprawdę obejmują
Kod to ta łatwiejsza połowa.
Przejęcie od dostawcy to nie plik zip i „powodzenia”. To kod, dostępy, infrastruktura, domeny, licencje, dane i wiedza, której nikt nigdy nie spisał. Bierzemy to wszystko – a tę ostatnią część wreszcie spisujemy.
Audyt kodu – ustalenia z plikiem, linią i poziomem ważności
Architektura odtworzona z kodu źródłowego, żeby było jasne, co właściwie masz
Przegląd zależności i łańcucha dostaw
Repozytoria, domeny i konta chmurowe przepisane na Ciebie
Nowe hasła i klucze w miejsce wszystkich, które znał poprzedni zespół
Przejęcie infrastruktury na AWS, GCP lub Azure
Triaż krytycznych błędów, żeby nie było gorzej, zanim skończymy planować
Poprawki bezpieczeństwa i wydajności w kolejności, którą zatwierdzasz
Dokumentacja pisana na podstawie kodu, nie z pamięci
Testy tam, gdzie ich nie było
CI/CD od nowa – żeby wydanie przestało być wydarzeniem
Monitoring, logi i alerty, z których da się coś wyczytać
Zostawić, zrefaktoryzować czy przepisać – decyzja z wyceną dla każdego komponentu
Roadmapa, z którą można stanąć przed zarządem
I to, czego nikt nie spisał – czyli zwykle to, co najważniejsze
Wciąż czytasz? Świetnie. Dalej jest jeszcze lepiej.
Zaczynamy bez poprzedniego dostawcy
Nie szukamy winnych
Bez zamrażania rozwoju
Modernizacja starego systemu: przepisać czy zrefaktoryzować
Rozstanie z nami też będzie porządnym przekazaniem
Odzyskaj kontrolę nad kodem
System przypadł Ci w spadku, a odpowiedzialność razem z nim? Dobrze trafiasz.
Nie wiesz, do której grupy należysz? Przekaż nam repozytorium. Powiemy Ci, co masz.
Refaktoryzacja kodu i przejęcie projektu – zapytaj o wszystko
To przejęcie oprogramowania zbudowanego przez inny zespół i doprowadzenie go do stanu, w którym znów można je bezpiecznie uruchamiać, zmieniać i nad nim panować. W praktyce składają się na to cztery rzeczy: audyt istniejącego kodu, odzyskanie repozytoriów, infrastruktury i kont, ustabilizowanie tego, co akurat się sypie, oraz uczciwa decyzja, czy obecne rozwiązanie zostawić, zrefaktoryzować, czy wymienić. Firmy szukają tej usługi, gdy współpraca z dostawcą kończy się źle, MVP zbudowane przez foundera przestało nadążać za firmą albo odszedł wewnętrzny zespół.
Tak – to większość naszej pracy w tym obszarze. Prosimy o dostęp do odczytu repozytorium i krótką rozmowę, robimy audyt gotowości do produkcji i wracamy z ustaleniami, ryzykami i miesięcznym kosztem utrzymania. Na tej podstawie dostajesz plan o stałym zakresie. Nie musisz zobowiązywać się do całego przejęcia, żeby zamówić audyt – wielu klientów najpierw kupuje samą ocenę, a dopiero potem decyduje.
Zaskakująco często sytuacja jest lepsza, niż się wydaje. Zacznij od ustalenia, co umowa mówi o prawach własności i co jest zarejestrowane na kogo – domeny, konta chmurowe, aplikacje w sklepach, klucze do zewnętrznych API. Zwykle potrafimy odtworzyć system z tego, do czego masz dostęp: z wdrożenia produkcyjnego, fragmentu repozytorium, starego backupu. Zmieniamy też każdy sekret, który znał poprzedni zespół – a ten krok pomija zdumiewająco wiele firm. Jeśli umowa faktycznie zostawia własność po ich stronie, to temat dla Twojego prawnika, a my przygotujemy opinię techniczną, o którą poprosi.
Audyt, od którego wszystko się zaczyna, wyceniamy według wielkości repozytorium: od 890 € za Readiness Check małego projektu do 8000 € i więcej za systemy z wieloma repozytoriami lub działające w branżach regulowanych. Samo przejęcie wyceniamy potem jako stały zakres na podstawie ustaleń z audytu – cenę widzisz więc obok uzasadnienia, a nie przed nim. Jeśli zamiast pełnego przejęcia wolisz nadzór nad własnym zespołem, rozliczamy się miesięcznie i wychodzi to znacznie taniej.
Zwykle nie – domyślnie wręcz to odradzamy. Przepisanie od zera wyrzuca do kosza lata reguł biznesowych, których nikt nie spisał, w tym tych brzydkich, które powstały, bo kiedyś poskarżył się prawdziwy klient. Przepisujemy komponent, gdy audyt pokazuje, że wymiana jest tańsza niż naprawa – i mówimy, których komponentów to dotyczy, zanim ruszy jakakolwiek praca.
Tę datę podajemy w trakcie audytu, zanim cokolwiek podpiszesz, bo zależy wyłącznie od tego, co znajdziemy – udokumentowany kod z testami to zupełnie inna sytuacja niż kod bez jednego i drugiego. Na pewno nie zaczniemy wdrażać nowych funkcji do systemu, którego jeszcze nie rozumiemy. Właśnie tak przejęcie najczęściej zamienia się w drugą akcję ratunkową.
Zacznij od zabezpieczenia dostępów, a nie od szukania nowego wykonawcy. Zmień hasła, nad którymi masz kontrolę, wyeksportuj wszystko, do czego masz dostęp, i spisz to, do czego go nie masz: repozytoria, DNS, konta chmurowe, wpisy w sklepach z aplikacjami, operatorów płatności. Robimy to dla klientów co tydzień – i zwykle właśnie to przesądza, czy przekazanie będzie tylko trudne, czy także drogie.
Zwykle tak – i częściej, niż się wydaje. Domenę, konto chmurowe czy aplikację w sklepie można odzyskać przez dostawcę, jeśli wykażesz, że to Twoja firma za nie płaciła. Trudniej jest z samym kodem – dlatego najpierw sprawdzamy, czy gdzieś jeszcze istnieje artefakt builda, obraz serwera albo lokalna kopia na laptopie któregoś z programistów.
Naprawić – chyba że rachunek mówi inaczej, a zwykle nie mówi. Większość software house’ów wycenia przepisanie, bo łatwiej je oszacować i więcej na nim zarobić. Tyle że przepisanie zabiera rok, a na koniec dostajesz coś, co potrafi mniej niż to, co już działało. Decyzję podejmujemy po przeczytaniu kodu, nie przed.
Tak – i często to najtańsza droga. Dwa tygodnie pracy na zakładkę z ludźmi, którzy ten kod pisali, oszczędzają miesiące odtwarzania wiedzy. Gdy to niemożliwe, odtwarzamy ją z samego kodu: wolniej, ale jak najbardziej się da.