29. rujna 2026.
Svaki put kad netko na sastanku kaže "trebali bismo ovo prepisati u X", u sobi zavlada tišina puna olakšanja. Konačno rješenje za sve što nas muči. Kod je star, framework nam se ne sviđa, deploy je spor, i eto ga, prepisat ćemo sve iz nule i bit će čisto. Problem je što ta rečenica gotovo nikad ne prolazi test kalkulatora. Prolazi test osjećaja, a to su dvije jako različite stvari.
Klasičan primjer koji svaki senior zna je Netscape. Krajem devedesetih odlučili su prepisati svoj browser od nule umjesto da čiste postojeći kod. Rezultat je bio da godinama nisu isporučili konkurentnu verziju, a Internet Explorer je u međuvremenu preuzeo tržište. Joel Spolsky je to sažeo u rečenicu koja se citira već dvadeset godina: prepisivanje koda od nule je najgora strateška greška koju tvrtka može napraviti. Nije zastarjelo. Samo se danas umjesto "prepišimo u C++" kaže "prepišimo u drugi frontend framework".
Rewrite izgleda jeftino jer računate samo vrijeme razvoja. Nova aplikacija, X mjeseci, gotovo. Ali to nije trošak. Trošak je razlika između dva svijeta, onog u kojem ste prepisivali i onog u kojem niste, kroz cijelo to vrijeme.
Dok prepisujete, stara aplikacija i dalje mora raditi. Netko je održava, gasi požare, radi hitne popravke. Ti popravci onda moraju u novu verziju, pa dvaput radite isti posao. Nove funkcije koje bi tržište htjelo ne isporučujete jer je tim zauzet, i to je oportunitetni trošak koji nitko ne stavlja u tablicu. A stara aplikacija sadrži godine skupljenih rješenja za rubne slučajeve koje nitko više ne pamti. Onaj čudni if za korisnike iz jedne zemlje, obrada uvoznog formata koji koristi troje ljudi ali plaćaju najviše. Sve to morate ponovno otkriti, jer u čistom novom kodu tih zakrpa nema, a stvarnost zbog koje su nastale nije nestala.
Ako želite grubu orijentaciju, industrijski podaci dosljedno pokazuju isti obrazac: veliki big-bang rewrite košta više puta više od inkrementalne migracije i ima znatno veću stopu probijanja rokova. Točan multiplikator ovisi o projektu, ali smjer nikad nije upitan. Rewrite je skuplji i rizičniji nego što izgleda na papiru, uvijek.
Nije da nikad ne treba migrirati. Treba, ali iz pravih razloga, a "ne sviđa nam se" nije jedan od njih. Legitiman razlog je kad framework ili jezik izlazi iz podrške i prestaju sigurnosne zakrpe. Tada ne birate hoćete li platiti, nego kada. Legitiman je kad vas postojeći stack mjerljivo koči, primjerice ne možete zaposliti ljude jer nitko više ne radi u toj tehnologiji, ili vas licenca stoji ozbiljan novac. I legitiman je kad vam nova platforma otključava sposobnost koju stara jednostavno nema, a ta sposobnost donosi mjerljiv prihod.
Obratite pozornost na riječ "mjerljivo". Ako razlog za migraciju ne možete izraziti brojkom, trošak koji izbjegavate ili prihod koji otključavate, onda to nije poslovni razlog nego estetski. Estetika je važna za tim, ali ne financira sama sebe.
Rasprava se gotovo uvijek postavi kao izbor između dva pola: prepisati sve ili ne dirati ništa. Oba pola imaju dokumentiran popis neuspjeha. Prava jedinica odluke nije cijeli sustav, nego komponenta. Umjesto da pitate "hoćemo li prepisati aplikaciju", pitajte "koji jedan dio nam stvarno smeta i možemo li samo njega zamijeniti dok ostalo radi".
Uzorak koji to omogućuje Martin Fowler je nazvao strangler fig, po smokvi koja izraste oko stabla domaćina, preuzme njegovu strukturu i ostavi ga šupljim. U praksi to znači da postavite sloj usmjeravanja ispred stare aplikacije i onda dio po dio prebacujete promet na novi kod. Jedan modul, provjerite na stvarnom prometu, ide dalje ili se vraćate promjenom jednog pravila usmjeravanja. Nikad ne dođe trenutak "sad gasimo staro, palimo novo i molimo se". Isporučujete cijelo vrijeme, rizik je razbijen na male komade, i u svakom trenutku možete stati jer ono što ste već prebacili donosi vrijednost samo za sebe.
Na jednom naslijeđenom e-commerce projektu upravo je taj pristup razlika između katastrofe i mirne migracije. Nismo dirali checkout dok smo mijenjali katalog, jer checkout radi i donosi novac, a katalog je bio ono što je stvarno kočilo. Kad naučite razmišljati u komponentama, otkrijete da vam pola sustava uopće ne treba migrirati.
Migracija na novi framework rijetko se isplati kao velika gesta. Gotovo uvijek se isplati kao niz malih, mjerljivih koraka, ako se uopće isplati. Prije nego potpišete rewrite, napravite tablicu s troškom prepisivanja, oportunitetnim troškom i prihodom koji stvarno otključavate. Ako brojke ne prolaze, prepisujete zato što vam se ne sviđa kod. To je razumljivo, ali to nije poslovni slučaj.
Povezano:
Razmišljate o migraciji ili rewriteu i niste sigurni isplati li se? Javite nam se i pomoći ćemo vam izračunati stvarni trošak prije nego zakopate mjesece u posao koji možda nije trebao.

Kastav
+385 95 908 3522