Du är bekant med Scrum, eller hur? Jag skulle gissa ja med tanke på att The Scrum Alliance har över 400 000 medlemmar, och av dem använder de flesta framgångsrikt i sina organisationer.
Men det är inte det enda sättet att bygga programvara på ett smidigt sätt - på allvar! Har du hört talas om Kanban?
För lite bakgrundsinformation tillämpades den ursprungligen på lean tillverkning som ett sätt att visualisera inmatningen och utdata från arbetet när det flödade genom en fabrik. Denna visualisering presenterades på ett bräde som kallas en - vänta på det - Kanban. På senare tid och mer relevant för dig har det antagits som en metod för att hantera programvaruutveckling.
Först beskrivs av neurolog David J. Anderson, det är ett sätt att organisera mjukvaruutveckling och planering som gör att du kan avslöja processproblem och konsekvent leverera värdefulla förbättringar av din produkt - som jag vet, låter perfekt. Enkelt uttryckt, när som helst, kan du se var arbete (representeras av kort) är i utveckling.
Hur det fungerar
Det grundläggande Kanban-kortet använder sex kolumner som visar var varje arbete befinner sig i produktutvecklingscykeln. Ett grovt urval av hur det ser ut är nedan.
Se detta Kanban-brädexempel på Trello.
Kolumn 1: Återställning
Kolumnen Backlog ska innehålla en prioriterad lista med idéer, buggar eller affärsbehov. Kortet behöver inte ha massor av detaljer ännu, men det bör ha tillräckligt med information för att dina teammedlemmar förstår varför det är viktigt.
Kolumn 2: Planering
I den här kolumnen kommer en produktchef att fylla i en specifikation för funktionen genom att träffa företagens intressenter, ingenjörer och designers. När den är klar flyttar han eller hon den till kolumnen "Klar för teknik".
Kolumn 3: Redo för teknik
I detta skede bör alla kort ha detaljerade specifikationer. Även om du fortfarande har frågor om tekniska detaljer, bör affärskraven vara tydliga.
Kolumn 4: Pågår
Du kan när som helst flytta ett kort till "Pågår". Detta självdrivna "pull" -system bygger en kultur för personlig ansvarighet och nyfikenhet.
Kolumn 5: Testning
När du har slutfört arbetet med kortet, flytta det till "Testa" där en annan ingenjör (eller någon i QA-teamet) kommer att hämta det.
Kolumn 6: Distribuerad
En annan avgörande funktion är att arbetet kontinuerligt ska levereras till en iscensättning eller produktionsmiljö. I den här kolumnen kan alla i teamet se vilket arbete som har släppts nyligen.
Fördelarna och avvägningarna
När du bestämmer dig mellan Kanban och en vanligare metod som Scrum eller Waterfall, tänk på dessa fördelar och utmaningar:
Fördel: förbättrar samarbetet
I vissa utvecklingslag som jag har arbetat med var ingenjörer specialister. Varje team skulle ha ett par frontendingenjörer och backendingenjörer. Detta innebar att arbetet ofta blockerades eftersom en ingenjör var upptagen med något annat.
Kanban å andra sidan begränsar pågående arbete och avskräcker blockeringar. Varje teammedlem kan bara arbeta med ett objekt åt gången, och alla som inte är upptagna kan dra arbete uppifrån kolumnen "Klar för teknik". Detta uppmuntrar ingenjörsgeneralister och samarbete mellan teammedlemmar.
Öka fördelen: Låt inte saker gå innan de är redo
Kanban fungerar bara när du väntar på att flytta kort till nästa kolumn tills de är helt färdiga. (Bonus: Detta minimerar defekterna kraftigt.)
Utmaning: avskräcker tid att reflektera
Som standard finns det inga tidsboxade sprint med tydliga mål, datummål och släppcykler. Tänk istället på varje kort som ett oberoende verk som kan slutföras och släppas när som helst.
Med denna kontinuerliga ström av arbete finns det inget "vänta tills nästa sprint" -alternativ. Du måste kontinuerligt kontrollera brädet, dra nästa objekt och flytta färdiga artiklar nedströms. Om du inte bygger in tid för retrospektiv och standup kan det vara svårt för teammedlemmarna att hålla jämna steg med hur de gör det.
Ta dig runt det: Låna vad som fungerar från Scrum
Jag har använt dagliga standups och retrospektiv med Kanban och upptäckt att de ger mervärde. Om det finns regelbundna möten eller mönster som fungerar för ditt team, ändra inte dem för att dogmatiskt följa Kanban. Budget tid för att prata om prioriteringarna och hur de har förändrats så att alla vet vad som händer i produktutvecklingscykeln.
Fördel: Ökar öppenhet
Varje utvecklare måste ta initiativ till att flytta ett kort till kolumnen "Pågår". Vilket betyder att lagledaren när som helst kan titta på vem som är upptagen, vem som inte är upptagen och hur länge något arbete har pågått.
När produktionen saktar ner eller slutar kan Kanban se exakt varför. Oavsett om det beror på att företagsteamet inte har prioriterat artiklar i orderstocken, produktgruppen inte har slutfört specifikationen, dev-teamet rör sig långsammare än väntat eller så har QA-teamet inte kunnat testa något; flaskhalsarna är uppenbara.
Öka fördelen: Låt framsteg vara offentliga
En av fördelarna är att Kanban är mycket visuell. Även icke-tekniska teammedlemmar kan titta på ett Kanban-styrelse och berätta var arbetsstycken är i processen. Använd detta till din fördel och låt teamets prestationer lysa genom att placera ditt styrelse på en offentlig plats.
Utmaning: Tillåter inte långsiktig planering
Att oroa dig för tidsfrister och uppskattningar är inte den mest produktiva användningen av din tid, så du kanske uppskattar att Kanban handlar mer om den dagliga produktionen. Som sagt, det enbart ger inte ett system för att bygga en långsiktig plan. Detta kan få dig att arbeta på projekt sporadiskt snarare än att fokusera på en sak under lång tid. Det är svårt att spendera en dag på projekt A och sedan en dag på projekt B och sedan byta tillbaka till projekt A.
Ta dig runt det: Använd det när dina prioriteringar troligtvis kommer att förändras
Varje kolumn i ditt styrelse är oberoende av de andra, så teammedlemmar kan flytta saker när som helst. Detta kan irritera utvecklare i en Scrum-inställning (där uppskattningar för sprinten görs på förhand), men Kanban trivs i denna typ av snabbt föränderliga miljöer.
Alla vill vara mer produktiva, men det kan vara svårt att prova något nytt om du inte ens är säker på var du ska börja. Jag har tyckt att Kanban är till hjälp och hoppas att du också kan hitta det användbart för ditt personliga arbetsflöde (eller till och med för hela ditt team!).
Tweet mig om du bestämmer dig för att ta det!