Month: November 2010

Agile or not? (here we come) – 1.del

Posted on Updated on

If agile methods have a motto, it is embrace change. If agile methods have a strategic point, it is maneuverability. (Vir: Agile and Iterative Development: A Manager’s Guide)

Razvoj programske opreme je kompleksen proces, je zelo nepredvidljiv. Uspešno predvidevanje je praktično nemogoče, tveganje je ogromno. Kakšno metodologijo razvoja izbrati, katere prakse implementirati in katere vrednote upoštevati za čim večjo uspešnost projekta?

Predstavljajmo si, da smo pred začetkom razvoja projekta. Poskusimo odgovoriti na naslednja vprašanja:

  • Ali je mogoče že vnaprej natančno opredeliti specifikacije, ki se pod nobenim pogojem ne bodo spremenile?
  • Ali je mogoče že na začetku podati natančen datum konca razvoja?
  • Ali je mogoče že na začetku opredeliti, organizirati, prioritizirati vse dejavnosti celotnega razvoja?

Odgovor je jasen: ne, ni mogoče. Razlogov je več, pa jih naštejmo nekaj:

  • stranke redko natančno vedo, katere funkcionalnosti želijo;
  • stranke težko razložijo, kaj želijo;
  • ko jih vprašamo o podrobnostih, stranke ne vedo natančno, kaj bi naj funkcionalnost, ki jo želijo, počela;
  • stranke si med samim razvojem (upravičeno) premislijo glede določenih funkcionalnosti.

Nekdo bo rekel, zakaj potem skupaj s stranko ne pripravimo natančnih odgovorov na zgornja vprašanja oz. zakaj si ne vzamemo nekaj mesecev za pripravo natančnih specifikacij (t. i. waterfall principle)?

Takšno razmišljanje je zastarelo. Čas je predrag, da bi ga porabili (samo) za omenjeno dejavnost. Kot bomo videli v kasneje, je dejavnosti mogoče paralelizirati in tako bolje izkoristiti čas. Poleg tega se v močno konkurenčnem okolju funkcionalnosti sproti tako hitro spreminjajo, da se tudi želje strank med razvojem bistveno razlikujejo od tistih pred začetkom projekta. Le zakaj? Postavimo si še dodatno vprašanje:

  • Kaj je sploh uspešen razvojni projekt? Ali je to projekt, kjer se razvoj zaključi pravočasno (in brez hroščev), kjer smo razvili vse na začetku zastavljene funkcionalnosti?

Lahko se zgodi, da razvoj projekta uspešno zaključimo, vendar takoj ob koncu ugotovimo, da je projekt neuspešen. Zakaj? Zaradi poslovnega vidika, zaradi katerega se je razvoj sploh začel: zahteve trga so se spremenile in naš projekt jih več ne pokriva (npr. na trgu se je pojavila konkurenca, nova tehnologija, zakonodaja se je medtem spremenila …), ni se pravočasno prilagodil.

Zato je potreben drugačen pristop, in sicer na vseh ravneh, ne samo na ravni  razvijanja – kodiranja, ampak tudi na nivoju menedžmenta in pri odnosu do stranke. Rešitve so v iterativnih in evolucijskih metodah, katerih podmnožica so agilne metode razvoja.