Mis teeb IT süsteemide arendamises kellestki professionaali, mis teda asjaarmastajast eristab. Tegemist on 8. nädala mõtisklusega ITSPEA kursuses, mille üldteemaks on IT proff…?.
Professionaalsuse ja amatöörluse piiri iseloomustamiseks olen pannud postituse päisesse metafoorina foto, mis näitab sama asukoha pildistamist “professionaalsel” või “amatöörlikul” moel. See on viis, kuidas me klassikaliselt amatööri või asjatundjat arvame eristavat.
Ma väidan oma tänases postituses, et tegelikult on piirid amatööri ja professionaali vahel hägustunud. Pigem peaksime tegelema mõningate ohtlike müütide purustamisega. Tänaseks on läinud paradoksaalselt hakanud laialt levima kaks vastupidist arusaama. Üks neist väidab, et programmeerimine on imelihtne. Teine väidab risti vastupidist – et programmeerimine on väga raske.
Väidan, et mõlemad äärmuslikud arusaamad võiksid ümber muutuda ja hea oleks omada vahepealset – realistlikku mõistmist. Parem maailmapilt võiks olla selline, et kindlasti on tarvis pingutust mis aitab inimesel paremaks saada. Aga samas ei peaks tekitama kellegi jaoks üleloomulikke nõudeid, et nad pingutuse tulemusel ka vaimselt terveks jääksid.
Õppejõud on küsinud:
Mis asi see professionaalsus IT valdkonnas on? Milline omadus võiks kõige enam eristada “proffi” sama eriala “käsitöölisest”?
– Kaido Kikkas
Hariduse ja tehnoloogia ühenduskohtade tagamaadest
Käesoleva nädala teema võtab kokku hariduse ja tehnoloogia. Esialgu tundus see teema päris lihtne. Igaüks oskab ju hariduse kohta midagi arvata. Aga seejärel jooksin alustamisega tupikusse – kuna mõlemad teemad on mulle südamelähedased, siis tekkis mõtiskluse kirjapanemist mõttekramp, et millele täpselt keskenduda, sest arutleda oleks ju nii palju üle.
Üks alternatiiv tundus olevat fookusesse võtta midagi isiklikku. Analoogselt varasemate postitustega siin blogis, kus olen analüüsinud oma õpingute algust IT Kolledžis või läinud oma isiklike koodikatsetuste ajalukku. Isiklike peegelduste kasuks räägiks võimalus olulisemaid sihte paika panna edaspidiseks.
Teine alternatiiv olnuks võtta enda tähelepanu alla just vastupidi – pisut süsteemse ja laiema fookuse – et mis eeldused tööõpetuse õpetamise juures üldse võimaldavad õpilastel tehnoloogiaõppe juurde tulla. Sest meil on riigis ju laiemalt tehnoloogia-alase teadmisega suuri väljakutseid, millega rinda pista. IT spetsialistidest on puudus. Tehnoloogiaharidus kaldu pigem matemaatika ja meessugupoole suunas. Lahenduste otsimisel on meie väärtusloome fookus sageli käsitööl – vidinate loomisel ja me riigis tervikuna ei suuda tehnoloogiat nii hästi rahaks teha kui potentsiaalselt võiksime. Ehk sisuliselt makrotasandi vaade.
Kolmas võimalus on keskenduda mikrotasandile. Üksikisikule, aga selle abstraktses plaanis. Paralleelselt selle nädala ITSPEA foorumis tõusetus samuti mitu huvitavat postitust küsimuste kohta, et mis ikkagi teeb professionaali. Kas selle eelduseks on suur hulk eeltööd, sertifikaate või reaalsed kogemused ja tulemused.
Niisiis otsustasin pigem provotseerida ja esineda käesolevas blogipostituses pigem müüdimurdmise vormis ning püstitada müüdid seejuures üksteist välistavate maksiimidena.
Müüt 1 – programmeerimine on imelihtne
IT spetsialistide pidev puudus on viinud viimased 20 aastat olukorrani, kus IT haridust propageeritakse nii riigi kui erasektori entusiastide Eestis süsteemselt ja regulaarselt. Programmeerimise algõpe viidi alguses põhikooli tasemele, siis algkooli ja nüüd lausa lasteaeda. Tehakse arvutiringe, korraldatakse koodikirjutamise võistlusi, suvelaagreid, koolides toimuvad häkatonid.
Regulaarselt käivad IT inimesed ja TalTech õppejõud gümnasistidele rääkimas karjääripäevade raames õppekavast ja oma kogemustest, et rohkem noori veenda ette võtma samme tehnoloogiahariduse ette võtmisest.
Robert Laursoo on oma blogis kirjutanud, et tema hinnangul on IT hariduse turunduskommunikatsioon eksitava loomuga kui räägitakse, et koodi kirjutamine on lõbus ja lihtne. Mõnel IT ametite päeval võib mõni energiline alustaja kirjeldada entusiastlikult oma kogemust kuidas peale 3-kuulist baaskogemuste omandamist sai ta magusa ameti miljardiväärtusega ettevõttes. Justkui ühe semestri läbimise järel elementaarse koodiloogika omandamine on piisav ja ammendav, et teha kellestki täispinu arendaja.
Tegelikkuses võetakse näiteks TalTech infotehnoloogia erinevatele erialadele esimesel semestril vastu ca 550-600 värsket tudengit ja – nagu kirjutasin enda esimest semestrit kokku võtva blogipostituse juures lahti: esimese kursuse suurte vooruloengute raames langeb neist ca 1/3 välja.
Niisiis selgub, et juba esimese semestri vältel osutub reaalsus hoopis teistsugusest sellest, mida räägitakse.
- Pingutada tuleb jube palju – ainuüksi programmeerimise algkursuse – ehk teisisõnu sissejuhatava 6-EAP-se ainega miinimumtasemel hakkama saamiseks tuleb semestri teises pooles vähemalt iga nädal veeta kaks täispäeva koodi kirjutamas, et lahendada erinevaid algoritmilisi väljakutseid, mis on veel suhteliselt kaugel päris programmeerija tööst ja meenutavad pigem mõttemänge Pythoni koodi abil. Üksjagu on neid, kes sel hetkel tõdevad, et koodi kirjutamine ei vastagi nende ideaalpildile sellest, mida arvuti taga teha.
- Millegipärast tuleb kohe hakata keskenduma diskreetse matemaatika maailma, mis oma sisult on samuti lihtsalt mingid kummalised loogikamängud, millest enamikel sisse astunutel kipub juhe kokku jooksma.
- Sinna otsa veel kursused, kus tuleb mööda kolledži maja joosta, et kaableid ühendada ning üritada ruuterist switchi mingeid käsklusi saata. Nojah – kaablite tassimisega võiksid ju rauainsenerid tegeleda?
- Lisaks veel õpime loogikat, süsteeme, sissejuhatust tehnoloogiasse ja eetilisi väljakutseid. Taas tundub justkui asi, mida päris programmeerijana kuidagi tarvis ei lähe!?
Selle hüperbooli-laadse loetelu võiks siin lõpetada ja samamoodi tongue-in-cheek varjundina esitada küsimuse – kas TalTechi IT Kolledž tuleks kaudselt eksitava reklaami kasutamise eest vastutusele võtta reklaamiseaduse rikkumise alusel:
“Reklaami loetakse eksitavaks eelkõige siis, kui see annab eksitavat teavet kaupa, teenust, kauba müüki või teenuse osutamist iseloomustavate järgmiste asjaolude kohta: kasutusotstarve ja kasutamisest saadav tulu;”
Reklaamiseaduse (RT I 2008, 15, 108) paragrahv 4 lg 2 p 2
Kui ikka IT päeval on välja pakutud, et parimate programmeerijate tasu on 5-kordselt kõrgem keskmisest palgast. Kui keegi teine seal kõrval räägib, kuidas peale esimest semestrit sai ta praktikale ja seejärel juba palgale vinge tööandja juurde, siis jõudes oma stuudiumiga mõned kuud ühele poole jõutakse ootuste ja reaalsuse konfliktini, mis viib lõpuks väljakukkumiseni.
Kui nüüd mõelda, et äkki on asi lihtsalt selles, et konkreetses koolis on õppeainete valik tehtud otstarbetult teoreetiliseks ja pingutust nõudvaks, mida igapäevaelus tarvis pole, siis võib vabalt vinti peale keerata näidates, et sarnase reklaamiga on ka teisi koole. Näiteks siin kirjeldab UC Berkeley kuidas nende avatud kursusel osaledes võib baasoskustest ja keskendumisest sõltuvalt saada kellestki täispinu arendaja kas 3, 6 või 12 kuu jooksul.
Jällegi – ka Berkeley reklaamis keskendutakse ennekõike väljundnäitajatele. Palk, mida sa hakkad teenima on see ja teine. Pingutus, mida sa sisse paned on selle kõrval köömes. Kui lugeda Redditis mõningate inimeste kommentaare, kes 2 aastat peale Berkely Computer Science täisprogrammi lõpudiplomi kätte saamist kurdavad, et nad pole jätkuvalt ametit leidnud, siis paratamatult tekib samamoodi küsimus. Kas reklaam on eksitav? Milles siis asi on? Et kui ühest väidetavalt maailma parimat tarkvaraarenduse hariduse saanud inimesest pole tööturul asja, siis tekib küsimus, et kas tegemist on lihtsalt üksiku erandit kinnitava reegliga või tulekski tõdeda, et tegelikkuses pole sellel müüdil alust?
Ootused vs reaalsus?
Et tegelikkuses on programmeerimise õppimine siiski suhteliselt keeruline ettevõtmine, mille kohta Fred Brooks kirjutas mitu aastakümmet tagasi, et tarkvaratehnikas ei ole hõbekuuli, mistõttu probleemide komplekssuse kasvades ühtlasi süsteemide komplekssus kasvab ning sellest johtuvalt oleks meil naiivne arvata, et üksik programmeerija suudaks sääraste süsteemide mõistmisega üldse toime tulla.
Ülaltoodule võiks ilmselt veel lisada, et paljude koodikirjutajate jaoks on ilmselt arusaamatu, et parimate 3D first person mängude programmeerimiseks ei piisa lihtsalt paari semestri tööst vaid, et nimetatud mängustuudiotes töötab nende lahenduste kallal mitmesajast inimesest koosnevad tiimid mitmeid aastaid enne kui AAA-kategooria mäng lõpuks kättesaadavaks tehakse. Ehk kui üritada mingit metafoori luua – see, et sa oled ehitusteaduskonna lõpetanud ei tähenda, et oleksid üksinda võimeline Burj Khalifa sarnase ehitise püsti … või pikali panna. :-).
Burj Khalifa – küliliasendis (sest nii on lõbusam). Allikas: https://en.wikipedia.org/wiki/Burj_Khalifa
Nagu ehitusteaduskonna lõpetamine ei loo eelduseid üksi pilvelõhkujat ehitada nii ka IT teaduskonna lõpetamise tulemusel ei valmi veel ühtegi AAA-kategooria mängu.
Ehk teisiti – ITd õppides on oluline mõista, et see võtab esialgsest kauem aega ja isegi siis on parimal juhul võimalik omandada teadmised, et kuidas hakata tegema tööd ühe tiimi liikmena, kes ühises koostöös hakkab suuri süsteeme ehitama
Müüt 2 – programmeerimine on ülikeeruline
Samamoodi on võimalik argumenteerida vastupidise äärmuse kasuks. On hulganisti neid, kes väidavad teistpidi, et programmeerimine on väga keeruline. Sellega saavad hakkama ainult tõsiselt pühendunud inimesed, kes on aastaid tegelevad oma oskuste arendamisega ja nende teadmiste omandamise protsess ei saa iialgi lõplikult valmis. Enne kui üldse kuidagi süvenema hakata, peaks endale selgeks tegema matemaatika kõrgemad sfäärid. Samuti peaks tundma rauda, kaableid, bitte ja baite, infosüsteemide ajalugu ning legacy süsteeme.
Kui liikuda sellesse teise äärmusesse – siis Kamran Ahmed on valmis joonistanud õpigraafikud, milles ta kirjeldab erinevad õpirajad, mil viisil iseõppijast tarkvaraarendaja võiks alustada oma oskuste omandamist sõltuvalt sellest, et kas teda huvitab pigem veebilehtede esiotsa või tagaotsa arendamine.
Alustame ülalt peale – see näeb kõik välja ju väga vahva. On olemas terve rida baaskompetentse, mida nõutakse igas IT arendamisega seonduvas ametis, aga seejärel võid teha nagu DuoLingos ja valida endale sobiv rada, mida mööda on võimalik hakata astuma kompetentside omandamiseks.
Tundub küll esialgu lihtne, aga kui detailidesse minema hakata, siis jätkub nimetatud õpirada veel lehekülgede viisi. Iga konkreetne kastike selles õpirajas sisaldab mitmeid nädalaid, mõnikord terveid kuid taustatööd enne kui põhialused kätte saab.
Säärast loetelu on ühest küljest väga mõnus vaadata. Keegi on üles loetlenud põhilised valikud ja nende alternatiivid. Saad otsustada, et kas eesrakenduste ehitamisel on sinu eelistuseks React või Vue või Angular. Kas tagarakendustes tõmbab sind käima pigem andmebaas, API või arhitektuur.
Teisest küljest süvendab säärane pilt esmapilgul aga samuti lootusetuse tunnet. Kuna see lõpeb fraasiga “Keep Learning”, siis tundub see lõputu peade arvuga draakoni jõllitamisena. Sõltumata sellest, kui palju neist suudaks maha raiuda – lõpuni ei jõua mitte iial.
Pygmalioni efekt?
Teiseks oluliseks teemaks, mis tehnoloogiahariduse barjääri ja eeldusena üles loetletakse on matemaatikaoskus. Näen paraku oma lähikonnast väga markantseid näiteid, kuidas oskamatud matemaatikaõpetajad suudavad juba 10-aastastes õpilastes tekitada hirmu ja oskamatuse tunde. Räägitakse pidevalt, et matemaatika on raske. Et matemaatika ülesannete tegemiseks peab tegema rasket tööd. Et mitte midagi ei tule lihtsalt. Et pidev töö ja raske vaev on see, mis lõpuks oskused annab.
Pideva vaeva ja keerukuse korrutamisega viiakse õpilaste ärevus nii üles, et nad loobuvad elementaarsest pingutusest juba esimeste raskuste ilmnedes. Seepeale tänitavad õpetajad enda poolt tekitatud Pygmalioni efektile kaasa ja ütlevad: “No mis ma ütlesin. Te oletegi rumalad. Ei saagi aru. Peate rohkem pingutama!” kuni isetäituv ennustus täidabki ennast.
Et matemaatikat loetakse mõnevõrra ebaõiglaselt IT õppimise eelduseks – kuigi on vähemalt üks hiljutine uuring, mis väidab, et keeleoskus on isegi parem prediktor programmeerimisoskusele. Siis mitmed heade eeldustega inimesed võivadki loobuda IT arenduse peale mõtlemast.
Samal ajal on suur osa koodi kirjutamisest praktikas pigem igapäevane lihtne ja loogiline probleemide lahendamine. Ehk programm – kui on selline olukord, siis tee seda. Et baastasemel pythonis sedalaadi käskluste jagamine mõnes lihtsamas IDEs (näiteks Thonny) on kättesaadav ja mõistetav isegi suvalisele 10-aastasele, siis äkki õnnestub ka seda äärmuslikku müüti murda.
Amatöörid – tere tulemast!
Niisiis – jõuaksime selle arutluskäigu lõppu. Mina loodan, et mõlemad müüdid saaksid purustatud ja programmeerimise juurde tuleks üha rohkem amatööre.
Mis siis on asjaarmastaja vastavalt sõnaraamatu definitsioonile?
Kui vaadata sõna “amatöör” algeid (amare – armastaja), siis viitab see teisele kenale eestikeelsele sõnale: “asjaarmastaja”. Ehk äkki hakkaks sellega tegelema rohkem neid, kes tehnoloogiaga tegelemisest tunneksid mõnu. Kes ei tuleks valdkonda mite pettuma kui lootes lihtsat raha teenida või kiiret karjääri teha need ootused ei täitu.
Amatöör (asjaarmastaja. Vastand professionaal, elukutseline. Raadio+amatöör. Foto+amatöör = amatöör+fotograaf, filmi+amatöör = amatöör+filmija, vrd amatöör+foto, amatöör+film asjaarmastaja tehtud foto, film.
https://www.google.com/search?q=amateur+word+origin
Samuti – et need, kes tegeleks koodi kirjutamisega lihtsalt huvitavate või vajalike probleemide lahendamise eesmärgil ei heituks oma omaaegsete matemaatikaõpetajate süül vaid saaksid hakata panustama ja tegelema lihtsalt mõnu pärast.