codexier.

SaaS och MVP

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.

SituationDärför misslyckas refaktoreringOmbyggnadens omfattning
Plattform vid slutet av sin livslängdInga säkerhetsuppdateringar, ingen att rekryteraSamma funktioner, ny teknik, migrera data
Datamodellen motsäger verksamhetenVarje funktion slåss mot schematNy modell, migreringsskript, gamla systemet skrivskyddat under bytet
No code- eller prototypverktyg i taketVerktyget kan inte uttrycka det ni behöverEgen byggnad av kärnan, behåll verktyget i kanterna
Kod ingen kan läsaVarje ändring är gissningBygg om modul för modul, äldst och värst först

Långsam, ful eller gammal står inte på listan. Det är refaktoreringsproblem.

Den dolda kostnaden för omskrivningar

Det offererade priset för en ombyggnad är den minsta av dess kostnader. Medan den nya versionen skrivs behöver den gamla fortfarande buggfixar och de funktioner kunderna lovats, så ni betalar för två system. Det gamla systemet innehåller år av små beslut, specialfall och rättningar som ingen dokumenterade; ombyggnaden återupptäcker dem ett supportärende i taget. Funktionsparitet tar längre tid än beräknat eftersom beräkningen gjordes utifrån funktionerna folk minns, inte de som finns. Och dagen för bytet är en enda felpunkt för hela verksamheten.

Inget av detta betyder att man aldrig ska bygga om. Det betyder att argumenten måste vägas mot de kostnaderna, skriftligt, och att svaret måste överleva frågan om vad som händer om ombyggnaden tar dubbelt så lång tid.

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.

  1. Skriv ner symtomen med belägg och spåra vart och ett till sitt ursprung.
  2. Refaktorera de tre största ursprungen och mät effekten innan något större beslutas.
  3. Kvarstår ett grundproblem, bygg om bara det området, bakom det körande systemet.
  4. 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