Att skriva kod är som att köra bil i Göteborg
Ibland tänker jag på trafiksituationen i centrala Göteborg. Från början fanns det nog en ganska bra plan, men i takt med att staden utvecklas bygger man lite nya vägar, stänger av gamla, sätter upp lite skyltar om att “här får du inte köra längre”. Panikartat försöker man få allt att hänga ihop i en röra av tillfälliga lösningar och omvägar. Ibland kommer man ingenstans, ibland kör man i cirklar och till slut hamnar man på Hisingen.
Att vara Frontendutvecklare kan ibland kännas som att köra bil i Göteborgs stad, för i takt med att projektet växer så fylls det med tillfälliga genvägar, avstängningar och vändzoner. Man önskar att det var lite mer som Köpenhamn, där det verkar finnas en plan hur saker och ting fungerar och interagerar med varandra. Ett hållbart förhållningssätt till systemutveckling som prioriterar långsiktighet, minskar frustration och maximerar innovationskraft.
I takt med att en mjukvaruprodukt byggs ökar komplexiteten stegvis. Man måste tidigt ställa sig frågan hur saker ska organiseras för att maximera återanvändning, minska dubbelarbete och förbättra läsbarheten. Det ska göras på ett sätt så att det är enkelt för nya utvecklare att kunna ta sig in i projektet och kunna bidra så snabbt som möjligt. Det ska helt enkelt vara hållbart över tid. Det ska underlätta för dig, ditt framtida jag och dina medarbetare. Framför allt kommer det också över tid att spara tid, kraft och pengar.
Jag har identifierat ett par punkter som är viktiga för att nå denna målsättning.
Bygg ett komponentbibliotek i ett tidigt skede
Bestäm tidigt hur komponenter ska struktureras. Ett välbyggt bibliotek sparar mycket tid när projektet växer, och minskar risken att olika team uppfinner hjulet gång på gång. Det ger en enhetlig produkt och lägre kostnader över tid.
Använd Storybook eller liknande verktyg för att versionshantera och visualisera produktens komponenter
Med ett verktyg som Storybook blir komponenterna inte bara kod, utan en levande dokumentation. Det gör det enkelt att se vad som finns, hur det fungerar och hur det kan återanvändas. Resultatet blir snabbare beslut, färre missförstånd och en produkt där design och teknik går hand i hand.
Extrahera gemensam funktionalitet till moduler kontinuerligt
När funktionalitet återkommer på flera ställen, bygg tydliga och vältestade moduler som kan delas. Det gör produkten mer stabil och minskar risken för buggar. Samtidigt blir det enklare och går snabbare för nya utvecklare att bidra.
Överväg om Universal UI libraries kan göra livet lättare
Nya verktyg gör det möjligt att bygga komponenter som fungerar både på webb och i app. Det betyder kortare ledtider, en enhetlig användarupplevelse och mindre dubbelarbete. Det blir mer värde för varje utvecklingstimme. Exempel på dessa bibliotek är Tamagui, React Native for Web och Dripsy.
Få dina stakeholders att prioritera det!!!
Mycket av detta kan te sig som ganska självklart för en rutinerad utvecklare och någonting man gärna lägger tid på, men att lägga tid och kraft på att modellera, refaktorera och strukturera om kodbasen innebär ingen kortsiktig vinst. Det prioriteras ofta ner till en högljudd klagokör från utvecklingsavdelningen. Frasen “teknisk skuld” kommer att eka i kontorslandskapet. För ofta är det så, vad som är billigt nu kommer att vara dyrt sen.
En avsaknad av hållbarhet inom kodbasen kommer också leda till en lägre innovationskraft eftersom det blir svårare att testa nya idéer, då det krävs för stora förberedelser för att följa sina impulser. Det är inte bara att göra, det måste först funderas på hur det ska kunna åstadkommas. Detta kan sedermera leda till att utvecklare väljer andra möjligheter, och det är generellt obra. Man vill jobba med de skarpaste och mest innovativa hjärnorna. Låt dem frodas och vara kreativa. Och för guds skull, låt dem jobba med sin tekniska skuld.
Du som läser detta kan göra ett val. Antingen prioriterar du hållbar systemutveckling där utvecklare får tid att planera, strukturera och modularisera sin kodbas. Eller så får du betala trängselskatt på obestämd tid.