Povestea unei dezvoltari de site web care a imbinat principii Agile, Scrum si eXtreme Programming

O metodologie si gandire Agila in dezvoltare web

16 septembrie 2015

1 – Preambul
Pornim de la un precendent proiect – nu neaparat foarte reusit, si de la o colaborare destul de “spinoasa” cu clientul nostru francez.
Clientul ne solicita sa realizam un proiect destul de complex, intr-un termen foarte scurt, si – cel mai important – cu niste specificatii care par clare doar la suprafata.

 

2 – Ce facem?
Avand in vedere “history”-ul cu clientul, suntem intr-o pozitie delicata – acceptam, si riscam depasiri, mustrari, puneri la colt, sau mai bine stam “safe” si spunem nu.
Hmm, sau, varianta 3 … hai sa EXPERIMENTAM !!!
Risc, suspans, transpiratie, emotii – de ce nu ? – go for it!

Asta ne-a fost punctul de plecare.

 

3 – Poveste scurta
In ultimele luni, am tot cochetat cu “idei” AGILE, SCRUM, XP. De ce ? Pentru ca e nevoie, vrem nu vrem, e nevoie. Clientii si tot in jurul nostru se schimba foarte rapid, iar vechile abordari nu pot face fata schimbarii. Au nevoie de ajutor. Raman “fundatia”, dar au nevoie de ajutor.

Ce sunt toate cuvintele astea cu majuscule? Pe scurt (dupa cum ne spune wikipedia):

AGILE – “Agile software development is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement and encourages rapid and flexible response to change.”

SCRUM – “Scrum is an iterative and incremental agile software development framework for managing product development.”

Extreme programming (XP) – “is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development,[1][2][3] it advocates frequent ‘releases’ in short development cycles, which is intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.”

Asa ca, hai sa experimentam.
De ce spun sa experimentam? Pentru ca avem experienta. Haha. Avem si nu avem, dar – ne facem.

Nu exista nici o “reteta” pentru succesul proiectelor. Exista metode, exista reguli, insa “gustul” final e dat de “ingrediente”.

 

4 – Ingrediente
Deci, de ce avem nevoie ?

Hmm, pai, evident, primul lucrul e: UN CLIENT.
Ce fel de client? Pai un client “de treaba”, care stie ce vrea, stie ca in urma colaborarii cu noi poate castiga din “know how”-ul nostru. Un client care e dispus sa riste putin, si sa se avante in necunoscut. Este acesta clientul asta? Haha – normal ca nu. Insa, are ceva “special” – de multe ori au fost situatii mai delicate in colaborarea noastra, insa ne-am inteles intr-un final.

Mai avem nevoie de … TIMP … pentru ca, e nevoie, nu e asa simplu cum pare, trebuie sa te implici ca si project manager.

Si, ultima, dar nu in ultimul rand – > ECHIPA – 1-2 sau mai multi, e nevoie de echipa (in Cluj). E nevoie de comunicare, colaborare si “viziune”. E nevoie sa ii faci pe toti sa priceapa (ceea ce nu am facut initial), ce se face acum, unde vrem sa ajungem si cum. E foarte foarte important ca toti sa fie dedicati scopului. Un carcotas, un absent de la micile meetinguri, poate strica tot, si aduce “haosul” inapoi.

Bun, astea fiind zise pornim la drum.

 

5 – Drumul

5.1 – Analiza cerinte
Multa, detaliata, reluata de 2-3 ori. Practic, 1 saptamana nu s-a lucrat nimic palpabil, dar s-a “maruntit” proiectul in mici module.

5.2 – Start vot !, pardon joc, pardon – start munca
Echipa a primit taskuri mici, usor de masurat in timp, si usor de controlat. Se lucreaza in perechi – integrator / programator. Se fac mici meetinguri – odata la 2-3 zile, plus asistenta non stop.
HAOS – probabil asa parea totul pentru cei implicati.
Cel putin la inceput. Pentru ca am facut o greseala – poate – sau poate nu. Nu am explicat ce facem si cum facem.
Era un experiment, nu stiam ce si cum. Idea era sa ramanem “agili” – fara legatura cu AGILE-ul.

5.3 – Primul “sprint” – rezultatul
O gramada de Atomi! (de fapt, molecule – a se citi despre ATOMIC DESIGN – cu derivatie inspre ceva inca neexplorat – ATOMIC DEVELOPPEMENT – in fapt – developpement de componente, ca sa fim mai exact).
Insa, atomii/moleculele astia/astea “functioneaza”, daca luam bucatele din cerinte, vedem ca aproapte totul e acoperit.

5.4 – Iluminarea
Dupa “primul sprint”, probabil lumea a inceput sa prinda putina incredere, si sa vada ce s-a realizat de fapt. Avem componentele necesare pentru a construi situl. Lipsea “magia” – viata, legatura dintre toate. 🙂

5.5 – Magia
A fost adusa de echipa. Echipa care – fara prea mult lapte baut – “s-a prins”. Au folosit foarte rapid componentele, si au construit sistemul. S-au creat legaturile dintre componente in ritm super rapid, si ne-am trezit cu proiectul “gata” in cateva zile.

5.6 – Pila
Dupa ce proiectul a fost “gata”, am luat pila la el. Impreuna. Am gasit elemente in plus, elemente in minus (chiar si atomi in minus), insa, deja eram la faza de “umplut gauri”. Mai mari, mai mici – fara suparari, fara probleme – asta e “agile”. Toti deja erau motivati si orientati catre ceea ce doream – finalizare site rapida, si nu in ultimul rand – de calitate.

5.7 – Smirghel fin
Cu gaurile umplute, am trecut la “finisaje” – care – inca sunt in curs de fapt, dar care se vor realiza fara probleme (speram 🙂 ).
Acum asteptam doar feedbackul client si continutul final, pentru a pune “punct” proiectului.

6 – EXPLICATIE SI UN FEL DE CONCLUZIE

Ceea ce pare doar “o zi obisnuita” de munca, de fapt, ascunde multe multe “dulciuri”. Atata ca nu ne batem in piept cu ele foarte tare – ca se lipesc :).

In cadrul acestui proiect, am folosit multe multe elemente din diverse metode si stiluri de dezvoltare software. Insa, le-am folosit “in reteta proprie” – pentru ca nu exista reteta universala – cum nu sunt clienti, manageri, si dezvoltatori universali.
Trebuie intotdeauna gasita solutia care se potriveste cel mai bine – si ce am experimentat noi, s-a potrivit foarte bine.
Am respectat un termen destul de strans, si am reusit sa realizam “cincinalul, in 4 ani si jumatate”. Adica sa terminam proiectul in mai putin timp decat am estimat. 340 ore, fata de cele 360 estimate.

 

Ne-am folosit de:
AGILE – stare de spirit :), planning, rapiditate si flexibilitate
SCRUM – iteratii, colaborare stransa, “open-mindness”
EXTREME PROGRAMMING – echipe, flexibilitate, releaseuri dese de elemente
ATOMIC DEVELOPPEMENT
si, cel mai important – > DIVIDE ET IMPERA

Practic, tot ce se numeste “sofisticat” din ce e descris mai sus, poate fi redus la “DIVIDE ET IMPERA”