Modelul Dreyfus si Agile development

Prin cautarile voastre pe Internet mai mult ca sigur ca ati dat peste un programator numit Andy Hunt. Este autorul unei carti remarcabile numita The Pragmatic Programmer: From Journeyman to Master. Altii il stiu ca fiind unul dintre autorii Agile Manifesto si al unui alt volum interesant - "Pragmatic Thinking and Learning: Refactor Your Wetware".

Dec 2, 2015 2714
Prin cautarile voastre pe Internet mai mult ca sigur ca ati dat peste un programator numit Andy Hunt. Este autorul unei carti remarcabile numita The Pragmatic Programmer: From Journeyman to Master. Altii il stiu ca fiind unul dintre autorii Agile Manifesto si al unui alt volum interesant - "Pragmatic Thinking and Learning: Refactor Your Wetware".

In cartea sa Andy Hunt discuta despre o multime de subiecte interesante, inclusiv cum sa profiti de modul in care creierul tau functioneaza si sa aplici asta in contextul industriei de software development. Exista cel putin un punct care ar trebui sa atraga atentia managerilor si developerilor interesati de aplicarea cu succes a conceptului de "agile development".

Si anume discutia despre modelul Dreyfus.

Modelul Dreyfus si dezvoltarea de software

Modelul Dreyfus se bazeaza pe idea ca indiferent de domeniul in care lucreaza, oameni pot fi impartiti in 5 categorii – de la novice la expert. Mai mult decat atat fiecare categorie vine la pachet cu un anumit set de abilitati si, mai important decat atat, abordari diferite in a rezolva problemele.
  • Novice. Are nevoie de un set clar de instructiuni pentru a rezolva orice tip de problema. Orice informatii pe care le primeste vor fi considerate ca fiind adevarate si orice fel de probleme care nu pot fi rezolvate cu modele pe care le are la dispozitie il vor face sa intre in panica.
  • Incepator avansat. Este nevoie in continuare de un set de pasi si reguli pentru persoanele aflate la acest nivel insa pot sa abordeze anumite sarcini noi si de unii singuri. Evident ca aici apar provocarile inerente abordarii de sarcini noi.
  • Competent. Persoanele aflate la acest nivel simt nevoia sa inteleaga problema si nu doar sa o rezolve dar nu doresc sa se concentreze pe fiecare detaliu. Isi bazeaza abordarea pe experienta altora dar modele sunt luate literalmente.
  • Experimentat. Are nevoia de a intelege imaginea de ansamblu. Retetele nu mai sunt importante deorece experienta lor le spune ce sa caute si unde.
  • Expert. Nu mai depinde de tehnologie, principii sau paradigme. Rezolva problemele si ii ajuta si pe cei din jur. O mare parte din munca lor se bazeaza pe intuitie si experienta acumulata.

Aceasta descriere nu se vrea a fi completa si precisa pentru ca cel mai important lucru pe care trebuie sa il intelegem sunt etapele prin care trec oamenii – de la novice la expert. Cu cat o persoana este mai sus in acest model cu atat are nevoie de mai putine instructiuni pentru a rezolva o problema. Mai mult decat atat expertii, atunci cand primesc o anumita sarcina, sunt in mod categoric impotriva primirii oricarui tip de solutii sau sfaturi legate de rezolvarea problemei – au nevoie sa stie care este problema si descrierea acesteia.
Persoanele aflate la ultimele 2 etape stiu ca nu toate intrebarile complexe au raspunsuri simple si ca in aceste cazuri contextul este important. Stiu in mod intuitiv cand trebuie sa se mai lucreze la cod sau la design.

Un alt aspect pe care trebuie sa il avem in vedere este ca atunci cand o persoana trece prin cele 5 etape descrise mai sus si atitudinea lui se schimba. Novicii fac doar ce li spune si restul nu intra in aria lor de responsabilitate. Pentru un expert idea ca aceasta situatie nu este problema mea nu exista. Orice problema legata de proiect sau client este problema lui.

agile_dreyfus.jpg


Modelul Dreyfus si Agile

Cum se leaga modelul Agile de Dreyfus? Foarte simplu. Cele mai interesante inovatii din domeniul dezvoltarii de software se adreseaza persoanelor cu experienta. Mai mult decat atat Agile development foloseste feedbackul pentru a face ajustari constante intr-un mediu colaborativ. Insa capacitatea de autocorectie pe baza performantei anterioare este posibila doar la experti. Persoanele aflate la nivelul 2 si 3 confuzeaza de multe oriidea de software design patterns cu retete care functioneaza de fiecare data uneori cu rezultate foarte negative.

Cu alte cuvinte Agile development este un instrument eficient dar nu functioneaza in echipe formate din persoane aflate la primele 2 nivele. O echipa trebuie sa se asigure ca are un numar eterogen de indivizi aflati la fiecare nivel daca vrea ca proiectul ei sa aiba o sansa ridicata de succes.

Sergey Teplyakov
Expert in .Net, С++ and Application Architecture

Daca iti place acest articol, distribuie-l si prietenilor tai!




Mai ai intrebari?
Contacteaza-ne.
Thank you.
Your request has been received.