Modernizacija zastarjelog softvera bez potpunog ponovnog pisanja
Stari sustav na koji se svi žale ne mora se srušiti i izgraditi iznova od nule. Postoji mirniji, sigurniji put — i on održava poslovanje u pogonu dok popravljate ono što stvarno boli.

Gotovo svaka etablirana tvrtka ima ga: komad softvera koji svi potiho mrze. Spor je, ružan je, pola tima zna zaobilazno rješenje za grešku koju nitko nikad nije popravio, a jedina osoba koja ga je razumjela otišla je 2019. Instinkt je uvijek isti — spaliti ga i izgraditi novi. I taj instinkt, češće nego ne, upravo je način na koji dobre tvrtke izgube godinu i malo bogatstvo ni za što.
Vidio sam veliko ponovno pisanje kako krene po zlu dovoljno puta da imam refleks na to. Osnivač mi pokaže svoj raspucani sustav narudžbi ili svoj drevni alat za raspoređivanje, uzdahne i kaže neku inačicu rečenice „samo trebamo zamijeniti cijelu stvar.” I možda ćete jednog dana to i učiniti. No potpuno ponovno pisanje — iščupati stari sustav, izgraditi blistavi novi usporedno, prebaciti prekidač — jedan je od najrizičnijih poteza u cijelom softveru. Skupo je, traje daleko dulje nego što je obećano, i cijelo to vrijeme radite naslijepo, nadajući se da novo pokriva svaki čudan rubni slučaj koji je staro potiho rješavalo petnaest godina.
Dobra je vijest da potpuno ponovno pisanje gotovo nikad nije jedina opcija, a rijetko je najbolja. Postoji mirniji način modernizacije — postupan, povratan i nježan prema poslovanju koje i dalje mora zarađivati dok radite. Ovo je vodič za taj način: kako prepoznati što stvarno treba popraviti, kako zamijeniti bolne dijelove bez rušenja cijelog sustava i kako znati kada je potpuno ponovno pisanje uistinu prava odluka.
Zašto je potpuno ponovno pisanje tako primamljivo — i tako opasno
Potpuno ponovno pisanje zavodljivo je jer obećava čistu ploču. Nema više naslijeđenog nereda, nema više kompromisa, svježa baza koda izgrađena na pravi način s modernim alatima. Na ploči izgleda očito. U stvarnosti se obvezujete iznova izgraditi godine nagomilane poslovne logike — velik dio nedokumentiran, dio živi samo u glavama ljudi koji su otišli — dok sat otkucava, a računi pristižu.
Dublja je zamka problem paralelnog svemira. Mjesecima ili godinama koliko treba za izgradnju zamjene, imate dva sustava: stari, koji još mora voditi poslovanje, i novi, koji još nije spreman. Svaku promjenu koju poslovanje treba mora se napraviti dvaput, ili novi sustav zaostane za stvarnošću prije nego što se uopće pokrene. Timovi izgaraju održavajući oba na životu. A budući da nitko ne smije prijeći dok novi sustav ne radi sve, nema rane pobjede, nema povratne informacije, nema dokaza da radi — samo dugo, tjeskobno čekanje na jedan golem, sve-ili-ništa dan pokretanja.
“Ponovno pisanje traži da se kladite na poslovanje na jedan jedini dan pokretanja, godinama udaljen, za sustav koji nitko još nije koristio. To nije plan — to je oklada.”
Ovdje postoji dobro poznata folklorna mudrost industrije, i zaslužena je: drugi sustav, veliko ponovno pisanje, ima naviku trajati triput dulje od procjene i stići s manje značajki od onoga što zamjenjuje. Procjena nije pogrešna jer su ljudi nemarni. Pogrešna je jer nitko na početku ne može vidjeti sve sitnice koje stari sustav potiho radi dobro.

Što „naslijeđeno” zapravo znači (ne radi se o dobi)
Bacamo riječ naslijeđeno kao da samo znači staro. Ne znači. Mnogo softvera koji radi već desetljeće sasvim je u redu — dosadan, stabilan, plaćen, obavlja svoj posao. Dob sama po sebi nije razlog da se išta dira. Najskuplja pogreška u cijelom ovom području jest modernizirati nešto što je potiho radilo, samo zato što je izgledalo zastarjelo.
Softver zaslužuje oznaku naslijeđeno kada vam aktivno staje na put. Kada ga ne možete sigurno mijenjati jer ga nitko u potpunosti ne razumije. Kada se ne može povezati s alatima o kojima sada ovisite. Kada je jedna osoba jedina koja ga može održati na životu. Kada je toliko spor ili krhak da je vaš tim oko njega izgradio cijeli folklor zaobilaznih rješenja. To je prava definicija — ne godina u kojoj je napisan, nego trošak koji vam nameće danas i rizik koji nosi u sutra.
Dijagnosticirajte prije nego što išta dirnete
Prije nego što se prepiše ijedan redak, treba vam iskrena karta gdje bol zapravo živi. Najčešće je sustav koji svi mrze 80 % u redu. Nevolja je koncentrirana na nekoliko određenih mjesta — jedan spor zaslon, jedna pokvarena integracija, jedan tijek rada koji prisiljava na dvostruki unos podataka — i tih nekoliko mjesta proizvodi gotovo sve pritužbe. Pronađite ih i pronašli ste cijeli svoj projekt.
Način da ih pronađete nije najprije tehnička revizija — to je razgovor. Sjednite s ljudima koji tu stvar koriste svaki dan i pitajte ih gdje boli. Gdje čekaju? Što ponovno upisuju? Što izbjegavaju jer je bolno? Gdje drže privatnu tablicu da zaobiđu službeni sustav? Ta zaobilazna rješenja su zlato: svako je precizna rendgenska snimka problema koji vrijedi popraviti.
- Zaslone i korake na koje se ljudi najviše žale — ne u teoriji, u njihovu stvarnom svakodnevnom radu.
- Svako mjesto gdje se podaci upisuju dvaput jer dva sustava neće razgovarati međusobno.
- Integracije koje su se pokvarile, ili nikad nisu postojale, prisiljavajući na ručno kopiranje i lijepljenje između alata.
- Sve što samo jedna osoba zna pokrenuti ili popraviti — vaše pojedinačne točke kvara.
- Dijelove koji su uistinu u redu, da ih možete zaštititi i ostaviti na miru.
- Ono što će poslovanje trebati sljedeće godine, a u što trenutni sustav jednostavno ne može dorasti.
Kada to učinite iskreno, projekt se obično smanji. Vlasnik koji je ušao govoreći „zamijenite sve” izlazi shvativši da treba popraviti tri stvari. To nije razočaranje — to je olakšanje. Tri stvari koje se mogu popraviti projekt je koji možete dovršiti ovog tromjesečja. Potpuna zamjena godina je koju možda nećete preživjeti.
Strangler pristup: zamijenite ga dio po dio
Postoji obrazac za sigurno izvođenje ovoga, a ima pomalo sumoran, ali pamtljiv naziv: strangler pristup, prema smokvi davitelju — povijuši koja raste oko stabla, postupno preuzimajući njegovu strukturu dok, na kraju, novi izboj ne stane sam, a stara debla nestane. Primijenjeno na softver, ideja je prekrasno praktična: ne zamjenjujete stari sustav u jednoj junačkoj zamjeni. Uzgajate novi oko njega, dio po dio, dok od staroga ne ostane ništa što ikome treba.
U praksi to ide ovako. Odaberete jedan bolan dio — recimo, modul za fakturiranje koji svi mrze. Izgradite modernu zamjenu za samo taj dio. Usmjerite fakturiranje na novi modul dok sve ostalo nastavlja raditi na starom sustavu, netaknuto. Promatrate to neko vrijeme. Kada je čvrsto, taj dio starog sustava utihne, a vi prelazite na sljedeći dio. Stari se sustav postupno smanjuje, poput svijeće, umjesto da bude srušen odjednom.

Ono što ovo čini toliko sigurnijim od ponovnog pisanja jest da je svaki korak malen, uživo i povratan. Nikad ne radite naslijepo. Svaki novi dio brzo dolazi u stvarnu uporabu, pa brzo saznate radi li doista. Ako nešto pođe po zlu, riskirali ste samo jedan modul, a ne cijelo poslovanje — i obično se možete vratiti na stari put dok ga popravljate. Pobjede dobivate usput umjesto jednog strašnog pokretanja na kraju. A poslovanje radi, normalno, cijelo to vrijeme.
Kako ritam zapravo izgleda
- 1Odaberite najbolniji, najsamostalniji dioŽelite visoku bol i čiste rubove — modul koji jako boli i nema prste u svemu ostalom. To je vaša prva meta.
- 2Stavite tanak sloj ispred starog sustavaMali sloj za usmjeravanje odlučuje koji zahtjevi idu starom sustavu, a koji novom dijelu. To je šav koji sve ostalo čini mogućim.
- 3Izgradite i pokrenite samo taj jedan dioZamijenite jedan modul, dajte ga u stvarne ruke i usmjerite na njega samo taj djelić posla. Tjedni, ne godine — i ostatak sustava nikad se nije pomaknuo.
- 4Stabilizirajte, zatim prijeđite na sljedeći dioKada se novom modulu povjeri, odgovarajući dio starog sustava prelazi u mirovanje. Ponovite sa sljedećim bolnim dijelom, učeći usput.
- 5Umirovite stari sustav kad je prazanNaposljetku naslijeđeni sustav ne radi ništa o čemu itko ovisi. Tek tada ga gasite — tiho, bez drame, jer se sve važno već premjestilo.
Primijetite što je u ovome drukčije od ponovnog pisanja: nema jednog jedinog dana pokretanja kojeg se treba bojati. Nema paralelnog svemira koji treba održavati. Novi je sustav u produkciji od trećeg tjedna, zarađuje svoj kruh i uči vas stvarima, umjesto da čeka u laboratoriju na pokretanje koje stalno klizi.
Ponekad ga uopće ne morate zamijeniti
Prije nego što išta uopće zamijenite, vrijedi se zapitati treba li stari sustav zamjenu ili samo treba prestati biti otok. Iznenađujuće je velik broj problema „trebamo novi sustav” zapravo problem „naši sustavi međusobno ne razgovaraju.” Stari je softver dobar u svom poslu — samo sjedi u silosu, prisiljavajući ljude da podatke prenose ručno.
U tim slučajevima najjeftiniji, najbrži popravak nije novi sustav. To je most. Omotate stari softver vezom — integracijom koja mu omogućuje da automatski razmjenjuje podatke s vašim drugim alatima — i modernim slojem na vrhu za dijelove kojih ljudi zapravo dotiču. Zastarjeli motor i dalje bruji ispod; tim dobiva čistu površinu i kraj kopiranja i lijepljenja. Nije glamurozno, ali je često najveći povrat po euru u cijelom pothvatu.
| Pristup | Rizik | Vrijeme do vrijednosti | Kada odgovara |
|---|---|---|---|
| Integracija / povezivanje | Nizak | Dani–tjedni | Sustav radi, ali živi u silosu |
| Novo sučelje na starom motoru | Nizak | Tjedni | Logika je u redu, bol je korisničko iskustvo |
| Zamjena dio po dio | Srednji | Tjedni po dijelu | Određeni vas moduli koče |
| Potpuna ponovna izgradnja | Visok | Mjeseci+ | Temelj vas uistinu ne može nositi naprijed |
Kada je potpuno ponovno pisanje uistinu prava odluka
Cijeli sam ovaj vodič proveo odgovarajući vas od velikog ponovnog pisanja, pa da budem pošten: ponekad ono uistinu jest odgovor. Postoje temelji toliko truli da ih nikakva količina krpanja, premošćivanja ili zamjene dio po dio neće spasiti, a pretvarati se suprotno samo odgađa neizbježno dok trošite novac podupirući leš.
Iskreni su znakovi specifični. Tehnologija na kojoj je sustav izgrađen mrtva je ili umire — nema podrške, nema sigurnosnih ažuriranja, nikoga nije ostalo tko može raditi na njoj. Poslovanje se tako temeljno promijenilo da stari model uopće više ne odgovara stvarnosti. Ili je sustav toliko zapetljan da čak i male promjene redovito kvare stvari na nepovezanim mjestima, što obično znači da uopće nema čistih šavova za strangler pristup. Kada su dva ili tri od toga istodobno istinita, postupni rad prestaje biti sigurniji izbor.
I evo tihe nagrade za prethodno postupni rad, čak i ako naposljetku iznova izgradite: dok dođete dotle, razumjet ćete sustav daleko bolje nego na početku. Svaki modul koji ste zamijenili naučio vas je nešto što izvorni autori nikad nisu zapisali. Ponovno pisanje potaknuto tim znanjem potpuno je drukčija, daleko sigurnija životinja od one pokrenute s optimizmom prvog dana.

Dio koji nitko ne spominje: uglavnom se radi o ljudima
Evo nečega što tehnički vodiči preskaču. Najteži dio modernizacije starog softvera obično nije kod — to su ljudi koji su godinama prilagođavali sebe njemu. Znaju njegove ćudi. Imaju mišićnu memoriju za njegove čudne prečace. Novi modul koji je objektivno bolji prva dva tjedna ipak može djelovati lošije, naprosto zato što je nepoznat. Ako to zanemarite, čak i savršena tehnička migracija može propasti.
Postupni pristup i ovdje pomaže, gotovo slučajno. Budući da promjena dolazi po jedan mali dio, ljudi je upijaju postupno umjesto da od njih tražite da sve nauče iznova jednog ponedjeljka ujutro. Uključite svakodnevne korisnike rano. Pustite ih da oblikuju zamjenu prije nego što je gotova. Tim koji je pomogao osmisliti novi zaslon za fakturiranje branit će ga; tim kojem je spušten na glavu prezirat će ga, čak i ako je istovjetan. Modernizacija je projekt upravljanja promjenama u softverskom kostimu.
Imate sustav koji svi neprestano prijete zamijeniti?
Prije nego što se obvežete na ponovno pisanje, vrijedi jedan iskren razgovor o tome što stvarno treba popraviti. Pomoći ćemo vam mapirati gdje bol uistinu živi i pronaći najlakši put koji je rješava — često mnogo manji nego što biste očekivali.
Pogledajte kako pristupamo softveru po mjeriČesta pitanja
Je li jeftinije iznova napisati stari softver ili ga modernizirati?
Što je strangler pristup jednostavnim riječima?
Možemo li nastaviti voditi poslovanje dok moderniziramo?
Kako znamo koje dijelove modernizirati prve?
Kada je potpuno ponovno pisanje zapravo pravi izbor?

Have a nice day softverski je studio koji pomaže malim i srednjim poduzećima u digitalizaciji — automatizacija, umjetna inteligencija i softver po mjeri koji radi u svakodnevnom poslovanju, a ne samo na slajdovima.