Vad är ett agilt arbetssätt?
Agil är en term som används för att beskriva metoder för programvaruutveckling, med fokus på inkrementell leverans, teamsamarbete, kontinuerlig planering och inlärning. Agil är inte en process lika mycket som det är en filosofi eller tankesätt för att planera det arbete som ett team kommer att göra. Processen baseras på iterativ utveckling och hjälper team att förbättra sin planering och anpassa sig till de ständiga förändringar som sker inom programutveckling. Vi lyssnar på Maras diskussion med Andy efter deras senaste lansering.
Mara tyckte att hon hade gjort en del mindre framsteg mot att få teamet intresserade av DevOps, men att det sedan stagnerade. Teammedlemmarna hade varit för upptagna med att åtgärda buggar i den senaste versionen för att tänka på något annat.
Kom ihåg att Irwin, produktchefen, gav teamet lite ganska kritisk kundfeedback om racingspelets webbplats. Det var inte roligt att åtgärda dessa problem. Andy och Mara skulle skriva kod och sedan överlämna den till testaren Amita. Amita hittade alltid nya buggar och skickade tillbaka koden igen. Det uppstod ett fel på build-servern. Tim kunde inte få spelets webbplats att fungera i produktion, även efter att det fungerade i dev och test. Alla arbetade långa timmar och förlorade ett par helger.
Efter att de skickat frigivningen satte sig Mara och Andy ner för kaffe. De var båda trötta. Mara var modfälld, men Andy hade en annan attityd.
Jag vet inte varför du är förvånad. Det är tufft att få ett program leveransfärdigt. Det är alltid en kamp. Har du någonsin gjort på ett annat sätt?
Mara: Det har jag, och jag tror att vi kan göra det lättare här också. Jag tror verkligen att DevOps kan hjälpa oss.
Andy: Jag minns att vi gjorde en värdeströmsmappningsövning, men vad händer nu? Vi måste komma igång med den nya versionen. Jag trodde vi var klara med DevOps.
Mara: Det finns mycket mer vi kan göra. Jag tycker att vi ska ta första steget och börja planera agilt. Vi kan ta hjälp av Azure Boards.
Andy: Vad menar du med Agile?
Mara: Agile är en metod för programvaruutveckling. Begreppet "agilt" myntades 2001 i det agila manifestet. Manifestet innehåller några riktlinjer som är avsedda att förbättra arbetet med programutveckling. I manifestet står det:
Vi värderar:
- Individer och interaktioner över processer och verktyg.
- Arbeta programvara över omfattande dokumentation.
- Kundsamarbete över avtalsförhandling.
- Svarar på ändring över att följa en plan.
Andy: Titta, om du vet något magiskt sätt att göra livet enklare, är jag helt för det. Mina barn hinner alltid somna innan jag kommer hem på kvällarna. Det låter ju trevligt, men det verkar inte finnas några konkreta lösningar.
Mara: Det är inte magi, men vi kan göra det bit för bit. Azure DevOps ger oss de verktyg vi behöver för att implementera agila metoder. Vi kan använda Azure Boards för att planera arbetet. Kan du först förklara byggprocessen och hjälpa mig att identifiera de största problemen?
Efter mycket kaffe identifierar Mara och Andy de största problemen i byggprocessen. Alla problem uppstod under den senaste versionen. När Andy har gått tittar Mara på sina nedklottrade anteckningar och bestämmer sig för att göra lite agil planering på egen hand. Hon använder Basic-processen i Azure Boards för att samla alla problem på en plats.
Hennes nästa steg är att visa tavlan för teamet och engagera dem i planeringen.
Rekommendationer för att införa agil
Teamet gör sig redo att ta sina första steg mot att anta Agile. Här följer några allmänna rekommendationer som alla team kan använda för att införliva Agile i organisationen.
Skapa en organisationsstruktur som stöder agila metoder
För de flesta organisationer kan det vara svårt att införa Agile. Det kräver ett tankeskifte och ett kulturskifte som utmanar många befintliga principer och processer inom organisationen. Traditionellt använder de flesta företag en horisontell teamstruktur. I praktiken innebär det att teamen motsvarar programvaruarkitekturen. Det kan till exempel finnas ett team som ansvarar för ett programs användargränssnitt, ett annat team som ansvarar för data och ett annat team som ansvarar för den tjänstorienterade arkitekturen.
Vertikala team ger dock bättre resultat för agila projekt. Lodräta team sträcker sig över arkitekturen och är anpassade till produktresultat. Det kan till exempel finnas ett team som ansvarar för appens e-postdel och teammedlemmar kommer från alla tre av de tidigare nämnda områdena. En annan fördel med den lodräta teamstrukturen är att skalning sker genom att lägga till team.
Mentorteammedlemmar om agila tekniker och metoder
När de börjar använda agila tekniker och metoder bestämmer sig vissa team för att anställa externa tränare. Coacher kan till och med arbeta med flera team för att hjälpa till att ta bort organisatoriska vägspärrar och silor, så de har ofta både undervisnings- och chefsfärdigheter. De kan också träna teammedlemmar i agila tekniker, till exempel hur man kör stand-up- och granskningsmöten. Med tiden är det dock viktigt för teammedlemmar att utveckla en förmåga att vara mentorer för varandra. Det innebär att det mesta arbetet bör utföras tillsammans och inte av individer som tillbringar större delen av sin tid med att arbeta ensamma.
Aktivera samarbete mellan team och team
Om samarbete är nyckeln till att bli framgångsrik på Agile, vilka är några av de sätt som du kan uppmuntra det på? Här är några idéer.
Kulturell förändring
Tänk på några saker när du ändrar en kultur. Det är viktigt att teammedlemmar har en lugn och bekväm arbetsplats. De behöver utrymmen där de kan fokusera, utan många distraktioner och brus.
Möten är ett faktum, och de kan känna att de tar över en persons arbetsliv. För att ge gruppmedlemmarna mer kontroll behöver möten en agenda och strikta tidsramar.
Asynkron kommunikation, som e-post och meddelanden, kan kännas överväldigande och människor känner ofta att de måste besvaras direkt. Gör det klart att inte alla dessa meddelanden behöver ett omedelbart svar.
Distansteammedlemmar är nu normen i många företag. Alla måste känna sig bekväma med alla sina teammedlemmar och behandla dem lika, oavsett om de är på kontoret eller arbetar utanför platsen. Samarbete via kommunikation bör bli en del av organisationens DNA.
Vi kan inte överbetona vikten av god kommunikation, även när det finns meningsskiljaktigheter. Konfliktlösning är en bra färdighet för alla agila team att ha.
Tvärfunktionella team
Precis som det är viktigt för teammedlemmar att samarbeta är det också viktigt att team samarbetar med varandra. Tvärfunktionella team lägger till nya färdigheter och perspektiv som kan bredda allas förmåga att lösa utmaningar kreativt. Korsfunktionella team gör också hela organisationen mer sammanhållen. De minskar revirkrigen och ökar känslan av att alla arbetar mot ett gemensamt mål.
Verktyg för samarbete
Bra verktyg kan hjälpa dina agila teammedlemmar att samarbeta mer effektivt, både i teamet och med andra team. Här följer några förslag som hjälper dig att komma igång:
- Microsoft Teams: Teams är ett program som tillhandahåller en arbetsplats för chatt, möten, anteckningar och fillagring.
- Skype: Skype är enkelt att använda och ett bra verktyg för generell användning. Många har redan installerat det.
- Slack: Slack innehåller många separata kommunikationskanaler, allt från ett enda gränssnitt. Du kan organisera dessa kanaler på många sätt, till exempel efter projekt, team eller ämne. Konversationer behålls och är sökbara. Det är enkelt att lägga till både interna och externa teammedlemmar. Slack integreras direkt med många verktyg från tredje part, till exempel GitHub för källkod.
Andra vanliga verktyg är Google Hangouts, Asana, Trello, GoToMeeting och monday.com. Försök att bekanta dig med alternativen för att se vilka av dem som passar behoven hos ditt team och ditt företag.