Ce este Agile?
Exista multe defintii pentru Agile, de la superficiale la pedante. Nu toate definitiile sunt folositoare, dupa cum nici fiecare definitie nu este utila pentru munca dezvoltatorului software. Lucrurile devin mai confuze o data ce iti dai seama ca exista mai multe metodologii Agile valabile. Cel mai important de retinut este urmatorul lucru: Un software dezvoltat cu Agile este un framework conceptual care cauta sa micsoreze riscurile de dezvoltare si timpul de executie.
O aplicatie obisnuita poate dura intre 1 si 4 saptamani, timp in care o echipa de dezvoltatori indeplineste mai multe sarcini pentru a finaliza proiectul (planificare, design, cod, testare si documentatie). Un alt aspect important al Agile este abilitatea echipei de a se organiza in timp ce comunica cu partile interesate sau cu membrii echipei.
Metodologii Agile notabile
Deoarece exista multe metodologii Agile, si pentru ca fiecare dintre ele are parti diferite care cer mult timp pentru a fi invatate, noi aici abordam doua dintre ele: Scrum si XP. O data ce ai parcurs aceste metodologii, poti aplica ideile din fiecare.
Scrum
Scrum este o metodologie de management de proiect Agile care ofera echipelor mici multa flexibilitate. Iata atributele specifice unei intreprinderi Scrum:
- Ai nevoie de un backlog de produse – o lista de prioritati care are nevoie de completare.
- Echipa organizata foloseste backlog de produse pentru a crea rezerve de sprint.
- Fiecare sprint este o scurta perioada (1 la 4 saptamani) in timpul careia are loc o activitate intensa.
- Fiecare sprint incepe cu o sedinta de planificare, in care articolele de backlog pentru sprint sunt definite.
- Fiecare sprint se termina cu o retrospectiva.
Fiecare echipa are un ScrumMaster ce are rolul de antrenor, facilitator si tampon fata de lumea exterioara. ScrumMaster-ul nu este liderul echipei. Multi oameni din exterior il vad pe acesta ca pe un manager de proiect, dar nu este asa.
Scrum recunoaste clientii care au obiceiul sa se razgandeasca in privinta a ceea ce vor. Uneori, schimbarile de directie sunt subiective si capricioase si altadata intervin datorita schimbarilor pietei. Indiferent de motiv, schimbarile au loc si metodologiile de prezicere normale au zero sanse de a prezice aceste schimbarile. Scrum accepta ca aceste schimbari sunt inevitabile, de neprevazut, si nedefinite si se concentreaza asupra maririi abilitatii echipei de a se adapta schimbarii si de a oferi un produs bun.
Echipa lucreaza indeaproape cu partile interesate ( cum ar fi patronii, manageri de marketing, CEO) pentru a dezvolta o resursa de cereri ce trebuie adresate.
Un backlog de produs poate avea cateva articole prioritizate in el, cum ar fi:
- Clientul vrea sa poata verifica in siguranta vizualizari de pagina si alte statistici despre site-ul lui web.
- Clientul vrea hyperlink-uri in interiorul raportului.
- Clientul vrea acces in timp real la date, fara intarziere.
- Clientul vrea grafice informative cu date, nu doar date in forma de tabele.
Echipa poate sa se uite la acest backlog de produs si sa decida conversia primelor doua articole intro serie de sarcini:
- Crearea de view-uri pentru afisarea raportului.
- Crearea de modele pentru conectarea la sursa datelor.
- Crearea unui controller pentru a identifica si separa destinatii diferite.
- Implementarea unui model de securitate.
Adevarata lista de sarcini trebuie sa fie mai mare de atat. Pentru ca echipa se organizeaza singura, expertul HTML/CSS trebuie sa abordeze perspectivele, expertul bazelor de date trebuie sa construiasca modele, si expertul in securitate trebuie sa implementeze un model de securitate. Daca echipa nu are un expert in securitate, poate cineva isi aminteste un modul de securitate scris la un alt proiect – acest lucru poate fi util in acest context.
Sprint-ul este stabilit la 2 saptamani, iar echipa preia sarcinile, intalnindu-se intro sedinta de cca 10 minute. La fiecare sedinta, ScrumMaster-ul pune 3 intrebari de baza fiecarui participant:
- Ce ai facut de la ultima sedinta pana acum?
- Ce ai de gand sa faci pana la urmatoarea sedinta?
- Ce probleme iti stau in cale acum?
Prima intrebare se refera la realizari, a doua la sarcini si a treia la riscuri. Sedinta permite echipei sa inteleaga cum decurge proiectul, cu un mare grad de transparenta. Foarte repede, toata lumea intelege ce s-a facut, ce mai este de facut si care sunt limitele.
Oamenii din exterior (altii decat dezvoltatorii, ScrumMaster-ul si proprietarul produsului) pot sa participe la sedinta, desigur, dar nu pot interveni. La ce se refera „intervin”? In multe proiecte de dezvoltare de software, vezi multi manageri sau oameni din exterior care cer diverse lucruri. Multe cereri sunt doar in mintile partilor interesate. Adesea, aceste cereri incurca programul si complica situatia.
Ce concepte veti prelua de la Scrum? Ideea backlog-ului este cheia, asa cum este natura sprint-urilor. Veti descoperi ca, in multe proiecte mici, un sprint poate dura 1 sau 2 zile. Veti mai descoperi ca nu este nevoie sa tineti sedinta zilnic mai ales daca sunteti singurul care lucreaza la proiect.
XP
Rolul principal al XP-ului este de a organiza practici zilnice care impaca umanul si productivitatea. Mai importanta este comunicarea fata in fata si feedback-ul decat adunarea de cereri formale.
Mai mult, sustinatorii XP pun in valoare activitatea simpla si curata fata de problemele viitoare care implica o mai mare complexitate. De exemplu, de ce sa iti faci griji pentru a ajunge la 50.000 de clienti cand tu ai doar 5 azi? Nu sunt suficienti 500 de clienti (sau chiar 50) deocamdata?
Un alt lucru bun despre XP este respectul colegial dintre programatori.
Ce puteti prelua de la XP? Simplitatea si comunicarea/feedback-ul.Este important sa dobanditi aptitudini de ascultare pentru orice abordare Agile. Cand lucrezi direct cu un client vei avea nevoie sa discuti adesea. Asigura-te ca acorzi suficient timp contactului fata in fata, intrucat acest lucru poate crea o legatura puternica intre tine si client.