En stor skillnad mellan Agil utveckling och vattenfallsmodellen är hur snabb feedback man får på sitt arbete. Om man hårdrar det så är det i stora projekt, som varar flera år, många som aldrig får feedback på sitt arbete. De hinner byta tjänst innan det arbete de utfört kommer till användning eller så har de redan börjat på ett annat projekt medan någon annan person tar hand om underhållet.
Hur påverkar denna skillnad i feedback inlärningen och utvecklingen av enskilda personer och organisationen i sin helhet? Som jag ser det så är detta relaterat till hur hjärnan fungerar och hur vi lär oss. Ett effektivt sätt att lära sig är att snabbt få feedback på det arbetsmoment man utför. I en agil miljö får jag genom kontinuerliga tester, demonstrationer för användare osv hela tiden information som kan användas för att förbättra mitt sätt att utföra mina arbetsuppgifter.
Orsaken till ett fel i programvaran är betydligt lättare att inse om ändringen är liten, typ en rad, och du får konsekvenserna av ändringen direkt medan du har klart för dig hur du tänkte. Om du inte får denna direkta feedback eller ingen feedback alls kommer du att göra samma fel om och om igen. Konsekvensanalysen av en ändring ger omedelbar feedback i en agil miljö och det är lätt att testa olika scenarier och se vilket som är bäst. Om feedbackloppen är lång kommer jag inte att kunna lära mig eftersom det är svårt att koppla konsekvensen till en specifik händelse även om om jag ser i koden vad som ändrats kommer jag antagligen inte ihåg hur jag resonerade vid det tillfället. Jag har själv sett kod som jag inte ens kommer ihåg att jag skrivit 🙂
Jämför gärna med hur din hjärna lärde sig cykla då du hela tiden får omedelbar feedback, genom ditt balanssinne, på de korrigeringar av framhjulet som du gör. Tänk dig att det i stället skulle ta någon sekund innan din rörelse slår igenom. Det blir extremt svårt att hålla balansen om man i förväg skall gissa hur balansen kommer att bli om några sekunder. Det är också därför man inte skall hålla i cykeln när barn skall lära sig cykla eftersom det hindrar feedbacken att bli korrekt. Bättre att hålla i kläderna eller liknande.
Jämför också vattenfallsprocessen med de tillgängliga arbetsredskap som fanns då processen växte fram. På 70-talet och början av 80-talet var det ofta hålkort som användes för att programmera. Feedbackloppen för en kompilering under dessa år var ofta många timmar då bunten med hålkort lämnades in till en datorcentral där en operatör körde programmet och du fick en utskrift av resultatet.
Om man har detta i åtanke så förstår man bättre den granskningsprocessen som växte fram under dessa år. Det var väl investerad tid att be några personer att granska koden innan den lämnades in till datacentralen. Detta gav både snabbare feedback och kanske också minskade antalet iterationer som på den tiden var betydligt längre än idag när verktygen ger kontinuerlig feedback efter varje knapptryckning på tangentbordet.