Kas yra esminiai Scrum elementai?

Paskutiniame InfoQ naujienlaikraštyje akys užstrigo už interviu su vienu iš Agile Manifesto autorių ir Scrum bendraautoriumi Jeff Sutherland: Are Agile Teams Truly Agile? Šioje įdomioje diskusijoje (siūlau tikrai peržiūrėti ją visą ir gal net parodyti savo vadovams) man užstrigo jo pasakyti 2 punktai kas yra pagrindiniai elementai Scrum daryti teisingai (t.y. gauti daugiausia naudos iš šio metodo).


Kiekvienas sprintas turi baigtis paleidžiamu pabaigtu produkto prieaugiu (inkrementu)


Paskutiniu metu kai reikdavo Agile/Scrum pristatyti labai trumpai sakydavau: tai iteratyvus/priaugantis kūrimo procesas. Jei kiekvieno sprinto pabaigoje turėsite pabaigtą produkto prieaugį – jūs Agile. Jei ne – turbūt ne. Pristatęs tai VU Matematikos ir informatikos fakultete kviestinėje paskaitoje, gavau klausimą iš dėstytojo: “Ar tikrai Agile TIK iteratyvus procesas”. Ir mano atsakymas buvo – ne, Agile yra kur kas daugiau: žmonės, komandos, gerosios praktikos ir t.t., bet viso to rezultatas yra iteracija pabaigta veikiančiu produktu. Tai pasiekti labai sunku, tam reikia pakeisti žmonių įpročius, pradėti naudoti gerases technines praktikas (automatizuoti testai, nuolatinis integravimas ir pan.), kartais net pakeisti organizacinę struktūrą. Bet tai pasiekus, pasimato labai geri rezultatai. Kitu atveju, mes galime turėti tarp-funkcines komandas, rašyti modulių (unit) testus ir kita, bet jei mes negalime sukurti pabaigto produkto prieaugio per sprintą ar mes galime save vadinti Agile?


Produkto užduočių sąrašas turi būti paruoštas kiekvienam sprintui


Po mano vestų poros dienų vidinių Agile/Scrum mokymų keliose kompanijoje reakcija buvo labai panaši: „Galvojom čia tie programuotojai lėtai dirba, pridaro klaidų, nesupranta klientų. Pasikvietėm Vaidą ir galvojom, kad jis papasakos kaip Agile jiems liepia dirbti greičiau. O po mokymų atrodo,  kad čia mes, projektų vadovai, pagaliau turime prisėsti ir susitarti. Turime sudaryti projektų portfelį (susirašyti visus aktyvius ir planuojamus projektus), suprioretizuoti juos kartu, sukurti produktų užduočių sąrašus ir pasirūpinti kad programuotojų komandos dirbtų prie vieno ir tik vieno projekto vienu metu. Tai yra didžiausias neefektyvumas (waste) mūsų kompanijoje!” Ir tai tiesa. Daugelis kompanijų turi labai neblogus programuotojus. Problema ta, kad verčiam juos „multitaskinti”. Tai reiškia jie dirba lėčiau, padaro daugiau klaidų, švaisto laiką vėliau jas taisydami, o klientai vis nepatenkinti!


Taigi, aš pilnai pritariu Jeff, kad antras svarbiausia Scrum elementas yra aiškus ir paruoštas produkto užduočių sąrašas. Tik aiškiai žinodama ko iš jos tikimasi, komanda galės pabaigti produkto prieaugį vieno sprinto metu. Ar daug Lietuvoje komandų išdrįsta savo Produkto šeimininkui pasakyti: „mes matom, kad ši užduotis nėra aiški, tu negali mums paaiškinti ko konkrečiai iš mūsų tikiesi, todėl mes negalime imti jos į šį sprintą”? :) Labai laučiau tokių pavyzdžių komentaruose!