|
Echipa
Structura
organizatorica a unei echipe care
lucreaza la un proiect normal ca anvergura este:
* Coordonatorul de
proiect (project manager )
* Arhitectul proiectului
* 4 programatori din care unul este sef peste
ceilalti
* Technical writer
* 2 persoane QA (Quality Assurance)
* o persoana pentru business requirements
* Project builder
Project
manager (PM)
De cele mai multe ori nu este programator. Mediaza toate sedintele
interne de lucru ale programatorilor care sunt la nivel de detaliu si
stabileste reguli interne pentru programatori. PM este ca un fel de
vataf sau judecator, asculta parerile tehnice ale tuturor si apoi
hotaraste acea solutie care devine apoi litera de lege pentru toata
lumea. El urmareste ca programatorii sa puna comentarii in surse, el
trimite email-uri la programatori si ii urgenteaza, el defalca munca la
programatori si stabileste cine si cit lucreaza cu niste termene foarte
precise la nivel de zi. El are o diagrama mare, de obicei lucreaza cu
aplicatii de tip Project, si pe baza specificatiilor tehnice zice:
"Vrem sa terminam modulul de facturare intr-o luna
de zile". Ce trebuie la asta ? 5 ecrane, o lista, o logica de
prelucrare a datelor, o logica de salvare in baza
de date, de listare, etc. El imparte munca pe submodule la nivel de
ecran. El zice cine face ecranele 1,2,3 si in cite zile, cine lucreaza
la nivelul de printare si in cite zile trebuie
terminata munca.
Face sedintele de lucru sunt saptaminale cu programatorii din curtea
lui si stabileste cu procent de "cit" la suta este terminat din
"cutare" modul si daca ne putem incadra in termene.
Project managerul este cel care evalueaza resursele si el spune ca mai
am nevoie , de exemplu, de un programator si de un QA. El hotaraste si
trebuie sa demonstreze ca mai are nevoie de atitia
programatori, el evalueaza cite resurse are
nevoie. Vede ca intr-o luna nu a terminat decit 6
ecrane din 60 si atunci trage un semnal de alarma. PM este cel care
stabileste calificative pentru angajati.
Seful
programatorilor
El este programatorul cu cea mai mare experienta. Poata sa fie cel mai
batrin, cel mai cumsecade, cel mai cu experienta,
in orice caz nu cel mai impulsiv. Este o chestie onorifica, el trebuie
sa aiba relatii bune cu cu QA-ul, cu toti programatorii. El trebuie sa
fie totusi ceva mai bun decit ceilalti. Dar el lucreaza cot la cot cu
ceilalti fara nici o diferenta. El este acel care are
in grija repartizarea bug-urilor raportate de QA
pentru fiecare programator.
Arhitectul
Este o persoana care are cea mai mare experienta, vine cu o paleta de
solutii, stie in ce lucreaza programatorii si el alege cea mai buna
cale de compromis intre o solutie tehnica de virf
sau una pe care o poate dezvolta cu oamenii pe care
ii are in curte. El alege
arhitectura de lucru, mediile de dezvoltare, editoarele, mediul de
scriere si debugging, Uneori, arhitectul poate sa fie prin cumul de
functii si seful programatorilor daca are si abilitatile de comunicare
necesare.
Technical
writer
Orice produs se livreaza cu o specificatie tehnica care este greu de
scris in avans, acestea vor descrie foarte precis,
ecran cu ecran cum functioneaza aplicatia. Se ajunge la nivelul
x.Se apasa butonul OK si se va
intimpla urmatorul lucru si se
poate apare mesajul de eroare cutare , etc, etc. E bine sa
se faca in timpul dezvoltarii produsului si nu la
final. Asta rezolva si problema training-ului la beneficiar. Cei de la
QA si de la furnizor si de la beneficiar stau in
fata cu documentatia tehnica elaborata de el si verifica daca
intr-adevar se petrece "cutare" lucru.
Project
builder
Este cel care se ingrijeste de procedura de
deployment la client. El face RPM-urile sau kit-ul de instalare,
make-urile, initializarile bazelor de date, scripturi pentru instalare
si verificare. El este persoana care periodic (saptaminal) face
migrarea aplicatiei din reteaua programatorilor in
reteaua de QA. Tot el este si persoana care face deployment-ul
aplicatiei in forma beta la beneficiar
in vederea testarii si controlului calitatii. Poate
fi si unul dintre programatorii care au mai putine sarcini de facut si
care cunoaste mai bine si hardware-ul clientului si care are si
cunostinte mai bune despre sistemul de operare folosit. Arhitectul
proiectului, daca nu are altceva de facut, poate fi prin cumul de
functii si project builder.
Cum
lucreaza echipa de software
La
furnizor exista 2 retele diferite (din
punct de vedere logic):
* reteaua de dezvoltare a programatorilor care lucreaza cu CVS si tot
dichisul
* reteaua de QA la care, saptaminal sau mai des, se creeaza tag-uri cu
versiune stabile (milestones) din CVS-ul de lucru al programatorilor si
se varsa in reteaua de QA inclusiv cu tot cu bazele
de date de test astfel incit
QA lucreaza cu niste versiuni bine definite si relativ stabile
Trebuie
sa existe in mod
obligatoriu un sistem de bug tracking cum ar fi Bugzilla cu care
lucreaza cei de la QA. Oamenii de la QA care nu este necesar sa fie
chiar programatori, stau in fata cu documentatia
tehnica scrisa de technical writer si iau produsul la testat. Apasa
altceva decit codul produsului si vede ca nu i-a afisat denumirea si a
sarit pe alt cimp decit ala pe care trebuie.
Imediat se duce si introduce acest bug in sistemul
de bug-tracking. Ii da o evaluare (critic, mediu,
imbunatatire) , scrie detaliat modului
in care apare si cum se reproduce defectul si apoi
trece mai departe.
QA participa si ei la sedintele saptaminale
facute de PM. Seful programatorilor imparte saptaminal bug-urile din
sistem si le asigneaza pentru rezolvare individual la fiecare
programator, uneori chiar la cel care a facut modulul respectiv dar
in functie de acoperire si experienta la oricine
altcineva. PM-ul verifica saptaminal lista de bug-uri nerezolvate,
asignate, in curs de rezolvare, clasate si il
streseaza pe programatorul sef sa reduca numarul de bug-uri din
aplicatie. Rezolvarea bug-urilor nu intra in
programul obisnuit de 8 ore, ele se rezolva de catre programatori
in timpul lor liber.
|