Vodnik

Posodobitev zastarele programske opreme brez popolnega prepisa

Starega sistema, nad katerim se vsi pritožujejo, ni treba podreti in zgraditi znova iz nič. Obstaja mirnejša, varnejša pot — in ohranja podjetje v teku, medtem ko popravljate tisto, kar resnično boli.

Have a nice dayHave a nice day14 min branja
Posodobitev zastarele programske opreme brez popolnega prepisa

Skoraj vsako uveljavljeno podjetje ga ima: kos programske opreme, ki ga vsi tiho prezirajo. Počasen je, grd je, polovica ekipe pozna obvod za napako, ki je nihče nikoli ni popravil, edina oseba, ki ga je razumela, pa je odšla leta 2019. Nagon je vedno enak — zažgi ga in zgradi novega. In prav s tem nagonom dobra podjetja pogosteje kot ne izgubijo leto in malo premoženje čisto za nič.

Velik prepis sem dovolj pogosto videl iti narobe, da imam glede tega refleks. Ustanovitelj mi pokaže svoj škripajoč sistem za naročila ali svoje starodavno orodje za razporejanje, vzdihne in reče neko različico stavka „preprosto moramo zamenjati celo zadevo.“ In morda jo nekega dne res boste. A popolni prepis — izruvati stari sistem, vzporedno zgraditi bleščeč novega, preklopiti stikalo — je eden najbolj tveganih korakov v vsej programski opremi. Drag je, traja precej dlje, kot je bilo obljubljeno, in ves ta čas delate na slepo ter upate, da novi pokriva vsak nenavaden robni primer, ki ga je stari petnajst let tiho obvladoval.

Dobra novica je, da popolni prepis skoraj nikoli ni edina možnost in je redko najboljša. Obstaja mirnejši način posodabljanja — postopen, povraten in obziren do podjetja, ki mora med vašim delom še naprej služiti denar. To je vodnik za ta način: kako prepoznati, kaj je resnično treba popraviti, kako zamenjati boleče dele, ne da bi podrli celoten sistem, in kako vedeti, kdaj je popolni prepis res prava odločitev.

Zakaj je popolni prepis tako mamljiv — in tako nevaren

Popolni prepis je zapeljiv, ker obljublja čisto ploščo. Nič več podedovane zmešnjave, nič več kompromisov, sveža kodna baza, zgrajena na pravi način s sodobnimi orodji. Na tabli je videti samoumevno. V resnici se zavezujete znova zgraditi leta nakopičene poslovne logike — velik del nedokumentirane, nekaj je živo le v glavah ljudi, ki so odšli — medtem ko ura teče in računi prihajajo.

Globlja past je problem vzporednega vesolja. Mesece ali leta, kolikor traja izgradnja nadomestka, imate dva sistema: starega, ki mora še vedno voditi podjetje, in novega, ki še ni pripravljen. Vsako spremembo, ki jo podjetje potrebuje, je treba narediti dvakrat, sicer novi sistem zaostane za resničnostjo, še preden je sploh zagnan. Ekipe se izčrpajo z ohranjanjem obeh pri življenju. In ker nihče ne sme preklopiti, dokler novi sistem ne počne vsega, ni zgodnje zmage, ni povratne informacije, ni dokaza, da deluje — le dolgo, tesnobno čakanje na en ogromen dan zagona po načelu vse ali nič.

Prepis od vas zahteva, da stavite podjetje na en sam dan zagona, leta oddaljen, za sistem, ki ga še nihče ni uporabljal. To ni načrt — to je stava.
kar povem vsakomur, ki sega po gumbu za ponastavitev

Tu obstaja dobro znana panožna ljudska modrost in je zaslužena: drugi sistem, veliki prepis, ima navado trajati trikrat dlje od ocene in prispeti z manj funkcijami od stvari, ki jo nadomešča. Ocena ni napačna, ker so ljudje malomarni. Napačna je, ker na začetku nihče ne more videti vseh drobnih reči, ki jih stari sistem tiho počne prav.

Star lesen most z več obrabljenimi deskami, ki jih posamično nadomeščajo s svežimi novimi deskami, medtem ko ljudje še naprej hodijo čezenj, ilustrirano v toplem ploskem uredniškem slogu
Dobra posodobitev je videti kot zamenjava ene deske naenkrat — most ostane odprt vso pot.

Kaj „zastarelo“ v resnici pomeni (ne gre za starost)

Z besedo zastarelo mečemo naokoli, kot da pomeni le staro. Ne pomeni. Veliko programske opreme, ki teče že desetletje, je čisto v redu — dolgočasna, stabilna, plačana, opravlja svoje delo. Starost sama po sebi ni razlog, da se česar koli dotikate. Najdražja napaka na tem celotnem področju je posodobiti nekaj, kar je tiho delovalo, le zato, ker je bilo videti zastarelo.

Programska oprema si prisluži oznako zastarela, ko vam dejavno stoji na poti. Ko je ne morete varno spreminjati, ker je nihče v celoti ne razume. Ko se ne more povezati z orodji, od katerih ste zdaj odvisni. Ko je en sam človek edini, ki jo zna ohraniti pri življenju. Ko je tako počasna ali krhka, da je vaša ekipa okoli nje zgradila celo ljudsko izročilo obvodov. To je prava definicija — ne leto, v katerem je bila napisana, temveč strošek, ki vam ga nalaga danes, in tveganje, ki ga nosi v jutri.

Diagnosticirajte, preden se česar koli dotaknete

Preden se prepiše ena sama vrstica, potrebujete iskren zemljevid, kje bolečina v resnici prebiva. Največkrat je sistem, ki ga vsi sovražijo, 80-odstotno v redu. Težava je skoncentrirana na nekaj določenih mestih — en počasen zaslon, ena pokvarjena integracija, en potek dela, ki sili v dvojni vnos podatkov — in teh nekaj mest ustvarja skoraj vse pritožbe. Najdite jih in našli ste celoten svoj projekt.

Način, kako jih najti, ni najprej tehnična revizija — je pogovor. Sedite z ljudmi, ki to zadevo uporabljajo vsak dan, in jih vprašajte, kje boli. Kje čakajo? Kaj na novo tipkajo? Čemu se izogibajo, ker je boleče? Kje vodijo zasebno preglednico, da obidejo uradni sistem? Ti obvodi so zlato: vsak je natančen rentgenski posnetek težave, ki jo je vredno popraviti.

  • Zaslone in korake, nad katerimi se ljudje najbolj pritožujejo — ne v teoriji, v njihovem dejanskem vsakdanjem delu.
  • Vsako mesto, kjer se podatki vtipkajo dvakrat, ker dva sistema ne želita govoriti drug z drugim.
  • Integracije, ki so se pokvarile ali nikoli niso obstajale ter silijo v ročno kopiranje in lepljenje med orodji.
  • Vse, kar zna upravljati ali popraviti le ena oseba — vaše posamezne točke odpovedi.
  • Dele, ki so resnično v redu, da jih lahko zaščitite in pustite pri miru.
  • Tisto, kar bo podjetje potrebovalo prihodnje leto in v kar trenutni sistem preprosto ne more dorasti.

Ko to storite iskreno, se projekt običajno skrči. Lastnik, ki je prišel z besedami „zamenjajte vse“, odide z spoznanjem, da mora popraviti tri stvari. To ni razočaranje — to je olajšanje. Tri popravljive stvari so projekt, ki ga lahko dokončate to četrtletje. Popolna zamenjava je leto, ki ga morda ne boste preživeli.

Strangler pristop: zamenjajte ga kos za kosom

Obstaja vzorec, kako to storiti varno, in ima nekoliko mračno, a nepozabno ime: strangler pristop, po davečem fikusu — ovijalki, ki raste okoli drevesa in postopoma prevzema njegovo strukturo, dokler nazadnje novi poganjek ne stoji sam in starega debla ni več. Uporabljeno na programski opremi je zamisel čudovito praktična: starega sistema ne zamenjate z eno junaško zamenjavo. Novega vzgojite okoli njega, kos za kosom, dokler od starega ne ostane nič, kar bi kdorkoli potreboval.

V praksi to deluje takole. Izberete en boleč kos — recimo modul za izdajanje računov, ki ga vsi sovražijo. Zgradite sodobno nadomestilo le za ta kos. Izdajanje računov preusmerite na novi modul, medtem ko vse drugo še naprej teče na starem sistemu, nedotaknjeno. Nekaj časa ga opazujete. Ko je trden, ta del starega sistema utihne in vi preidete na naslednji kos. Stari sistem se postopoma krči kot sveča, namesto da bi bil podrt naenkrat.

Diagram, ki prikazuje veliko sivo škatlo zastarele programske opreme, ki jo postopoma nadomeščajo manjši svetli sodobni moduli, povezani s plastjo za usmerjanje, en odsek naenkrat, v čistem uredniškem infografskem slogu
Vsak nov modul prevzame eno opravilo; stari sistem se krči, dokler v njem ne ostane nič pomembnega.

Kar naredi to veliko varnejše od prepisa, je, da je vsak korak majhen, v živo in povraten. Nikoli ne delate na slepo. Vsak novi kos hitro pride v resnično uporabo, tako da hitro izveste, ali zares deluje. Če gre kaj narobe, ste tvegali le en modul, ne celotnega podjetja — in običajno se lahko vrnete na staro pot, medtem ko ga popravljate. Zmage dobivate sproti namesto enega grozljivega zagona na koncu. In podjetje teče, normalno, ves ta čas.

Kako je ta ritem v resnici videti

  1. 1
    Izberite najbolj boleč, najbolj samostojen kos
    Želite veliko bolečine in čiste robove — modul, ki zelo boli in nima prstov v vsem drugem. To je vaša prva tarča.
  2. 2
    Pred stari sistem postavite tanko plast
    Majhna usmerjevalna plast odloča, katere zahteve gredo v stari sistem in katere v novi kos. To je šiv, ki vse drugo omogoči.
  3. 3
    Zgradite in zaženite le ta en kos
    Zamenjajte en modul, ga dajte v resnične roke in nanj usmerite le tisti delček dela. Tedni, ne leta — in preostanek sistema se nikoli ni premaknil.
  4. 4
    Stabilizirajte, nato preidite na naslednji kos
    Ko novi modul pridobi zaupanje, ustrezni del starega sistema preide v mirovanje. Ponovite z naslednjim bolečim kosom in se sproti učite.
  5. 5
    Stari sistem upokojite, ko je prazen
    Sčasoma zastareli sistem ne počne ničesar, na kar bi se kdo zanašal. Šele takrat ga ugasnete — tiho, brez drame, ker se je vse pomembno že preselilo.

Opazite, kaj je pri tem drugače kot pri prepisu: ni enega samega dneva zagona, ki bi se ga bilo treba bati. Ni vzporednega vesolja, ki bi ga bilo treba vzdrževati. Novi sistem je v produkciji že od tretjega tedna, si služi svoj kruh in vas uči stvari, namesto da bi v laboratoriju čakal na zagon, ki se nenehno zamika.

Včasih ga sploh ni treba zamenjati

Preden sploh kar koli zamenjate, se splača vprašati, ali stari sistem potrebuje zamenjavo ali pa mora le nehati biti otok. Presenetljivo veliko težav „potrebujemo nov sistem“ je v resnici težav „naši sistemi ne govorijo med seboj“. Stara programska oprema svoje delo opravlja dobro — le sedi v silosu in sili ljudi, da podatke ročno prenašajo noter in ven.

V teh primerih najcenejši, najhitrejši popravek ni nov sistem. Je most. Staro programsko opremo ovijete s povezavo — integracijo, ki ji omogoči samodejno izmenjavo podatkov z vašimi drugimi orodji — in sodobno plastjo na vrhu za dele, ki se jih ljudje dejansko dotikajo. Zastareli pogon še naprej brni spodaj; ekipa dobi čisto površino in konec kopiranja in lepljenja. Ni razkošno, a je pogosto najvišji donos na evro v celotnem podvigu.

PristopTveganjeČas do vrednostiKdaj ustreza
Integracija / povezavaNizkoDnevi–tedniSistem deluje, a živi v silosu
Nov vmesnik na starem pogonuNizkoTedniLogika je v redu, bolečina je uporabniška izkušnja
Zamenjava kos za kosomSrednjeTedni na kosDoločeni moduli vas zavirajo
Popolna obnovaVisokoMeseci+Temelj vas resnično ne more nositi naprej
Štirje načini posodabljanja, od najlažjega do najtežjega posega. Začnite na vrhu in se spuščajte le, ko morate.

Kdaj je popolni prepis res prava odločitev

Ves ta vodnik sem porabil za to, da vas odvrnem od velikega prepisa, zato bodimo pošteni: včasih je res odgovor. Obstajajo temelji, tako gnili, da jih ne reši nobena količina krpanja, premoščanja ali zamenjave kos za kosom, in pretvarjati se drugače le odlaša neizogibno, medtem ko zapravljate denar za podpiranje trupla.

Iskreni znaki so specifični. Tehnologija, na kateri je sistem zgrajen, je mrtva ali umira — brez podpore, brez varnostnih posodobitev, nihče ni ostal, ki bi lahko delal na njej. Podjetje se je tako temeljito spremenilo, da stari model sploh več ne ustreza resničnosti. Ali pa je sistem tako zapleten, da celo majhne spremembe redno kvarijo stvari na nepovezanih mestih, kar običajno pomeni, da sploh ni čistih šivov za strangler pristop. Ko sta dve ali tri od teh stvari resnične hkrati, postopno delo preneha biti varnejša izbira.

In tu je tiha nagrada za to, da najprej opravite postopno delo, tudi če na koncu vendarle obnovite: ko pridete tja, boste sistem razumeli veliko bolje kot na začetku. Vsak modul, ki ste ga zamenjali, vas je naučil nekaj, česar prvotni avtorji niso nikoli zapisali. Prepis, podprt s tem znanjem, je popolnoma drugačna, veliko varnejša žival od tiste, zagnane z optimizmom prvega dne.

Sproščen lastnik malega podjetja in razvijalec skupaj pregledujeta preprost načrt za mizo, mirno in samozavestno vzdušje, ilustrirano v toplem ploskem uredniškem slogu
Najboljši načrti posodabljanja so namerno videti dolgočasni — majhni koraki, vedno pot nazaj, podjetje nikoli v nevarnosti.

Del, ki ga nihče ne omenja: večinoma gre za ljudi

Tu je nekaj, kar tehnični vodniki preskočijo. Najtežji del posodabljanja stare programske opreme običajno ni koda — to so ljudje, ki so se ji leta prilagajali. Poznajo njene muhe. Imajo mišični spomin za njene čudne bližnjice. Nov modul, ki je objektivno boljši, se lahko prva dva tedna vseeno zdi slabši preprosto zato, ker je neznan. Če to spregledate, lahko spodleti tudi popolna tehnična migracija.

Postopni pristop pomaga tudi tu, skoraj po naključju. Ker sprememba prihaja po en majhen kos naenkrat, jo ljudje vsrkavajo postopoma, namesto da bi od njih zahtevali, da se vsega naučijo na novo nekega ponedeljka zjutraj. Vsakdanje uporabnike vključite zgodaj. Pustite jim, da oblikujejo nadomestilo, preden je dokončano. Ekipa, ki je pomagala zasnovati nov zaslon za izdajanje računov, ga bo zagovarjala; ekipa, ki ji je bil vsiljen, ga bo prezirala, tudi če je enak. Posodobitev je projekt upravljanja sprememb v kostumu programske opreme.

Imate sistem, ki ga vsi nenehno grozijo zamenjati?

Preden se zavežete k prepisu, se splača en iskren pogovor o tem, kaj je v resnici treba popraviti. Pomagali vam bomo začrtati, kje bolečina res prebiva, in najti najlažjo pot, ki jo reši — pogosto veliko manjšo, kot bi pričakovali.

Poglejte, kako pristopamo k programski opremi po meri

Pogosta vprašanja

Je ceneje staro programsko opremo prepisati ali posodobiti?
Postopna posodobitev je v praksi skoraj vedno cenejša, ker popolni prepis običajno hudo prekorači — preden prinese kakršno koli vrednost, mora znova zgraditi leta nedokumentirane poslovne logike. Zamenjava sistema kos za kosom ali zgolj njegova povezava in osvežitev vam dasta rezultate v tednih in vam omogočita, da nehate zapravljati v trenutku, ko bolečina mine. Prepis pri stroških zmaga le, kadar je temelj tako pokvarjen, da bi njegovo krpanje stalo več kot začeti znova.
Kaj je strangler pristop v preprostih besedah?
Je način, kako stari sistem zamenjati postopoma namesto naenkrat. Zgradite sodobno različico enega bolečega kosa, nanj usmerite le tisto delo in pustite vse drugo teči na starem sistemu. Ko je ta kos trden, preidete na naslednjega. Sčasoma stari sistem počne vse manj in manj, dokler ni prazen in ga lahko ugasnete — brez enega samega grozljivega dneva zagona vmes.
Ali lahko med posodabljanjem še naprej vodimo podjetje?
Da — prav v tem je bistvo postopnega pristopa. Ker zamenjujete en majhen kos naenkrat in stari sistem spodaj ohranjate živega, normalno poslovanje ves čas teče naprej. Vsaka sprememba je dovolj majhna, da jo preizkusite v resnični uporabi in jo po potrebi razveljavite. Nikoli ne pridete do trenutka, ko bi bilo podjetje odvisno od nepreizkušenega preklopa po načelu vse ali nič.
Kako vemo, katere dele posodobiti najprej?
Pogovorite se z ljudmi, ki sistem uporabljajo vsak dan, in poiščite njihove obvode — zasebne preglednice, ročno kopiranje in lepljenje, „ta del pač delam ročno.“ Vsak obvod označuje resnično, drago vrzel. Razvrstite jih po tem, kako pogosto pikajo, in vrh tega seznama je mesto, kjer začnete. Običajno gre za peščico določenih mest, ne za celoten sistem.
Kdaj je popolni prepis dejansko prava izbira?
Ko je temeljna tehnologija mrtva ali brez podpore, ko se je podjetje tako spremenilo, da stari model sploh več ne ustreza, ali ko je sistem tako zapleten, da celo majhne spremembe kvarijo nepovezane stvari — kar pomeni tudi, da ni čistih šivov za zamenjavo kos za kosom. Ko sta dve ali tri od teh stvari resnične skupaj, postane skrbna, postopna obnova varnejša izbira. Tudi takrat stari sistem ohranjate v teku in uporabnike premikate v majhnih skupinah, nikoli z enim velikim skokom.
Have a nice day
Have a nice day
Uredništvo

Have a nice day je programski studio, ki malim in srednjim podjetjem pomaga pri digitalizaciji — avtomatizacija, umetna inteligenca in programska oprema po meri, ki deluje v vsakdanjem poslovanju, ne le na prosojnicah.

Sorodne storitve