Sveiki draugi. Diezgan bieži, Ä«paÅ”i Ärpakalpojumos, redzu vienu un to paÅ”u ainu. TrÅ«kst skaidras darbplÅ«smas dažÄdu projektu komandÄs.
Pats galvenais, ka programmÄtÄji nesaprot, kÄ komunicÄt ar klientu un savÄ starpÄ. KÄ izveidot nepÄrtrauktu kvalitatÄ«va produkta izstrÄdes procesu. KÄ plÄnot savu darba dienu un sprintus.
Un tas viss galu galÄ rada nokavÄtus termiÅus, virsstundas, pastÄvÄ«gu kÄrÅ”u izrÄÄ·inÄÅ”anos par to, kurÅ” ir vainÄ«gs, un klientu neapmierinÄtÄ«bu ar to, kur un kÄ viss virzÄs. Diezgan bieži tas viss noved pie programmÄtÄju vai pat veselu komandu maiÅas. Klienta zaudÄÅ”ana, reputÄcijas pasliktinÄÅ”anÄs utt.
Savulaik es vienkÄrÅ”i nonÄcu pie Å”Äda projekta, kur bija visi Å”ie prieki.
Neviens negribÄja uzÅemties atbildÄ«bu par projektu (liels pakalpojumu tirgus), apgrozÄ«jums bija drausmÄ«gs, klients vienkÄrÅ”i saplosÄ«ts un neapmierinÄts. Reiz pie manis pienÄca izpilddirektors un teica, ka jums ir vajadzÄ«gÄ pieredze, tÄpÄc lÅ«k, kÄrtis jÅ«su rokÄs. PaÅemiet projektu sev. Ja jÅ«s sabojÄsit, mÄs slÄgsim projektu un izmetÄ«sim visus. Izdosies, bÅ«s forÅ”i, tad vadi un attÄ«sti pÄc saviem ieskatiem. RezultÄtÄ es kļuvu par projekta komandas vadÄ«tÄju, un viss krita uz maniem pleciem.
PirmÄ lieta, ko es izdarÄ«ju, bija no nulles izstrÄdÄt darbplÅ«smu, kas atbilst manam toreizÄjam redzÄjumam, un uzrakstÄ«ju komandai darba aprakstu. To Ä«stenot nebija viegli. Bet apmÄram mÄneÅ”a laikÄ viss nokÄrtojÄs, izstrÄdÄtÄji un klients pieraduÅ”i, un viss noritÄja klusi un Ärti. Lai parÄdÄ«tu komandai, ka Ŕī nav tikai āvÄtra tÄjas krÅ«zÄā, bet gan reÄla izeja no situÄcijas, uzÅÄmos maksimÄli daudz pienÄkumu, noÅemot no komandas nepatÄ«kamo rutÄ«nu.
Jau pagÄjis pusotrs gads, un projekts attÄ«stÄs bez virsstundÄm, bez āžurku skrÄjieniemā un visÄda stresa. Daži cilvÄki vecajÄ komandÄ nevÄlÄjÄs tÄ strÄdÄt un aizgÄja, citi, gluži pretÄji, bija ļoti apmierinÄti, ka ir parÄdÄ«juÅ”ies pÄrredzami noteikumi. Bet galu galÄ visi komandÄ ir ļoti motivÄti un pilnÄ«bÄ pÄrzina milzÄ«go projektu, tostarp gan priekÅ”galu, gan aizmuguri. Ietverot gan koda bÄzi, gan visu biznesa loÄ£iku. Ir pat nonÄcis lÄ«dz tÄdam lÄ«menim, ka mÄs neesam tikai āairÄtÄjiā, bet paÅ”i nÄkam klajÄ ar daudziem biznesa procesiem un jaunÄm funkcijÄm, kas izrÄdÄs biznesam patÄ«k.
Pateicoties Å”ai mÅ«su pieejai, klients nolÄma pasÅ«tÄ«t citu tirgu no mÅ«su uzÅÄmuma, kas ir labas ziÅas.
TÄ kÄ tas darbojas manÄ projektÄ, varbÅ«t tas kÄdam arÄ« noderÄs. TÄtad, pats process, kas mums palÄ«dzÄja saglabÄt projektu:
Komandas darba process projektÄ āMans mīļÄkais projektsā
a) iekÅ”Äjais komandas process (starp izstrÄdÄtÄjiem)
- Visi jautÄjumi tiek izveidoti Jira sistÄmÄ
- Katrs uzdevums ir jÄapraksta pÄc iespÄjas vairÄk un jÄveic stingri viena darbÄ«ba
- Jebkura funkcija, ja tÄ ir pietiekami sarežģīta, tiek sadalÄ«ta daudzos mazos uzdevumos
- Komanda strÄdÄ ar funkcijÄm kÄ vienu uzdevumu. PirmkÄrt, mÄs visi kopÄ strÄdÄjam pie vienas funkcijas, nosÅ«tÄm to testÄÅ”anai, pÄc tam Åemam nÄkamo.
- Katrs uzdevums ir atzÄ«mÄts gan aizmugursistÄmai, gan priekÅ”galam
- Ir uzdevumu un kļūdu veidi. Jums tie ir pareizi jÄnorÄda.
- PÄc uzdevuma izpildes tas tiek pÄrsÅ«tÄ«ts uz koda pÄrskatÄ«Å”anas statusu (Å”ajÄ gadÄ«jumÄ kolÄÄ£im tiek izveidots izvilkÅ”anas pieprasÄ«jums)
- Persona, kas paveica uzdevumu, nekavÄjoties izseko Å”im uzdevumam veltÄ«to laiku.
- PÄc koda pÄrbaudes PR apstiprinÄs, un pÄc tam tas, kurÅ” veica Å”o uzdevumu, patstÄvÄ«gi apvieno to galvenajÄ filiÄlÄ, pÄc tam maina tÄ statusu uz gatavs izvietoÅ”anai dev serverÄ«.
- Visus uzdevumus, kas ir gatavi izvietoÅ”anai izstrÄdÄtÄju serverÄ«, izvieto komandas vadÄ«tÄjs (viÅa atbildÄ«bas joma), dažreiz komandas loceklis, ja kaut kas ir steidzams. PÄc izvietoÅ”anas visi uzdevumi no gatavi izvietoÅ”anai uz izstrÄdÄtÄju tiek pÄrsÅ«tÄ«ti uz statusu ā gatavs testÄÅ”anai izstrÄdÄtÄjÄ
- Visus uzdevumus pÄrbauda klients
- Kad klients ir pÄrbaudÄ«jis uzdevumu izstrÄdÄtÄjÄ, viÅÅ” to pÄrsÅ«ta uz statusu gatavs izvietoÅ”anai ražoÅ”anÄ
- IzvÄrÅ”anai uz ražoÅ”anu mums ir atseviŔķa filiÄle, kurÄ mÄs sapludinÄm galveno tikai pirms izvietoÅ”anas
- Ja testÄÅ”anas laikÄ klients konstatÄ kļūdas, viÅÅ” atgriež uzdevumu pÄrskatÄ«Å”anai, iestatot tÄ statusu kÄ atgriezts pÄrskatÄ«Å”anai. TÄdÄ veidÄ mÄs atdalÄm jaunus uzdevumus no tiem, kas nav izturÄjuÅ”i pÄrbaudi.
- RezultÄtÄ visi uzdevumi sÄkas no izveides lÄ«dz pabeigÅ”anai: IzdarÄms ā IzstrÄdÄ ā Koda pÄrskatÄ«Å”ana ā Gatavs izvietoÅ”anai izstrÄdÄtÄjÄ ā KvalitÄte izstrÄdÄtÄjÄ ā (Atgriezties uz izstrÄdÄtÄju) ā Gatavs izvietoÅ”anai ražoÅ”anÄ ā QA ražoÅ”anas procesÄ ā Gatavs
- Katrs izstrÄdÄtÄjs pÄrbauda savu kodu neatkarÄ«gi, tostarp kÄ vietnes lietotÄjs. Nav atļauts apvienot filiÄli galvenajÄ, ja vien nav droÅ”i zinÄms, ka kods darbojas.
- Katram uzdevumam ir prioritÄtes. PrioritÄtes nosaka klients vai komandas vadÄ«tÄjs.
- IzstrÄdÄtÄji vispirms pabeidz prioritÄros uzdevumus.
- IzstrÄdÄtÄji var pieŔķirt uzdevumus viens otram, ja sistÄmÄ tika atrastas dažÄdas kļūdas vai viens uzdevums sastÄv no vairÄku speciÄlistu darba.
- Visi klienta izveidotie uzdevumi nonÄk komandas vadÄ«tÄjam, kurÅ” tos novÄrtÄ un vai nu lÅ«dz klientam tos mainÄ«t, vai arÄ« pieŔķir kÄdam no komandas locekļiem.
- Visi uzdevumi, kas ir gatavi izvietoÅ”anai izstrÄdÄtÄjÄ vai produkcijÄ, tiek nodoti arÄ« komandas vadÄ«tÄjam, kas neatkarÄ«gi nosaka, kad un kÄ veikt izvietoÅ”anu. PÄc katras izvietoÅ”anas komandas vadÄ«tÄjam (vai komandas loceklim) par to ir jÄinformÄ klients. Un arÄ« mainiet uzdevumu statusus, lai tie bÅ«tu gatavi testÄÅ”anai dev/cont.
- Katru dienu vienÄ un tajÄ paÅ”Ä laikÄ (mums tas ir plkst. 12.00) rÄ«kojam visu komandas dalÄ«bnieku tikÅ”anos
- Visi sapulces dalÄ«bnieki, arÄ« komandas vadÄ«tÄjs, ziÅo par vakar paveikto un Å”odien plÄnotajiem. Kas nedarbojas un kÄpÄc. TÄdÄ veidÄ visa komanda apzinÄs, kas ko dara un kurÄ stadijÄ atrodas projekts. Tas dod mums iespÄju prognozÄt un vajadzÄ«bas gadÄ«jumÄ koriÄ£Ät mÅ«su tÄmes un termiÅus.
- SanÄksmÄ komandas vadÄ«tÄjs runÄ arÄ« par visÄm izmaiÅÄm projektÄ un paÅ”reizÄjo kļūdu lÄ«meni, ko klients nav atradis. Visas kļūdas tiek sakÄrtotas un pieŔķirtas katram komandas dalÄ«bniekam, lai tÄs novÄrstu.
- SanÄksmÄ komandas vadÄ«tÄjs katram cilvÄkam pieŔķir uzdevumus, Åemot vÄrÄ izstrÄdÄtÄju paÅ”reizÄjo darba slodzi, viÅu profesionÄlÄs sagatavotÄ«bas lÄ«meni, kÄ arÄ« Åemot vÄrÄ konkrÄtÄ uzdevuma tuvumu tam, ko izstrÄdÄtÄjs Å”obrÄ«d dara.
- SanÄksmÄ komandas vadÄ«tÄjs izstrÄdÄ vispÄrÄ«gu arhitektÅ«ras un biznesa loÄ£ikas stratÄÄ£iju. PÄc tam visa komanda to apspriež un nolemj veikt korekcijas vai pieÅemt Å”o stratÄÄ£iju.
- Katrs izstrÄdÄtÄjs raksta kodu un veido algoritmus neatkarÄ«gi vienas arhitektÅ«ras un biznesa loÄ£ikas ietvaros. Katrs var izteikt savu redzÄjumu par ievieÅ”anu, taÄu neviens nevienam neliek darÄ«t tÄ un ne citÄdi. Katrs lÄmums ir pamatots. Ja ir labÄks risinÄjums, bet Å”obrÄ«d tam nav laika, tad taukos tiek izveidots uzdevums noteiktas koda daļas turpmÄkai pÄrstrukturÄÅ”anai.
- Kad izstrÄdÄtÄjs uzÅemas uzdevumu, viÅÅ” to nodod izstrÄdes statusÄ. Visa komunikÄcija par uzdevuma noskaidroÅ”anu ar klientu gulstas uz izstrÄdÄtÄja pleciem. Tehniskus jautÄjumus var uzdot komandas vadÄ«tÄjam vai kolÄÄ£iem.
- Ja izstrÄdÄtÄjs nesaprot uzdevuma bÅ«tÄ«bu un klients nevarÄja to skaidri izskaidrot, viÅÅ” pÄriet pie nÄkamÄ uzdevuma. Un komandas vadÄ«tÄjs Åem paÅ”reizÄjo un apspriež to ar klientu.
- Katru dienu izstrÄdÄtÄjam klienta tÄrzÄÅ”anÄ jÄieraksta par to, pie kÄdiem uzdevumiem viÅÅ” strÄdÄja vakar un pie kÄdiem uzdevumiem strÄdÄs Å”odien
- Darba process notiek saskaÅÄ ar Scrum. Viss ir sadalÄ«ts sprintos. Katrs sprints ilgst divas nedÄļas.
- Sprintus veido, aizpilda un noslÄdz komandas vadÄ«tÄjs.
- Ja projektÄ ir stingri noteikti termiÅi, tad cenÅ”amies aptuveni aplÄst visus uzdevumus. Un mÄs tos salikÄm sprintÄ. Ja klients mÄÄ£ina sprintam pievienot vairÄk uzdevumu, tad mÄs nosakÄm prioritÄtes un dažus citus uzdevumus pÄrvedam uz nÄkamo sprintu.
b) Darba process ar klientu
- Katrs izstrÄdÄtÄjs var sazinÄties ar klientu un tam vajadzÄtu sazinÄties
- Klientam nevar ļaut uzspiest savus spÄles noteikumus. Klientam pieklÄjÄ«gi un draudzÄ«gi jÄpaskaidro, ka esam savas jomas speciÄlisti, un tikai mums paÅ”iem jÄveido darba procesi un jÄiesaista tajos klients.
- IdeÄlÄ gadÄ«jumÄ pirms jebkuras funkcionalitÄtes ievieÅ”anas ir jÄizveido visas funkcijas (darbplÅ«smas) loÄ£iskÄ procesa blokshÄma. Un nosÅ«tiet to klientam apstiprinÄÅ”anai. Tas attiecas tikai uz sarežģītu un nepÄrprotamu funkcionalitÄti, piemÄram, maksÄjumu sistÄmu, paziÅojumu sistÄmu utt. Tas ļaus precÄ«zÄk saprast, kas tieÅ”i klientam ir nepiecieÅ”ams, saglabÄt dokumentÄciju funkcijai, kÄ arÄ« apdroÅ”inÄties pret to, ka klients nÄkotnÄ var teikt, ka mÄs neizdarÄ«jÄm to, ko viÅÅ” lÅ«dza.
- Visas diagrammas/blokshÄmas/loÄ£ika utt. SaglabÄjam Confluence/Fat, kur lÅ«dzam klientu komentÄros apstiprinÄt turpmÄkÄs ievieÅ”anas pareizÄ«bu.
- MÄs cenÅ”amies neapgrÅ«tinÄt klientu ar tehniskÄm detaļÄm. Ja mums ir vajadzÄ«ga izpratne par to, kÄ klients to vÄlas, tad mÄs zÄ«mÄjam primitÄ«vus algoritmus blokshÄmas veidÄ, ko klients var saprast un pats visu labot/pÄrveidot.
- Ja klients projektÄ konstatÄ kļūdu, tad lÅ«dzam to ļoti detalizÄti aprakstÄ«t Fat. KÄdos apstÄkļos tas notika, kad, kÄdu darbÄ«bu secÄ«bu testÄÅ”anas laikÄ veica klients. LÅ«dzu, pievienojiet ekrÄnuzÅÄmumus.
- MÄs cenÅ”amies katru dienu, ne vairÄk kÄ katru otro dienu, izvietot izstrÄdÄtÄja serverÄ«. PÄc tam klients sÄk pÄrbaudÄ«t funkcionalitÄti, un projekts nestÄv dÄ«kstÄvÄ. TajÄ paÅ”Ä laikÄ tas ir marÄ·ieris klientam, ka projekts ir pilnÄ attÄ«stÄ«bas stadijÄ un neviens viÅam nestÄsta pasakas.
- Bieži gadÄs, ka klients lÄ«dz galam nesaprot, kas viÅam vajadzÄ«gs. Jo viÅÅ” veido sev jaunu biznesu, ar procesiem, kas vÄl nav izveidoti. TÄpÄc ļoti izplatÄ«ta ir situÄcija, kad mÄs izmetam veselas koda daļas miskastÄ un pÄrveidojam lietojumprogrammas loÄ£iku. No tÄ izriet, ka jums nevajadzÄtu pilnÄ«bÄ visu aptvert ar testiem. Ir jÄga ar testiem aptvert tikai kritisko funkcionalitÄti un pÄc tam tikai ar atrunÄm.
- Ir situÄcijas, kad komanda saprot, ka neievÄrojam termiÅus. PÄc tam veicam Ätru uzdevumu auditu un nekavÄjoties par to informÄjam klientu. KÄ izeju no situÄcijas, iesakÄm laicÄ«gi palaist svarÄ«gu un kritisku funkcionalitÄti, bet pÄrÄjo atstÄt pÄc izlaiÅ”anas.
- Ja klients sÄk izdomÄt dažÄdus uzdevumus no savas galvas, sÄk fantazÄt un skaidrot ar pirkstiem, tad mÄs lÅ«dzam viÅu nodroÅ”inÄt mums lapas izkÄrtojumu un plÅ«smu ar loÄ£iku, kas pilnÄ«bÄ apraksta visa izkÄrtojuma uzvedÄ«bu un tÄs elementi.
- Pirms jebkura uzdevuma veikÅ”anas mums ir jÄpÄrliecinÄs, vai Ŕī funkcija ir iekļauta mÅ«su lÄ«guma/lÄ«guma noteikumos. Ja Ŕī ir jauna funkcija, kas pÄrsniedz mÅ«su sÄkotnÄjos lÄ«gumus, mums ir jÄnosaka Ŕīs funkcijas cena ((paredzamais pabeigÅ”anas laiks + 30%) x 2) un jÄnorÄda klientam, ka mums bÅ«s nepiecieÅ”ams tik daudz laika, lai to pabeigtu, kÄ arÄ« termiÅÅ” tiek pÄrcelts ar paredzamo laiku, kas reizinÄts ar divi. Uzdevumu veiksim ÄtrÄk ā lieliski, no tÄ ieguvÄji bÅ«s visi. Ja nÄ, tad mÄs jÅ«s nodroÅ”inÄm.
c) Ko mÄs nepieÅemam komandÄ:
- NeapÅemÅ”anÄs, nesavaldÄ«bas trÅ«kums, aizmÄrŔība
- āBrokastu baroÅ”ana.ā Ja nevarat izpildÄ«t uzdevumu un nezinÄt, kÄ, tad nekavÄjoties par to jÄpaziÅo komandas vadÄ«tÄjam, nevis jÄgaida lÄ«dz pÄdÄjai minÅ«tei.
- Uzacis un lepojas no cilvÄka, kurÅ” vÄl nav pierÄdÄ«jis savas spÄjas un profesionalitÄti. Ja tas ir pierÄdÄ«ts, tad tas ir iespÄjams, pieklÄjÄ«bas robežÄs :)
- MaldinÄÅ”ana visÄs tÄs izpausmÄs. Ja uzdevums nav pabeigts, tad nevajadzÄtu mainÄ«t tÄ statusu uz pabeigts un klienta tÄrzÄÅ”anÄ rakstÄ«t, ka tas ir gatavs. Dators sabojÄjÄs, sistÄma avarÄja, suns koŔļÄja klÄpjdatoru - tas viss ir nepieÅemami. Ja notiek reÄls nepÄrvaramas varas notikums, nekavÄjoties jÄinformÄ komandas vadÄ«tÄjs.
- Kad speciÄlists visu laiku ir bezsaistÄ un darba laikÄ viÅu ir grÅ«ti sasniegt.
- ToksicitÄte komandÄ nav pieļaujama! Ja kÄds kaut kam nepiekrÄ«t, tad visi sanÄk kopÄ uz mÄ«tiÅu un apspriež un lemj par to.
Un vairÄki jautÄjumi/tÄzes, ko es dažreiz uzdodu savam klientam, lai novÄrstu visus pÄrpratumus:
- KÄdi ir jÅ«su kvalitÄtes kritÄriji?
- KÄ noteikt, vai projektam ir problÄmas vai nav?
- PÄrkÄpjot visus mÅ«su ieteikumus un ieteikumus par sistÄmas maiÅu/uzlaboÅ”anu, visus riskus uzÅematies tikai jÅ«s
- Jebkuras bÅ«tiskas izmaiÅas projektÄ (piemÄram, visa veida papildu plÅ«sma) izraisÄ«s iespÄjamu kļūdu parÄdÄ«Å”anos (kuras mÄs, protams, izlabosim)
- Dažu minÅ«Å”u laikÄ nav iespÄjams saprast, kÄda veida problÄma radusies projektÄ, un vÄl jo mazÄk to nekavÄjoties novÄrst
- MÄs strÄdÄjam pie konkrÄtas produktu plÅ«smas (Uzdevumi ŽirÄ - IzstrÄde - TestÄÅ”ana - IzvietoÅ”ana). Tas nozÄ«mÄ, ka mÄs nevaram atbildÄt uz visu pieprasÄ«jumu un sÅ«dzÄ«bu plÅ«smu tÄrzÄÅ”anÄ.
- ProgrammÄtÄji ir programmÄtÄji, nevis profesionÄli testÄtÄji, un viÅi nevar nodroÅ”inÄt atbilstoÅ”u projektu testÄÅ”anas kvalitÄti
- JÅ«s esat pilnÄ«bÄ atbildÄ«gs par galÄ«go testÄÅ”anu un ražoÅ”anas uzdevumu pieÅemÅ”anu
- Ja mÄs jau esam uzÅÄmuÅ”ies uzdevumu, mÄs nevaram nekavÄjoties pÄrslÄgties uz citiem, kamÄr nepabeidzam paÅ”reizÄjo (pretÄjÄ gadÄ«jumÄ tas rada vÄl vairÄk kļūdu un palielina izstrÄdes laiku)
- KomandÄ ir mazÄk cilvÄku (atvaļinÄjumu vai slimÄ«bu dÄļ), bet darba ir vairÄk un mums fiziski nebÅ«s laika atbildÄt uz visu, ko vÄlaties
- MÄs lÅ«dzam jÅ«s veikt izvietoÅ”anu ražoÅ”anas versijÄ bez pÄrbaudÄ«tiem uzdevumiem izstrÄdÄtÄjÄ ā tas ir tikai jÅ«su risks, nevis izstrÄdÄtÄji.
- Ja iestatÄt neskaidrus uzdevumus, bez pareizas plÅ«smas, bez dizaina izkÄrtojumiem, tas no mums prasa daudz vairÄk pūļu un ievieÅ”anas laika, jo mums jÅ«su vietÄ ir jÄveic papildu darba apjoms.
- Jebkuri uzdevumi saistÄ«bÄ ar kļūdÄm bez detalizÄta to raÅ”anÄs apraksta un ekrÄnuzÅÄmumiem nedod mums iespÄju saprast, kas nogÄja greizi un kÄ mÄs varam Å”o kļūdu novÄrst.
- Projektam ir nepiecieÅ”ama pastÄvÄ«ga pilnveidoÅ”ana un uzlabojumi, lai uzlabotu veiktspÄju un droŔību. TÄpÄc komanda daļu sava laika velta Å”iem uzlabojumiem
- TÄ kÄ mums ir stundu virsstundas (steidzami labojumi), pÄrÄjÄs dienÄs tie ir jÄkompensÄ
Parasti klients uzreiz saprot, ka programmatÅ«ras izstrÄdÄ viss nav tik vienkÄrÅ”i, un ar vÄlmi vien nepietiek.
KopumÄ tas arÄ« viss. AizkulisÄs atstÄju daudz sarunu un visu procesu sÄkotnÄjo atkļūdoÅ”anu, bet rezultÄtÄ viss izdevÄs. Varu teikt, ka Å”is process mums kļuva par sava veida āSudraba lodiā. Jauni cilvÄki, kas ieradÄs projektÄ, jau no pirmÄs dienas varÄja nekavÄjoties iesaistÄ«ties darbÄ, jo visi procesi bija aprakstÄ«ti, un dokumentÄcija un arhitektÅ«ra diagrammu veidÄ uzreiz sniedza priekÅ”statu par to, ko mÄs visi Å”eit darÄm.
P.S. VÄlos precizÄt, ka mÅ«su pusÄ projektu vadÄ«tÄja nav. Tas ir klienta pusÄ. Nav nekÄds tehniÄ·is. Eiropas projekts. Visa saziÅa notiek tikai angļu valodÄ.
Veiksmi visiem jūsu projektos. Neizdegies un centies uzlabot savus procesus.
Avots manÄjÄ
Avots: www.habr.com