Guide

Modernisera gammal programvara utan en stor omskrivning

Det gamla systemet som alla klagar på behöver inte rivas och byggas om från grunden. Det finns en lugnare, tryggare väg — och den håller verksamheten igång medan du fixar det som verkligen skaver.

Have a nice dayHave a nice day15 min läsning
Modernisera gammal programvara utan en stor omskrivning

Nästan varje etablerat företag har ett: en programvara som alla tyst ogillar. Den är långsam, den är ful, halva teamet känner till en kringgång för buggen som ingen någonsin fixade, och den enda person som förstod den slutade 2019. Instinkten är alltid densamma — bränn ner den och bygg en ny. Och den instinkten är, oftare än inte, precis hur bra företag förlorar ett år och en liten förmögenhet på ingenting.

Jag har sett den stora omskrivningen gå fel tillräckligt många gånger för att ha en reflex kring det. En grundare visar mig sitt knakande ordersystem eller sitt urgamla schemaläggningsverktyg, suckar och säger någon version av ”vi behöver bara byta ut hela grejen”. Och kanske gör ni det en dag. Men den fullständiga omskrivningen — riv ut det gamla systemet, bygg ett glänsande nytt parallellt, slå om en strömbrytare — är ett av de mest riskabla dragen i hela mjukvaruvärlden. Det är dyrt, det tar mycket längre tid än utlovat, och under hela tiden kör ni blint och hoppas att det nya täcker varje konstigt specialfall som det gamla tyst hanterade i femton år.

Den goda nyheten är att den storskaliga omskrivningen nästan aldrig är det enda alternativet, och sällan det bästa. Det finns ett lugnare sätt att modernisera — stegvis, återställbart och skonsamt mot verksamheten som fortfarande måste tjäna pengar medan ni arbetar. Detta är en guide till det sättet: hur du avgör vad som faktiskt behöver fixas, hur du byter ut de smärtsamma delarna utan att ta ner hela systemet, och hur du vet när en fullständig omskrivning verkligen är rätt beslut.

Varför den storskaliga omskrivningen är så lockande — och så farlig

Den fullständiga omskrivningen är förförisk eftersom den lovar ett rent bord. Inget mer äldre röra, inga fler kompromisser, en färsk kodbas byggd på rätt sätt med moderna verktyg. På en whiteboard ser det självklart ut. I verkligheten skriver du på för att bygga om år av ackumulerad affärslogik — mycket av den odokumenterad, en del lever bara i huvudet på folk som har slutat — medan klockan tickar och räkningarna kommer in.

Den djupare fällan är parallelluniversum-problemet. Under de månader eller år det tar att bygga ersättaren har du två system: det gamla, som fortfarande måste driva verksamheten, och det nya, som inte är klart än. Varje ändring verksamheten behöver måste göras två gånger, annars hamnar det nya systemet efter verkligheten innan det ens lanseras. Team bränner ut sig på att hålla båda vid liv. Och eftersom ingen får byta över förrän det nya systemet gör allt, blir det ingen tidig vinst, ingen feedback, inget bevis på att det fungerar — bara en lång, ängslig väntan på en enorm allt-eller-inget-lanseringsdag.

En omskrivning ber dig satsa hela verksamheten på en enda lanseringsdag, flera år bort, för ett system som ingen ännu har använt. Det är inte en plan — det är ett vad.
vad jag säger till alla som sträcker sig efter återställningsknappen

Det finns en välkänd branschsägen här, och den är välförtjänt: det andra systemet, den stora omskrivningen, har en vana att ta tre gånger så lång tid som beräknat och anlända med färre funktioner än det den ersätter. Uppskattningen är inte fel för att folk är slarviga. Den är fel för att ingen kan se, vid starten, alla de små saker som det gamla systemet tyst gör rätt.

En gammal träbro där flera slitna plankor byts ut en i taget mot färska nya brädor medan folk fortsätter gå över den, illustrerad i en varm platt redaktionell stil
Att modernisera väl ser ut som att byta en planka i taget — bron förblir öppen hela vägen.

Vad ”äldre” faktiskt betyder (det handlar inte om ålder)

Vi slänger oss med ordet äldre som om det bara betyder gammalt. Det gör det inte. Massor av programvara som har körts i ett decennium är helt okej — tråkig, stabil, betald, gör sitt jobb. Ålder i sig är ingen anledning att röra något. Det dyraste misstaget i hela det här fältet är att modernisera något som tyst fungerade, bara för att det såg daterat ut.

Programvara förtjänar etiketten äldre när den aktivt står i vägen för dig. När du inte tryggt kan ändra den eftersom ingen förstår den fullt ut. När den inte kan koppla upp sig mot verktygen du nu är beroende av. När en enda person är den enda som kan hålla den vid liv. När den är så långsam eller skör att ditt team har byggt upp en hel folktradition av kringgångar runt den. Det är den verkliga definitionen — inte året den skrevs, utan kostnaden den ålägger dig idag och risken den bär in i morgondagen.

Ställ diagnos innan du rör något

Innan en enda rad skrivs om behöver du en ärlig karta över var smärtan faktiskt bor. Oftast är systemet som alla hatar 80 procent okej. Bekymret är koncentrerat till ett fåtal specifika ställen — en långsam vy, en trasig integration, ett arbetsflöde som tvingar fram dubbel datainmatning — och de få ställena genererar nästan alla klagomål. Hitta dem, så har du hittat hela ditt projekt.

Sättet att hitta dem är inte en teknisk granskning först — det är ett samtal. Sätt dig med människorna som använder grejen varje dag och fråga var det skaver. Var väntar de? Vad skriver de in på nytt? Vad undviker de för att det är jobbigt? Var håller de ett privat kalkylark för att kringgå det officiella systemet? Dessa kringgångar är guld: var och en är en exakt röntgenbild av ett problem värt att fixa.

  • Vyerna och stegen folk klagar mest på — inte i teorin, utan i deras faktiska dagliga arbete.
  • Varje ställe där data matas in två gånger för att två system inte pratar med varandra.
  • Integrationerna som gick sönder, eller aldrig fanns, och tvingar fram manuell kopiering mellan verktyg.
  • Allt som bara en person vet hur man hanterar eller fixar — dina enskilda felkällor.
  • De delar som faktiskt är okej, så att du kan skydda dem och låta dem vara.
  • Vad verksamheten kommer att behöva nästa år som det nuvarande systemet helt enkelt inte kan växa in i.

När du gör det här ärligt krymper projektet oftast. Ägaren som klev in och sa ”byt ut allt” går ut och inser att de behöver fixa tre saker. Det är ingen besvikelse — det är en lättnad. Tre fixbara saker är ett projekt du kan slutföra detta kvartal. En fullständig ersättning är ett år du kanske inte överlever.

Strangler-metoden: byt ut den en bit i taget

Det finns ett mönster för att göra detta tryggt, och det har ett lite dystert men minnesvärt namn: strangler-metoden, efter strypfikuset — en lian som växer runt ett träd och gradvis tar över dess struktur tills den nya tillväxten till slut står på egna ben och den gamla stammen är borta. Tillämpat på programvara är idén vackert praktisk: du byter inte ut det gamla systemet i ett enda heroiskt byte. Du odlar det nya runt det, en bit i taget, tills det inte finns något kvar av det gamla som någon behöver.

I praktiken fungerar det så här. Du väljer en smärtsam bit — säg faktureringsmodulen som alla hatar. Du bygger en modern ersättare för just den biten. Du dirigerar faktureringen till den nya modulen medan allt annat fortsätter köra på det gamla systemet, orört. Du bevakar den ett tag. När den är stabil tystnar den delen av det gamla systemet, och du går vidare till nästa bit. Det gamla systemet krymper gradvis, som ett ljus, istället för att rivas ner på en gång.

Ett diagram som visar en stor grå låda med äldre programvara som gradvis ersätts av mindre ljusa moderna moduler kopplade via ett dirigeringslager, en del i taget, i en ren redaktionell infografisk stil
Varje ny modul tar över ett jobb; det gamla systemet krymper tills det inte finns något viktigt kvar i det.

Det som gör detta så mycket tryggare än en omskrivning är att varje steg är litet, levande och återställbart. Du kör aldrig blint. Varje ny bit kommer snabbt i verklig användning, så du får snabbt veta om den faktiskt fungerar. Om något går fel har du bara riskerat en modul, inte hela verksamheten — och du kan oftast falla tillbaka till den gamla vägen medan du fixar den. Du får vinster längs vägen istället för en skräckinjagande lansering i slutet. Och verksamheten fortsätter köra, som vanligt, hela tiden.

Hur rytmen faktiskt ser ut

  1. 1
    Välj den mest smärtsamma, mest fristående biten
    Du vill ha hög smärta och rena kanter — en modul som gör väldigt ont och inte har fingrarna i allt annat. Det är ditt första mål.
  2. 2
    Lägg ett tunt lager framför det gamla systemet
    Ett litet dirigeringslager avgör vilka förfrågningar som går till det gamla systemet och vilka som går till den nya biten. Det är fogen som gör allt annat möjligt.
  3. 3
    Bygg och lansera bara den ena biten
    Byt ut en modul, få ut den i verkliga händer och dirigera bara den skivan av arbetet till den. Veckor, inte år — och resten av systemet rörde sig aldrig.
  4. 4
    Stabilisera, gå sedan vidare till nästa bit
    När den nya modulen är betrodd går den matchande delen av det gamla systemet i viloläge. Upprepa med nästa smärtsamma bit, och lär dig längs vägen.
  5. 5
    Pensionera det gamla systemet när det är tomt
    Till slut gör det äldre systemet ingenting som någon förlitar sig på. Först då stänger du av det — tyst, utan dramatik, eftersom allt viktigt redan har flyttat.

Lägg märke till vad som är annorlunda från omskrivningen: det finns ingen enda lanseringsdag att frukta. Det finns inget parallelluniversum att underhålla. Det nya systemet är i produktion från vecka tre, drar in sitt och lär dig saker, istället för att vänta i ett labb på en lansering som hela tiden skjuts upp.

Ibland behöver du inte ens byta ut den

Innan du byter ut något alls är det värt att fråga om det gamla systemet behöver bytas ut eller bara behöver sluta vara en ö. Ett förvånande antal ”vi behöver ett nytt system”-problem är egentligen ”våra system pratar inte med varandra”-problem. Den gamla programvaran är bra på sitt jobb — den sitter bara i en silo och tvingar folk att frakta data in och ut för hand.

I de fallen är den billigaste, snabbaste lösningen inte ett nytt system. Det är en bro. Du sveper in den gamla programvaran i en koppling — en integration som låter den utbyta data med dina andra verktyg automatiskt — och ett modernt lager ovanpå för de delar folk faktiskt rör vid. Den daterade motorn fortsätter surra under; teamet får en ren yta och ett slut på kopiera-klistra. Det är inte glamoröst, men det är ofta den högsta avkastningen per euro i hela arbetet.

MetodRiskTid till värdeNär den passar
Integrera / kopplaLågDagar–veckorSystemet fungerar men lever i en silo
Nytt gränssnitt på gammal motorLågVeckorLogiken är okej, smärtan är användarupplevelsen
Byt ut bit för bitMedelVeckor per bitSpecifika moduler håller dig tillbaka
Fullständig ombyggnadHögMånader+Grunden kan verkligen inte bära dig framåt
Fyra sätt att modernisera, från lättaste beröring till tyngsta. Börja högst upp och gå nedåt bara när du måste.

När en fullständig omskrivning verkligen är rätt beslut

Jag har ägnat hela den här guiden åt att tala dig ur den stora omskrivningen, så låt mig vara rättvis: ibland är den faktiskt svaret. Det finns grunder som är så ruttna att ingen mängd lappning, broar eller bit-för-bit-byte räddar dem, och att låtsas annat skjuter bara upp det oundvikliga medan du lägger pengar på att stötta upp ett lik.

De ärliga tecknen är specifika. Tekniken systemet är byggt på är död eller döende — inget stöd, inga säkerhetsuppdateringar, ingen kvar som kan arbeta med den. Verksamheten har förändrats så grundläggande att den gamla modellen inte längre alls stämmer med verkligheten. Eller så är systemet så trasslat att även små ändringar rutinmässigt går sönder på orelaterade ställen, vilket oftast betyder att det inte finns några rena fogar att göra en strangler-metod i från första början. När två eller tre av dessa är sanna samtidigt slutar det stegvisa arbetet vara det tryggare valet.

Och här är den tysta belöningen av att göra det stegvisa arbetet först, även om du till slut bygger om: när du väl kommer dit förstår du systemet långt bättre än du gjorde i början. Varje modul du bytte ut lärde dig något som de ursprungliga författarna aldrig skrev ner. En omskrivning informerad av den kunskapen är ett helt annat, långt tryggare djur än den som lanserades på dag-ett-optimism.

En avslappnad småföretagare och en utvecklare går igenom en enkel plan tillsammans vid ett skrivbord, en lugn och självsäker stämning, illustrerad i en varm platt redaktionell stil
De bästa moderniseringsplanerna känns tråkiga med flit — små steg, alltid en väg tillbaka, verksamheten aldrig i fara.

Delen ingen nämner: det handlar mest om människor

Här är något de tekniska guiderna hoppar över. Den svåraste delen av att modernisera gammal programvara är oftast inte koden — det är människorna som har ägnat år åt att anpassa sig till den. De känner dess egenheter. De har muskelminne för dess konstiga genvägar. En ny modul som objektivt är bättre kan ändå kännas sämre de första två veckorna, helt enkelt för att den är obekant. Om du ignorerar det kan även en perfekt teknisk migrering misslyckas.

Den stegvisa metoden hjälper även här, nästan av en slump. Eftersom förändringen kommer en liten bit i taget tar folk till sig den gradvis istället för att ombes lära om allt på en enda måndagsmorgon. Ta in de dagliga användarna tidigt. Låt dem forma ersättaren innan den är klar. Teamet som hjälpte till att designa den nya faktureringsvyn kommer att försvara den; teamet som fick den i knät kommer att ogilla den, även om den är identisk. Modernisering är ett förändringsledningsprojekt utklätt till mjukvara.

Har ni ett system som alla ständigt hotar att byta ut?

Innan du binder dig till en omskrivning är det värt ett ärligt samtal om vad som faktiskt behöver fixas. Vi hjälper dig kartlägga var smärtan verkligen bor och hitta den lättaste vägen som löser den — ofta mycket mindre än du skulle tro.

Se hur vi närmar oss skräddarsydd programvara

Vanliga frågor

Är det billigare att skriva om gammal programvara eller att modernisera den?
Att modernisera stegvis är i praktiken nästan alltid billigare, eftersom en fullständig omskrivning tenderar att dra över rejält — den måste bygga om år av odokumenterad affärslogik innan den levererar något värde. Att byta ut systemet bit för bit, eller att helt enkelt koppla och fräscha upp det, ger resultat på veckor och låter dig sluta spendera i samma stund smärtan är borta. En omskrivning vinner på kostnad bara när grunden är så trasig att lappa den skulle kosta mer än att börja om.
Vad är strangler-metoden i klartext?
Det är ett sätt att byta ut ett gammalt system gradvis istället för allt på en gång. Du bygger en modern version av en smärtsam bit, dirigerar bara det arbetet till den och låter allt annat fortsätta köra på det gamla systemet. När den biten är stabil går du vidare till nästa. Med tiden gör det gamla systemet mindre och mindre, tills det är tomt och du kan stänga av det — utan någon läskig enstaka lanseringsdag längs vägen.
Kan vi hålla verksamheten igång medan vi moderniserar?
Ja — det är hela poängen med att göra det stegvis. Eftersom du byter ut en liten bit i taget och håller det gamla systemet levande under, fortsätter den normala driften hela tiden. Varje ändring är liten nog att testas i verklig användning och vid behov rullas tillbaka. Du når aldrig ett ögonblick där verksamheten hänger på ett otestat allt-eller-inget-byte.
Hur vet vi vilka delar vi ska modernisera först?
Prata med människorna som använder systemet varje dag och leta efter deras kringgångar — de privata kalkylarken, den manuella kopieringen, ”den biten gör jag bara för hand”. Varje kringgång markerar ett verkligt, kostsamt glapp. Rangordna dem efter hur ofta de biter, och toppen av den listan är där du börjar. Oftast är det en handfull specifika ställen, inte hela systemet.
När är en fullständig omskrivning faktiskt rätt val?
När den underliggande tekniken är död eller saknar stöd, när verksamheten har förändrats så mycket att den gamla modellen inte längre passar alls, eller när systemet är så trasslat att även små ändringar går sönder på orelaterade ställen — vilket också betyder att det inte finns några rena fogar att byta ut bit för bit. När två eller tre av dessa är sanna tillsammans blir en försiktig, gradvis ombyggnad det tryggare alternativet. Även då håller du det gamla systemet igång och flyttar över användare i små grupper, aldrig i ett stort skutt.
Have a nice day
Have a nice day
Redaktionen

Have a nice day är en mjukvarustudio som hjälper små och medelstora företag att bli digitala — automatisering, AI och skräddarsydd mjukvara som fungerar i vardagen, inte bara på slides.

Relevanta tjänster