Hiljaaegu avaldasime blogis loo „TÜ tudengid saavutavad programmeerimisvõistlustel suurepäraseid tulemusi“. Et avada võistlusprogrammeerimise telgitaguseid, vestlesime ettevõtja Targo Tennisbergiga. Ta on Eesti informaatikaolümpiaadi üks eestvedajaid ning avaldanud Võistlusprogrammeerimise õpiku (PDF).
Mis vahe on “tavalisel” ja “võistlusprogrammeerimisel” ?
Umbes sama vahe nagu liinibussi ja ralliauto juhtimisel. Mingid oskused on samad, aga hulk asju on ka erinevad. Rallis ei ole vaja suunda näidata ja reisijatega suhelda, kuid peab oma autot suuremate peensusteni tundma ja mitmesuguseid täiendavaid juhtimisvõtteid valdama. Samamoodi pole võistlusel vaja arvestada mitmete asjadega, mida tarkvarafirmas tarvis läheb, kuid tuleb tunda paljusid täiendavaid nippe.
Miks hakkasid tegelema informaatikaolümpiaadidega?
Ma ise osalesin olümpiaadidel veidi üle 20 aasta tagasi. Sellegipoolest on mul siiani palju kasu olümpiaadil omandatud oskustest ja harjumustest. Tarkvaraarenduses tuleb pidevalt ette ilma selgete vastusteta probleeme nagu “see süsteem on aeglane, tehke ta kiiremaks”, “programmi kasutamine on keeruline, kuidas saaks lihtsamalt” kuni selleni, et “mida teha, et ettevõte teeniks rohkem raha.” Kõigile neile saab läheneda nagu olümpiaadiülesannetele – analüüsida lähteandmeid ja piiranguid, eristada oluline ebaolulisest ning luua fokuseeritud lahendus.
Teiselt poolt on suureks kasuks olnud konkreetsed tehnilised oskused. Väga palju tänapäeva tarkvara tehakse nö jõumeetodiga, mõtlemata kuigi palju sellele, kas kusagil saaks kasutada efektiivsemaid algoritme või hoiduda liiga suurte andmehulkade tarbetust ühest kohast teise liigutamisest. Ja kui sinu klient on juba valmis kulutama miljonit täiendava riistvara ostmiseks, on päris tore olla see kangelane, kes süsteemi äkki 10 korda kiiremini tööle paneb.
Soovin, et enamatel tarkvarainseneridel oleks sarnane kogemus, nii suudaks me luua palju kõvemaid lahendusi nii Eesti kui ka kogu maailma jaoks. Seetõttu katsungi ühiskonnale midagi tagasi anda just olümpiaadikorraldamise kaudu.
Milline on võistlusprogrammeerimise hetkeseis Eestis (nt võrreldes naaberriikidega)?
Eesti suur probleem on see, et meie üldhariduskoolides õpetatakse programmeerimist ülivähe, mistõttu ka olümpiaadile sisenejate arv on võrreldes kasvõi matemaatika või füüsikaga palju väiksem. Enamik osalejaist on iseõppijad, keda me olümpiaadiga seotud ürituste käigus toetame.
Mõned aastad tagasi kirjutas välisajakirjandus hoogsalt, kuidas Eestis hakkavad kõik esimese klassi lapsed programmeerima, kuid tegelikult midagi sellist ei toimunud. Samas Soome hakkas nihelema, et äkki eestlased “lähevad ette” ning investeeris ka päriselt programmeerimise õppesse. Praeguseks on näiteks keskkooli astmes nende keskmine tase nähtavalt kõrgemale tõusmas.
Kuidas sai teoks programmeerimisvõistluse õpik ja kuidas sellel läheb?
Kuna vajalikke teadmisi koolist ei saa, on informaatikaolümpiaadi toimkond juba palju aastaid korraldanud õppesessioone, kus vajalikke algoritme õpetatakse ning ülesandeid lahendatakse. Paar sessiooni aastas on vähevõitu, seetõttu tahtsin algatada Teaduskoolis vastava kursuse. Kursus vajab aga õppematerjali ning ka see tuli otsast peale luua. See oli ootamatult suur töö, aga õnneks sai finantstuge nii ATI-lt (TÜ arvutiteaduse instituut – toim), Teaduskoolilt kui ka eraettevõtetelt.
Nüüd toimubki teist aastat sissejuhatav võistlusprogrammeerimise kursus ning esimest aastat selle jätkukursus. Loodetavasti aitab see meil ka võistlejate pinki edaspidi pikendada.
Mida soovitaksid noortele, kes sooviksid programmeerimisega rohkem tegeleda?
Tänapäeval on nii programmeerimise kui kõige muu õppimiseks rohkem võimalusi kui kunagi varem. Olen oma lapsi suunanud läbi järgmise kolmeastmelise kava:
- Mulle väga meeldib raamat “Õpime üheskoos programmeerima” (https://www.apollo.ee/opime-uheskoos-programmeerima.html), see on väga sobiv juba 10-11 aastastele.
- Kui esmane aimdus olemas, võib proovida online-kursusi, näiteks Tartu Ülikooli kursusi – programmeerimine.ut.ee. Kui neid parajasti toimumas ei ole, on hea võimalus CodeAcademy Pythoni kursus – https://www.codecademy.com/learn/learn-python
- Edasi saab juba spetsialiseeruda – kas tahad teha mänge, luua veebisaite või osaleda võistlustel. Võistlusteks ettevalmistamiseks sobivad hästi Teaduskooli vastavad kursused, mis järgivad mu enda õpikut, vt https://www.teaduskool.ut.ee/et/kursused#Informaatika
Miks on TÜ tudengid edukad ja kuidas tulevikus taset veelgi kasvatada?
Väikese osa kirjutan selle arvele, et mõned aastad tagasi hakkasime olümpiaadi raames promoma ja premeerima mitmesugustel online programmeerimisvõistlustel osalemist. Harjutamine teeb meistriks ja nüüd on esimesed selle metoodika viljad ülikooli jõudnud.
Teiseks tunnustab ATI selliseid saavutusi praegu rohkem kui varem.
Aga suurim roll on mõistagi sellel, et poisid on ise lihtsalt kõvasti tööd teinud, tulemused sõltuvad otseselt õppimisest ja harjutamisest.
Tuleviku osas on suurim küsimus järelkasvus. Nagu ka spordis, võtab võistlusprogrammeerimises enda potentsiaali täielik väljaarendamine mitmeid aastaid, kauem kui ülikooliprogrammi kestus. Et ülikooli võistkonnas rahvusvaheliselt edu saavutada, tuleb alustada juba varem ning siin on määravaks jällegi see, kui palju õppimisvõimalusi on huvilistel õpilastel enne ülikooli tulekut.
Lõpetuseks: su enda lapsed tegelevad koolis võistlusprogrammeerimisega. Kas suudad neid ise kiiruses veel ületada?
Juba ammu mitte, see on ikkagi sport, mis nõuab vormis püsimiseks pidevat osalemist 🙂