Bygga om eller refaktorera när MVP:n inte räcker?
Av CodexierPublicerad 5 min läsning
Varje framgångsrik MVP når punkten där genvägarna som fick den lanserad börjar kosta pengar: långsamma sidor, sköra driftsättningar, funktioner som tar veckor i stället för dagar. Instinkten, särskilt hos en ny utvecklare, är att bygga om från grunden. Ibland är det rätt. Oftare är det det dyraste sättet att lösa ett problem som bor i tre filer. Den här guiden ger ett sätt att besluta utifrån bevis i stället för preferens.
Tecken på att MVP:n är ansträngd
Ansträngning visar sig som affärssymtom före tekniska. Små ändringar tar oproportionerligt lång tid. Varje release går sönder på något orelaterat ställe. Samma bugg kommer tillbaka i ny skepnad. Bara en person vågar röra en viss del av koden. Svarstiderna stiger med antalet användare. Nya utvecklare behöver veckor för att bli produktiva. Skriv ner detta med exempel och datum, för nästa steg är att fråga var i systemet vart och ett uppstår, och vag smärta leder till vaga beslut.
Refaktorera: stegvis och säkert
Refaktorering betyder att förbättra kodens struktur utan att ändra vad den gör, i små steg, där varje steg driftsätts och verifieras. Det är oglamoröst och nästan alltid rätt första drag, eftersom det angriper den faktiska orsaken till varje symtom i stället för allt på en gång.
- Lägg till tester runt den del ni ska ändra, så att ni vet när ni har haft sönder den.
- Åtgärda bara det största symtomet: den långsamma frågan, den trassliga modulen, det saknade indexet. Mät före och efter.
- Bryt ut de delar som ändras oftast till rena moduler med tydliga gränssnitt; låt de stabila delarna vara.
- Uppgradera ramverk och beroenden i ett eget steg, inte blandat med funktionsarbete.
Några veckor av detta, gjort av någon som läser koden innan hen dömer den, löser de flesta ansträngda MVP:er. Systemet fortsätter tjäna pengar hela tiden, och stannar arbetet halvvägs är inget förlorat.
Bygga om: när det är motiverat
Det finns verkliga skäl att börja om, och de har en sak gemensamt: problemet sitter i en grund som inte går att byta ut bit för bit.
| Situation | Därför misslyckas refaktorering | Ombyggnadens omfattning |
|---|---|---|
| Plattform vid slutet av sin livslängd | Inga säkerhetsuppdateringar, ingen att rekrytera | Samma funktioner, ny teknik, migrera data |
| Datamodellen motsäger verksamheten | Varje funktion slåss mot schemat | Ny modell, migreringsskript, gamla systemet skrivskyddat under bytet |
| No code- eller prototypverktyg i taket | Verktyget kan inte uttrycka det ni behöver | Egen byggnad av kärnan, behåll verktyget i kanterna |
| Kod ingen kan läsa | Varje ändring är gissning | Bygg om modul för modul, äldst och värst först |
Långsam, ful eller gammal står inte på listan. Det är refaktoreringsproblem.
En stegvis mellanväg
Angreppssättet som fungerar i praktiken är att bygga om på plats. Låt det gamla systemet fortsätta köra och betjäna kunderna. Lägg ett tunt routinglager framför. Bygg den nya versionen av ett avgränsat område, som inloggning, betalning eller rapporter, styr den trafiken till den nya koden och pensionera den gamla modulen. Upprepa med nästa område, värst först. I varje läge har ni ett fungerande system, och ni kan stanna efter vilket steg som helst med redan spenderade pengar omsatta i värde.
- Skriv ner symtomen med belägg och spåra vart och ett till sitt ursprung.
- Refaktorera de tre största ursprungen och mät effekten innan något större beslutas.
- Kvarstår ett grundproblem, bygg om bara det området, bakom det körande systemet.
- Utvärdera efter varje steg; att sluta tidigt är en framgång, inte ett misslyckande.
När ni inte behöver det här: en MVP med få användare och inget tillväxttryck bör behålla sina genvägar; putsning är inget affärsmål. När tillväxten är verklig och koden håller den tillbaka är den här stegvisa bedömningen det första vi gör i en skalning och systemuppgradering, och ett kostnadsfritt samtal räcker för att säga vilken av de tre vägarna era symtom pekar mot. Priserna finns på prissidan.
Vanliga frågor
Vår nya utvecklare säger att koden är usel och måste skrivas om. Har hen rätt?
Möjligen, men be om belägg: vilka symtom, vilka moduler, och hur en refaktoreringsplan skulle se ut. Obekant kod ser alltid värre ut än den är. En utvecklare som inte kan beskriva ett stegvis alternativ uttrycker en preferens, inte en diagnos.
Hur länge ska en refaktoreringsfas pågå innan vi bedömer den?
Ge den några veckor med fokus på de tre största symtomen, med mätningar före och efter. Förbättras de, fortsätt. Är förbättringarna marginella för att problemet är strukturellt, är det ert belägg för en riktad ombyggnad av det området.
Kan vi fortsätta leverera funktioner under en stegvis ombyggnad?
Ja, och det bör ni. Varje steg ersätter ett område medan resten fortsätter utvecklas. Det ni ska undvika är att bygga nya funktioner i området som just då byts ut, eftersom de då måste skrivas två gånger.
Osäker på om systemet behöver ett ingrepp eller en ombyggnad?
Beskriv de tre saker som gör mest ont, så säger vi på femton minuter om de låter som lokala problem eller grundproblem, och vad ett ärligt första steg skulle vara.
Boka ett kostnadsfritt 15-minuterssamtal