Blog

Att koda är som att baka

NOV 1, 2018

Tre faktorer som påverkar din förmåga att vara agil

Emily Bache

Låt oss prata om tårtor och bakning. Det liknar mjukvaruutveckling. På riktigt! Hur snabbt du kan baka en fantastisk tårta beror på tre huvudfaktorer. Det visar sig att det är samma tre faktorer för mjukvara.

I grunden handlar agilitet om din förmåga att reagera på förändringar. Jag kan få en konkurrensfördel om jag snabbt kan uppdatera min mjukvara när jag ser en möjlighet på marknaden. Som mjukvaruutvecklare samarbetar jag med andra yrkespersoner för att avgöra vilka nya funktioner vi ska bygga vid varje given tidpunkt. Den viktiga frågan är: när vi har kommit överens om en specifik förändring och insett att kostnaden för att vänta är betydande, hur snabbt kan mitt team och jag genomföra förändringen?

Hur snabbt kan du göra en förändring i din mjukvara?

Låt mig besvara frågan genom att jämföra med bakning. Hur lång tid tar det att baka en tårta? Precis som med mjukvara tror jag att det finns tre huvudfaktorer.

Den första faktorn är hur komplex tårtan är. Hur många lager har den? Hur många sorters fyllning? Hur avancerade ska dekorationerna vara? På samma sätt varierar förändringar i mjukvara i storlek och komplexitet, vilket påverkar hur lång tid de tar.

Den andra faktorn är bagarens eller bagarnas skicklighet. Hur övertygande blir det när du gör avancerade blommor av sockermassa? Kan du vispa grädde utan att den blir till smör? Vet du hur du använder en termometer för att få en äggkräm som är perfekt tjock och krämig? Om dina kunskaper är bristfälliga kan du behöva slänga ditt första försök och göra en ny sats kräm, grädde eller blommor, vilket förstås saktar ner dig. Mjukvaruutveckling fungerar på liknande sätt – skicklighet, erfarenhet och kunskap om specifika verktyg spelar alla in. Om dina kodändringar är dåligt utformade och inte klarar testerna eller kodgranskningen kan det på samma sätt sakta ner dig.

Vid bakning är nästa stora faktor för hur lång tid det tar vilken typ av kök du ska arbeta i. Om jag deltar i ett program som Bake-Off har jag en skinande ren arbetsbänk och alla redskap och tillbehör jag kan tänkas behöva. Smutsiga skålar och kastruller försvinner som genom magi när kameran är riktad åt ett annat håll. Fantastiska, aptitretande skapelser uppstår på mycket kort tid.

Om jag däremot är hemma kan jag behöva röja plats på köksbänken innan jag kan börja. Jag kanske slösar värdefulla minuter på att leta efter ett tillbehör till elvispen i en överfull låda. Det kan hända att jag för sent inser att min kakform är för liten för det jag har planerat, eller att jag ställt in ugnen på fel temperatur. Att skapa den där fantastiska tårtan kommer inte att gå så snabbt och smidigt som det skulle kunna göra.

Time to Bake Cake Equation

De värsta förhållandena för bakning som jag har upplevt var nog i mitt delade studentboende på universitetet. Det var inte bara svårt att få tag på redskap som vispar och kakformar, utan en enorm hög med smutsig disk skymde diskhon för det mesta. Efter några veckor upptäckte vi att en av studenterna på tredje året hade bestämt att hans sluttentor var så viktiga att han hade börjat lämna all sin disk ”åt förstaårsstudenterna att ta hand om”, som han uttryckte det. Jag hoppas att du inte har någon sådan i ditt team!

Unhappy Chef

På samma sätt beror tiden det tar att bygga en funktion på vilket skick miljön du arbetar i är i. För en mjukvaruutvecklare omfattar den miljön inte bara byggverktygen och programmeringsspråket, som man kan förvänta sig, utan även den befintliga kodens skick. Är den ren och lätt att förstå? Är den nuvarande designen anpassad för den planerade förändringen? Du kan behöva lägga tid på att städa upp och fixa saker innan du kan börja.

Det handlar också om den build- och deployment-pipeline som teamet har satt upp. Går regressionstesterna snabbt att köra och passerar de vanligtvis? Är deployment automatiserad? Kan jag granska loggar och hitta buggar i produktion? Om den infrastrukturen är väloljad och fungerar smidigt gör det stor skillnad för hur snart min mjukvaruförändring kan rullas ut.

Time to Build Feature Equation

Om du vill vara riktigt agil behöver du fundera på hur du kan förbättra några eller alla faktorer i den här ekvationen. Om du vill bygga komplexa funktioner med högt värde snabbt måste du säkerställa att du har utvecklare med rätt kompetens för att bygga dem. Du behöver också investera i det ”kök” de arbetar i.

När jag arbetar som konsult med olika organisationer ser jag ofta problem med utvecklarnas kompetens och bristfälliga utvecklingsmiljöer. Att investera i båda kan ge stora förbättringar i agilitet. Du vill att time to market för en ny funktion ska styras av funktionens inneboende komplexitet, inte av den oavsiktliga komplexitet som uppstår genom låg kodkvalitet, testning och automatisering av deployment. Kodning är som bakning. Att arbeta i en röra är inte agilt!

  • DevOps
  • Agile

Subscribe to our newsletter