Microsofti blogi

Microsofti arendustiimi juht Henn Ruukel: kunagised programmeerija tööülesanded teeb täna ära masin

Henn Ruukel.Foto: JP Hion

“Olid ajad, mil arendaja tegeles ainult valdkonnaga, mida ta tundis väga süvitsi”, räägib Microsofti arendusmeeskonna juht Henn Ruukel. “Täna oskavad arendajad programmeerimise kõrvalt ka veebilehte teha, Google Analyticsit kasutada ja kaasa rääkida tootega tekkivate probleemide lahendamisel.”

Arendajate tööpäevad ei ole enam sellised, nagu kümme või viisteist aastat tagasi. Microsoftis tegelevad arendajad koodi kirjutamisega kõigest mõned päevad nädalas. See ei tähenda aga, et ülejäänud aja käed rüpes loorberitel puhatakse. Henn Ruukel selgitab, kuidas on arendaja roll aja jooksul uueks saanud ja millise jälje on see muutus jätnud IT-firmade tööprotsessi.

Millise uue tähenduse on arendaja roll aja jooksul omandanud?

Tarkvaraarenduse protsess on oluliselt muutunud, mistõttu on muutnud ka programmeerija roll ja tööle seatavad ootused. Minevikus kasutati Waterfall arendusmudelit: arendati lineaarselt, täpselt ja kiiresti ning toode saadeti turule suure inertsiga. Täna elame Agile mudeli maailmas, kus tarkvara luuakse iteratiivselt ning seda saab turule saata mitu korda päevas.

Waterfalli ajastul töötasid arendus- ja tarnetsükkel aeglasemalt ja see mõjutas ka programmeerija tööprotsessi. Arhitektid ja analüütikud tegid ära palju eeltööd ja kui projekt jõudis arendusse, siis oli see väga detailselt ettevalmistatud. Arendajad teadsid täpselt, mida ja kuidas nad tegema peavad. Enamus tarkvarast tarniti terviklike pakettidena ja toode läks kasutusse selliselt, et seda ei saanud tagasi võtta või muuta. Kuidas sa võtad tagasi näiteks Windows 95 või saadad sellele uuendusi?

Kuidas täna asju teisiti tehakse?

Tänases Agile’i maailmas on ettevalmistus ja probleemi defineerimine arenduse algfaasis hägune. Arendajad ei tegele enam põhjalikult ettevalmistatud tootega, vaid nad kaasatakse protsessi juba projekti alguses. Selles faasis on olemas mingi kindel äriprobleem, aga seda ei osata veel lahendada. Arendajate roll on sellele probleemile võimalikult kiire prototüüpimisega leida töötav lahendus. Töökindlusele, skaleeritavusele, lokaliseerimisele ja muule mõeldakse hiljem implementatsioonifaasis. See saab alata alles siis, kui turu tagasiside kinnitab, et algne probleem on edukalt lahendatud.

Agile’ile üleminemine on oluliselt muutnud seda, kuidas me arendajate rolli defineerime. Töö on muutunud mitmekesisemaks ja loomingulisemaks, et kiiremini reageerida turu nõuetele. Kui muutub mõni regulatsioon või tuleb koroona ja on vaja ellu viia kiireid muutusi, siis aasta aega vältavad tarkvaraarenduse tsüklid enam ärimudelisse ei sobi. Nii jääb ettevõte ajast maha.

Millised ekslikud arusaamad on alustavatel arendajatel tarkvaraarenduses töötamisest?

Alustavate arendajate ootused ei erine kardinaalselt igapäevatöö reaalsusest. Minu arvates töös ei pettuta ja pealetulev uus põlvkond sobib arendajate rolle täitma väga hästi.

Minevikus olid arendajad suuremal määral spetsialiseerunud spetsiifilistele tehnoloogiatele. Näiteks jaguneti erinevatesse programmeerimiskeelte koolkondadesse. Täna ollakse rohkem orienteeritud järjepidevale arengule. Tööle tullakse küll mingi olemasoleva kogemuste pagasiga, aga pidevalt õpitakse juurde uusi tehnoloogiaid, programmeerimiskeeli ja raamistikke.

Tõenäoliselt on kõik kuulnud stereotüüpsest arendajast, kes istub päevad ja ööd arvuti taga ning tegeleb üksnes koodi kirjutamisega. Kuidas arendajad täna tegelikult tööd teevad?

Programmeerija ei saa tegutseda üksi, vaid ta peab pidevalt koostööd tegema paljude teiste valdkondade esindajatega. Kui kunagi anti arendajale ette väga spetsiifiliste kriteeriumitega ülesanne, siis nüüd oskab sellist tööd teha juba masin. Täna on vaja inimest kohas, kus hästi ära defineeritud probleemile hakatakse lahendust otsima meeskonnana iteratiivselt. See nõuab arendajalt oskust jooksvalt vahetada raamistikke ja programmeerimiskeeli ning valmidust kasutajatega suhelda.

Samuti ei tegele programmeerijad ainult koodiga. Iteratiivse töö võlu ja valu on see, et koodi kirjutamisele kulub nädalas ehk kaks-kolm päeva. Ülejäänud aja töötatakse koos teistega, et tootega seotud probleeme paremini mõista ja lahendada. Muidugi sõltub arendaja töö sisu ka tema tiimist ja tootest, kuid suure hulga oma tööpäevast veedab ta kohtumistel.

Minu kogemus näitab, et kõige vingemad tootelahendused tekivad alati siis, kui probleemi kallal töötab korraga mitu erinevat inimest. Meeskonnana töötatakse välja leidlikke ja ootamatuid ideid, kuid üksi suudetakse näha ainult ühte perspektiivi.

Kiputakse arvama, et töö arendajana eeldab tohutult tehnilisi teadmisi. Kas arendaja töö ongi ainult tehniline või läheb vaja ka muid oskusi? 

Kui arendaja kirjutab nädalas koodi mõned üksikud päevad, siis muul ajal koosneb tema väärtusloome kolmest asjast. Ta üritab mõista kolleege, enda mõtteid arusaadavalt edasi anda ja sõlmida kokkuleppeid teiste tiimidega. Arendajad aitavad luua teenuse ühte elementi, kuid lõppkasutajani jõuab toode, millesse on panustanud erinevad tiimid. See tähendab, et arendaja peab suutma hallata arendusprotsessi läbi meeskondadevaheliste kokkulepete. Selleks tuleb aru saada, millised on teiste probleemid, oskama selgitada enda muresid ja pakkuda välja lahendusi. 

See on emotsionaalselt raske töö, mis ei ole suunatud ainult tehnilistele oskustele, vaid ka suhtlusele ja empaatiale. Kõige keerulisem on lasta lahti enda peas olevatest ideaalsena näivast arusaamadest. Tuleb armuda probleemi, mitte lahendusse. Kui armume lahendusse, siis üritame seda pidevalt parima variandina teistele maha müüa. Probleemi armudes suudame jääda lahenduse otsimisel paindlikuks, mis viib paremate tulemusteni.

Kas arendajatena võivad läbi lüüa ka näiteks ajaloolased, filosoofid ja muude elualade esindajad, kes ei ole õppinud elukutselisteks programmeerijateks?

Jah, kindlasti. IT-valdkonnas on tasuta kättesaadavate õppematerjalide arv tohutult suur. Programmeerimiskeelte või -platvormide õppimisele ei eksisteeri sisenemisbarjääri.

Infotehnoloogias töötavad inimesed kipuvad mõtlema struktuurselt. Suuremaid probleeme jaotatakse väiksemateks ja süsteeme taandatakse komponentideks. Vaadatakse maja, kuid nähakse vundamenti, kandvaid konstruktsioone, aknaid ja uksi. Kui selline mõttelaad on olemas, siis on programmeerimise õppimine oluliselt lihtsam. See on isikuomadus, mida ei saa kaasa ülikoolist või varasematest õpingutest.

Kõige leidlikumad lahendused tulevad inimestelt, kes ei ole teadlikud mingi spetsiifilise valdkonna tavadest ja probleemidest. Kui Markus Villig lõi Bolti, siis tal ei olnud juhilubegi ja taksondusest ei teadnud ta eriti midagi. Ta nägi ainult äriprobleemi ja kuna ta ei olnud valdkonnaga seotud, siis sai ta hakata seda probleemi lahendama emotsioonivabalt. Erinevate kogemuste ja taustadega tiimid on alati kõige tugevamad.

Jääb mulje, et arendajad on peamiselt noored. Kas tarkvaraarendus ongi ainult noorte pärusmaa või võib mõni 30ndates ja 40ndates karjäärivahetust kaaluv inimene ka arendajaks saada?

Töövaldkonda vahetanud inimestest on näiteid palju. Kui on olemas süsteemne mõtlemine ja valmidus õppida midagi uut, siis on kõik võimalik. Sisenemisbarjäär IT-valdkonda on aja jooksul tohutult langenud ja arendajaks võivad saada kõik.

Minu arvates ei ole vasta ka tõele, et suurem osa arendajatest noored. See ehk tundub nii, kuna tegu on tohutu kasvusurve all oleva sektoriga. Pidevalt vajatakse uusi inimesi, keda tuleb tööturule juurde eelkõige noorte inimeste näol. Vanemad on sageli enda rolli juba leidnud ja liiguvad seetõttu valdkondade vahel harvemini. Microsofti tiime vaadates ei saa kindlasti öelda, et arendajad on ainult noored.

Millega peab arvestama inimene, kes plaanib tulla Microsofti arendajaks?

Sind ootab ees suhteliselt kompleksne ja keeruline teenusteportfell, mida pakutakse globaalselt väga suurele hulgale kasutajatele. Ma arvan, paljusid inimesi motiveerib meie juurde tööle tulema võimalus teha suuri asju. Väikesest Eestist saab mõjutada sadade miljonite inimeste igapäevaelu. Äge on ka see, et Microsoft on globaalne organisatsioon. Meie töötajad puutuvad kokku väga erinevatest kultuuridest ja rahvustest inimestega.

Meie palkamisfilosoofia on suunatud kasvule ja avatusele. Palkamisprotsessi käigus teeme kindlaks, kas inimesel on vajalikud tehnilised oskused, kuid lisaks sellele otsime ka kõrge stressitaluvusega häid suhtlejaid, kes oskavad jooksvalt probleeme lahendada.

Mis on DigiPRO ja kes seda teevad? Loe siit

Populaarsed lood mujal Geeniuses

Telli Geeniuse kõige hinnalisemad lood oma postkasti

Saadame sulle igal argipäeval ülevaate DigiPRO ja Ärigeeniuse olulisematest lugudest.