Iš kur tos statybos prie kompiuterio klaviatūros?
Pradžiai – šiek tiek istorijos. Anksčiau vyravo įsitikinimas, kad programuotojas iš esmės toks pat statybininkas. Tik pastatus stato iš kodo, todėl jam puikiai tinka ir statybose naudojami projektų valdymo metodai. Analitikai iki mažiausių smulkmenų išsiaiškindavo ko nori užsakovas ir tai suguldydavo į storus tomus reikalavimų. Pastaruosius perimdavo sistemų architektai ir sudėliodavo galutinį projekto techninį planą. Programuotojams reikėdavo juo tik sekti ir parašyti kodą, o testuotojams ištestuoti, ar viskas veikia taip, kaip reikia.
Skamba kaip ir viskas protingai bei teisingai? Realybėje situacija būdavo kiek kitokia. Niekam ne naujiena, kad užsakovai itin tiksliai savo reikalavimų išsakyti negali. Čia nieko blogo – sudėtinga viską iš anksto vienu ypu teisingai numatyti. Neretai tik eigoje suprantama, kad reikia kitokių ar papildomų funkcijų. Tik pradėjus programuoti paaiškėdavo, ar pagal tokius poreikius sudėliotas architektų planas veikia taip, kaip turi veikti. Dažniau būdavo, kad ne visai. Ir tai būdavo pastebima jau praėjus keliems mėnesiams po pirminio kliento užsakymo. Natūralu, kad projektai vėluodavo, o užsakovai gaudavo programinę įrangą, kuri dažnai tik iš dalies atitikdavo jų poreikius. Tai pataisyti būdavo bandoma skatinant dar geriau planuoti – juk procesas tobulas, tiesiog visko nenumatom! Iš šono šiandien skamba kiek juokingai.
O kur dar stresas? Projektui prasidėjus visi būdavo ramūs, nes laiko iki paskutinio termino dar daug. Įtampa imdavo augti programavimo fazėje, o kulminaciją pasiekdavo testuojant. Jei apskritai pavykdavo prieiti prie šio etapo. Programuotojai kaltindavo architektus, kad jie nepakankamai gerai suprojektavo, architektai versdavo kaltę ant programuotojų, kad nesugeba įgyvendinti puikaus jų plano, arba ant analitikų, kad jie netinkamai surašė reikalavimus. Turbūt ne vienas programuotojas, dirbęs šiais metodais, krūpčioja prisiminęs šį laikotarpį.
Virtualias plytas iškeitė į vikrius procesus
Programuotojai, neapsikentę statybų savo darbe, pradėjo ieškoti naujų darbo metodų. Jų pastangomis itin sparčiai pradėjo plisti, o pastaraisiais metais visiškai įsigalėjo nauji darbo organizavimo metodai, dar žinomi bendriniu „Agile“ vardu (angl. agile – vikrus, judrus).
Šio judėjimo šalininkai „statybinius“ darbo principus iš savo kiemo meta lauk ir nesiekia visko iš anksto iki mažiausios detalės numatyti bei vienu ypu didįjį planą įgyvendinti. Jie verčiau visą projektą suskaido į mažus etapus (iteracijas) ir tik artimiausią iteraciją detaliau suplanuoja bei iškart įgyvendina. Taip užsakovas jau po kelių savaičių gali išbandyti pirmąją programinės įrangos versiją ir įvesti norimas korekcijas. Taip savaitė po savaitės programinė įranga užtikrintai auginama užsakovo vedama kryptimi.
Prasidėjus šiam judėjimui atsirado ne vienas šia filosofija paremtas darbo organizavimas metodas, kaip „Extreme Programming“, „Scrum“, „Kanban“. Šiandien turbūt neberasime nė vienos sėkmingos technologijų bendrovės, kurios veikloje nėra taikomi kažkurie iš šių metodų ar jų derinys.
Vieno metodo šiandien nepakanka
Mūsų vystoma didžiausia pasaulyje atostogų būsto paieškos platforma „HomeToGo“ taip pat ne išimtis. Statybų čia nerasime – dirbame pagal savą, hibridinį „Agile“ modelį. Jo pamatą sudaro „Extreme Programming“, skiriantis itin didelį dėmesį programuotojo darbo efektyvumui didinti. Projektus valdome pagal „Scrum“ ir „Kanban“ metodikas, o tikslus ir progresą matuojame pagal „Google“ sukurtą OKR metodą. Didindami savo efektyvumą stipriai remiamės „Lean“ nuostatomis – dažnai peržiūrime ir drąsiai atsisakome perteklinių ar mažai naudos duodančių procesų ir priemonių.
Dirbtinis intelektas programuotojų artimiausiu metu tikrai dar nepakeis, bet jau šiandien galime ir stengiamės automatizuoti daug veiklų. Taip išvengiame žmogiškųjų klaidų, sutaupome laiko bei greičiau galime įvertinti darbo rezultatus. Pavyzdžiui, turime daug automatizuotų sistemos testų, kurie automatiškai startuoja po kiekvieno programinio kodo pakeitimo. Automatizuojame praktiškai viską, ką įmanoma ir verta: pradedant nuo ataskaitų paruošimo, naujų serverių paleidimo, iki programinės įrangos diegimo vienu paspaudimu.
Tiesa, vien automatizacija visko neišgelbės – ji įvertins ir parodys iškart, jei kas neveikia, tačiau nepamokys. Todėl labai svarbu, kad labiau patyręs kolega, pamatęs, jog komandos narys pasirinko neefektyvų sprendimą, atkreiptų į tai dėmesį ir patartų – tai leidžia greičiau tobulėti ir priimti vis geresnius sprendimus. „HomeToGo“ skatiname ne tik tokias asmenines mentorystes, bet ir vidinius praktinius mokymus.
Bet lubos yra ir čia
Kompanijai gerai įvaldžius minėtų „Agile“ metodų ir praktikų arsenalą, produkto vadovai aiškiai mato darbų progresą, gali operatyviai keisti prioritetus, o programuotojai be jokio streso geba sėkmingai įgyvendinti užsakovų sumanymus. Skamba puikiai, tačiau net ir tokiu būdu pasiekiame savotiškas lubas. Ir vėl dėl tos pačios žmogiškos priežasties.
Visi šiame straipsnyje paminėti metodai remiasi prielaida, kad produkto vadovas visada žino, ką reikia sukurti, kad visi nustatyti prioritetai yra teisingi ir visi sprendimai duoda užsibrėžtą naudą. Deja, bet per daugiau nei 15 metų technologijų sektoriuje nesutikau dar nė vieno tokio produkto vadovo.
Dirbame tokioje realybėje, kurioje produkto vadovai ar užsakovai gana dažnai nežino, ar duodamos užduotys tikrai pasieks norimą rezultatą. Tikslą jie žino tikrai gerai, bet efektyvius žingsnius iki jo ne visada gali numatyti. Dažniau jie prioritetus nustato pagal numatoma naudą, kurią realiai galės išmatuoti tik jau padarę darbą. Jei bus dažnai klystama, vertinant sprendimų teikiamą naudą, net ir turint aukščiausios klasės programuotojus, efektyviai dirbti nepavyks. Tiesiog programuotojų tobulai nuveikti darbai neduos daug naudos.
Tad ir vėl, kaip ir „statybininkų“ metodikoje, pasiekiame naujas lubas, už kurių slypi didelis potencialas darbo efektyvumui didinti. Tik šį kartą padėti reikia ne programuotojams, o produkto vadovams. Jau kurį laiką „HomeToGo“ viduje remiamės „Lean Startup“ metodika, kuri produkto vadovams padeda kurti paslaugas, kurių rinkai iš tikrųjų reikia, o ne tas, kurių jie „galvoja“, kad reikia.
Plačiau apie „Lean Startup“ ir kodėl programuotojams reikia duoti dar didesnį vaidmenį visame projekte A.Kažukauskas papasakos konferencijoje „Build Stuff“, lapkričio 14 dieną.
Daugiau apie didžiausią pasaulyje atostogų būsto nuomos paieškos sistemą „HomeToGo“ multimedijoje.