marți, octombrie 09, 2007

Primul păcat în managementul proiectelor software - definirea cerințelor în detaliu

Încerc să văd ce credeți despre documentul "The Seven Deadly Sins
of Software Project Management
" pe care l-am prezentat în unul din posturile anterioare.

Cum putem să ajutăm companiile de IT să-si desfasoare mai bine proiectele software?

Primul păcat care-l prezintă acest document se referă la definirea cerințelor. Poate nu de puține ori, încercăm să lămurim toate cerințele unui proiect de la început, în detaliu, să estimăm cât mai exact, să începem dezvoltarea, să livrăm produsul și să o luăm de la capăt cu un alt client/proiect.

Dar, dezvoltarea unui produs software nu e ca în construcții, ai facut o casă și pe a doua deja știi cum s-o construiești. În software, de cele mai multe ori aplicațiile și cerințele sale sunt (total) diferite. E greu să estimăm cât mai exact cât ne ia să dezvoltăm un proiect a cărui implementare se aproximează a fi de cca. 6 luni, 1 an..în care echipa diferă (atenție, nu fiecare echipă are același nivel de experiență și cunoaștere).

Într-o astfel de abordare există și consecințe după cum vom vedea.

Una dintre ele ar fi aceea că cerințele proiectului s-ar putea schimba în timp, iar ceea ce dezvoltăm să nu mai fie de actualitate pentru afacerea clientului.

Echipa în timp s-ar putea schimba, un programator pleacă, altul vine.

Clientul dacă nu e implicat în procesul de dezvoltare a produsului, s-ar putea ca în final să nu înţeleagă de ce a luat atâta timp dezvoltarea aplicaţiei.

Dacă la un moment dat există o problemă de ordin tehnic, s-ar putea să nu ai pe cine să anunţi că îndeplinirea deadline-ului nu mai e posibilă.

Într-o carte despre dezvoltare în stil Agile, se spune să "implici clientul în desfășurarea proiectului și lasă-l pe el să ia deciziile finale", astfel încât va înțelege de ce un deadline trebuie amânat.

Când există un deadline și trebuie să livrezi aplicația, dar timpul necesar nu e suficient, lasă clientul să înțeleagă acest aspect și să aleagă care sunt cele mai importante functionalități care ar trebui să existe la următorul release.

Ce reguli mai credeți că ar trebui urmate în definirea cerințelor?

Niciun comentariu: