Technologas #11: Kompetencijų matrica – kaip tapti senior programuotoju?

Vaidas

Vaidas, CTO

Aloha! Kaip ir visos IT kompanijos, Adeo Web viduje turime dilemą – kaip tinkamai įvertinti programuotojus? Kaip jiems paties žinoti, kuriam lygyje yra? Ko reikia, kad pagaliau taptum išsvajotuoju senior’u? Mėgstantys lengviausią kelią pasakys, jog kiek laiko specialistas dirba, toks jo ir lygis. Bet ar tikrai kompetencija atsiremia tik į išdirbtus metus?

Jei žmogus programuoja penkmetį, tai jis jau mid’as? O jei pasakysiu, kad jis pakeitė komandą ir naujoji jam daug labiau patinka, nes senoji visi dar deployindavo naudodami FTP, o ne GIT’ą? Tada jis pasikeitusiame kontekste bus tik junior’as. O kas, jeigu tas programuotojas labai greitai mokosi ir dabar yra toks pats geras, kaip naujosios komandos lyderis? Mąstymas vėl pasikeis.

Situacijų yra begalė, todėl norėdami viską sudėti į gražias ir tvarkingas lentynas ėmėme ieškoti sprendimo. Po nemažo įdirbio pagaliau sukūrėme Adeo kompetencijų matricą, kurią šiemet išbandėme realiame gyvenime.

Beje, man nelabai patinka, kai bendraudami suangliname nebūtinus terminus, tai pasistengsiu ištaisyti šitą bėdą ir senior’us vadinsiu vyresniaisiais programuotojais, mid’us – vidutiniškai patyrusiais, o junior’us – besimokančiais.

Pirmiausia – istorija ir problemos

Kai atėjau į Adeo Web, kompetencijų lygiai buvo tarsi nutylėti. Jei pačių darbuotojų paklausdavau, kurie iš jų yra vyresnieji, atsakymo tekdavo ieškoti pas projektų vadovus. Programuotojai nesiryždavo apspręsti savo lygio. Gerokai dažniau išgirsdavau atsakymą: „Nežinau, turbūt vyresniuoju nelabai galėčiau savęs pavadinti, bet nesu ir pradedantis“.

Be to, nebuvo aišku, kaip programuotojai įvertinami, nes atėję jie turėdavo savo lūkesčius (doh!), bet mums trūko konkrečios argumentacijos, ką žmogus turi padaryti, kad tie lūkesčiai būtų === nauda įmonei.

Maži žingsniukai link aiškumo

Yra bėda – turi būti ir sprendimas. Mūsų galvose jau anksčiau buvo vieningos kompetencijų sistemos užuominos. Neapsimesiu, jog nežinau, kad kitos kompanijos turi panašių priemonių. Vis tik, norėjome, kad mūsiškė matrica būtų sudaryta pačių programuotojų, o ne nuleista iš viršaus ar iš kažkur nusižiūrėta, todėl susėdome su dar aštuoniomis galvomis ir pradėjome ją kurti patys. Užtrukome nei daug, nei mažai – 4 mėnesius, bet galiausiai gavome apčiuopiamą rezultatą.

Turėjome sąrašą konkrečių įgūdžių ir gerai žinojome, iš ko reikalaujame, kad mokėtų tam tikrą dalyką. Žemiau pateikiau pavyzdį, kuriame „Y“ raide pažymėta, kuriems programuotojams žinios yra būtinos, „N“ – neprivalomos, o klaustukas reiškia, kad naujai prisijungusiems tai nebūtina, tačiau norint pakilti laipteliu į viršų, teks šias žinias įgyti.

Kompetencijas išskirstėme į kelias kategorijas: bendrąsias žinias, minkštuosius įgūdžius ir frontend/backend dalis. Į matricą pateko daugiau nei 100 įvairių kriterijų: nuo tokių bendražmogiškų komandinių savybių, kaip elgesys kritinėse situacijose, iki techninio išmanymo reikalaujančių „Unit“ testų ar MySQL duombazių.

Programuotojų vertinimo logika

Kai turėjome paruoštą matricą, beliko tik išskirti programuotojus ir jiems priskirti atitinkamą lygį. Tam buvo keli keliai:

  • Programuotojas pats įsivertina, ką ir kiek jis moka. Pavertus matricą šiuo kampu lieka daug nelygybės, nes įsigalioja posakis „kuo giliau į mišką, tuo daugiau medžių“.
  • Mes įvertiname programuotojo bendrines žinias, bet šitaip nepastebime įgūdžių, apie kuriuos, net nenutuokiame.
  • Mes įvertiname programuotoją pagal atsakymus į klausimus, kuriuos jam užduodame.

Pasirinkome mišrų variantą – programuotojas pats įsivertina save ir po to peržvelgiame matricą kartu su juo. Tam, kad ten išsiaiškintume, kur jis užsižymėjo per taupiai ar per gausiai. Minkštąsias programuotojų žinias įvertinome kartu su projektų vadovų pagalba.

Trūkumai matricoje ir klaidų taisymas

Kadangi tai buvo pirmasis toks bandymas, neišvengėme ir klaidų. Pavyzdžiui, ne visuomet buvo aišku, kaip tinkamai įvertinti tokius faktorius kaip kalbos kultūrą, planavimo įgūdžius (estimating) ar tą patį proaktyvumą. Be to, dalis pasigedo svorio koeficientų – tai yra, kad anglų kalba != PHP ar JS.

Na, bet, kaip sako liaudis, neklysi tik tada, jei nedarysi. Šią matricą laikome augančiu organizmu, kurio trūkumus nuolat taisome.

Pavyzdžiui, be to, kad išėmėme ar įdėjome kai kuriuos įgūdžius, dar atlikome šiuos veiksmus:

  • Prie kiekvieno žmogaus pažymėjome tuos įgūdžius, kuriuos išmokti būtų privalumas;
  • Prie įgūdžių pridėjome ir aprašymus, ką reikia mokėti norint gauti atitinkamą balą;
  • Jei yra gautas sertifikatas, toje srityje suteikiami 5 balai, o visiems kitiems – iki 4. Pavyzdžiui, jei žmogus išsilaikė Magento sertifikatą, jam Magento srityje atitenka 5 balai.

Ką mums duoda toks įvertinimas?

Tokios matricos sudarymas pareikalavo krūvos laiko tiek ją sudarinėjant, tiek testuojant darbuotojus, tiek suteikiant grįžtamąjį ryšį viską užbaigus.

Visgi to naudą šiandien jaučiame visi – programuotojai nesiblaško, ir žino kur yra stiprūs ir nenugalimi, o kur reikia biški pasimokyti. Taip pat visiems naudinga suprasti, kokiam lygyje esi, nes gali ne tik pasigirti draugams, bet ir įvertinti, ko tikiesi iš kompanijos bei ji nori iš tavęs. Projektų vadovai taip pat patenkinti, nes turi argumentacijos ties lūkesčių pildymu.

Be to gavome ir papildomos naudos – dabar geriau žinome, kiek ir kokių pajėgumų žmonių turime laisvų. Na, o siūlant specialistų laiką savo klientams turime papildomą svertą planuojant paslaugų kainas.

Kaip matuojate jūs?

O kaip jūsų kompanijose vykstą lygių peržvelgimas? Tiesiog skaičiuojate metus ar ieškote išplėstinių kriterijų? O gal kaip tik, tokia „kompetencijų matrica“ jau praeitis, ir yra inovatyvesnių matavimo būdų? Jei taip, pasidalinkite jais komentaruose. 

Vaidas

Vaidas, CTO

Technologijų entuziastas, nuolat ieškantis būdų, kaip optimizuoti procesus ir kaip atrasti dar neišbandytą naminio sidro skonį.