.st0{fill:#FFFFFF;}

IT arenduse õppimine – 6. semester 

 February 3, 2025

By  Marko Rillo

Pole pikka aega oma õpingutest miskit lisanud. Nüüd sügisega sai olulisem sisuline pool ühele poole enne lõputöö kallale asumist. Niisiis peegeldan meeldetuletuseks kõigepealt oma seniseid ponnistusi IT õppimisel:  1. semester2. semester3. semester4. semester, vahepealne akadeemilise puhkuse periood ja 5. semester.

Niisiis lasin ChatGPT-l genereerida taas enda foto põhjal ühe keskealise tüübi pildi, kes veebirakendusi koostab, et tähistada õppetöö sisulise osa lõppu. Sel semestril sai läbi õppekava kaks viimast sisulist kursust: “Java veebirakendused” ning “Hajusrakendused”. Mõlemad kursused on keskendunud kummalise eestikeelse termini “täispinu rakenduste” ehitamistele, mida inglise keeles tuntakse pisut paremini kui full stack development. Samuti sai ühele poole ka ettevõttepraktika, mistõttu ÕISi leht näitab iga sektsiooni ees linnukest. Teha on veel lõputöö (6 EAP).

Kirjutan mõlemast kogemusest pisut põhjalikumalt.

Veebirakendused Java baasil (ICD0011)

Nagu 5. semestri järgselt kirjutasin – selle kursuse nimetus on ebatäpne. Kursuse tulemusena ei sünni kasutatavat terviklikku veebirakendust nagu Kalmo varasemas ICD0007 PHP veebirakenduste kursusel, millest 1. kursuse lõpus kirjutasin. “Veebirakendus” siin kursusel on tagarakenduse API. Klientrakendusega sidumisest oli juttu vaid paaris loengus ja lühidalt ühes videoseminaris.

Kui eelmisel aastal jäi mul see õppeaine sooritamata, siis sedapuhku õnnestus tulemuseni jõuda. Nagu juba varasemalt kirjutasin – õppejõud lülitab kooli arvutites eksami ajaks interneti kinni. Niisiis tuleb ülesannete lahendamiseks koodi kirjutada peast. Ainsa abimaterjalina said kasutada kursuse jooksul ise koostatud kodutöid. Ehk aine läbimise eelduseks on Java süntaksi nii hea tundmine, et olla suuteline koodi kirjutama sisuliselt “valge paberilehe ja pliiatsi abil” või siis olid kodutööde koostamisel erinevad alternatiivid nii hästi läbi mõelnud, et suutsid oma esialgset koodi asetada sarnasesse konteksti.

Eksamil positiivse tulemuse saavutamiseks võtsin ennast muudest töödest vabaks ja keskendusin 3 nädala vältel olulisemate Java süntaksil tuginevate ülesannete lahendamisele. Kasutasin seejuures aktiivselt AI abi. Nimelt lõin Claude.ai abiga eraldi projekti, millele andsin ette erinevad Java veebirakenduste näidisülesanded ja lasksin Claude’il iseenda jaoks genereerida nende põhjal erinevate variatsioonidega lühikesi ülesandeid, mille käigus pidin ilma välist abi kasutamata väikeseid Java veebirakenduste komponente ise valmis tegema. Lasin Claude’il koostada igal korral konkreetse ülesandepüstituse ja selle testimiseks ühtlasi selle testimise klassi, mille abil oli kohe võimalik enda lahenduse õigsust kontrollida.

Selline igapäevane harjutamine võimaldas lõpuks jõuda nii piisava vilumuseni, et sedapuhku sai õppeaines positiivse tulemuse kirja.

ITB2203 – Infosüsteemide arendamine III: hajusrakendused

Teiseks õppeaineks võtsin sedapuhku äriinfotehnoloogide õppekavast hajusrakenduste õppeaine. IT süsteemide arenduse õppekaval annab selle aine ekvivalenti Andres Käver. Selleks on õppekava viimases versioonis lausa kaks ainet: ICD0024 Veebirakendused C# baasil ja selle edasiarendus ICD0025 Hajussüsteemide arendus. Otsustasin katsetada sedapuhku teise õppekava sama sisuga õppeaine kasuks, et saaks kogemust võrrelda.

Äriinfotehnoogide aine õppejõududeks on programmeerijatest ja õppejõududest kaks venda: Tarvo Treier ja Tauno Treier. Õppeaine raames on võimalik C# raamistikus ette valmistada veebirakenduse tagarakendus (andmebaas, äriloogika ja API kiht) ja Javascript / Vue abiga koostada eesrakendus, millega tagarakendusega interaktsioonis olla.

Õppaines moodustasid osalejad 3-5-liikmelised tarkvaraarenduse tiimid, mis hakkasid ühiselt arendusprojekti teostama. Tiimid moodustati vaba valiku põhjal, kus enamasti sattusid kokku varasematel õppeaastatel koostööd teinud sõbrad. Mina külalisena hõikasin välja lihtsalt ennast huvitava teema ja rõõm oli, et Trever, Kevin ja Eva-Liis otsustasid minuga liituda. Hakkasime ühiselt välja töötama lihtsalt veebirakendust, mille põhjal Helge veebirakendust saaks laiendada ka 1:1 tööle. Semestri lõpuks on tiimitöö eesmärgiks saada valmis toimiv veebirakendus.

Õppeaine koosneb loengutest, praktikumidest ja rühmas tehtavatest individuaalsetest töödest. Kohustusteks on arendada ja kaitsta rühmades terviklik veebirakendus, raporteerida iganädalaselt oma arenduseks ja õppetööks kasutatud tunde kasutades selleks kas Toggl’it või Clockify’d, täita kolm individuaalset ülesannet erinevate õppevideote peegeldamiseks ja lõpuks läbida edukalt kontrolltöö ja eksam.

Kord nädalas saavad õpilased üheskoos kokku, et omandada uusi teadmisi: ühiselt teostatava projekti määratlemine, selle kasutajanõuete koostamine, visuaalsete vaadet loomine Figmas, andmemudelite disain, .NET raamistiku põhjal RESTi realiseerimine, PostgreSQL andmebaasi loomine, RESTi simuleerimine ja testimine, VUE routeri realiseerimine, kiire sissejuhatus GraphQL teemasse, Dockeri konteinerite häälestamine ja Azure’i pilve seadistamine. Selle käigus andsid õppejõud ette hulga praktilisi ülesandeid, mis imiteerisid järgnevaid rühmatöid.

Rühmatööde raames tuli imiteerida tarkvaratiimi tegevusi. Selleks loodi olulisemad kokkulepped:

  • Rühmatööde käigus tuli kõigepealt jagada ülesanded ja hallata iganädalaselt omavahelist koostööd. Kord nädalas tuli oma rühmaga kokku saada, et teha kiire standup: progress, problems, plans. Igaüks andis ülevaate oma senisest töö tulemustest, kirjeldas olulisemaid probleeme ja tegi plaane järgmiseks nädalaks.
  • Kord iga 3 nädala tagant tuli teha põhjalikum retrospektiiv, mille käigus sai läbi mõelda: start-stop-keep-more-less raamistiku abil kõige olulisemad senised praktikad.
  • Iganädalaselt tuli raporteerida oma rühma liikmete ajakasutust.
  • Kõik ülesanded tuli dokumenteerida Wikide abil. Kirjeldused tuli koostada nii infosüsteemi andmemudeli, visuaalse ülesehituse, funktsionaalsete nõuete, arendusnõuete kui ka paigaldus- ja testimisnõuete osas.
  • Regulaarsete ülesannete täitmiseks tuli hallata Gitlabis ülesannete issue’sid ja iga ülesande täitmisel tuli luua vastav Giti haru, mille funktsionaalsust tuli nõuetekohaselt testida enne selle mestimist lõpliku süsteemiga. Seega õnnestus rühmatööde raames katsetada vabavaraliste arendusvahendite võimalusi tarkvaratiimi juhtimisel. Olles seni kasutanud Atlassiani tasulisi tooteid nii versioonihalduseks, töökorralduseks kui ka dokumenteerimiseks, sai mu maailmapilt kohe hulka avaramaks, et ka lihtsate vahendite abil on võimalik samasuguste tulemusteni nõuda. Alla on lisatud ekraanipilt Gitlab ülesannete haldusest.

Õppeaine lõppes kaheosalise eksamiga. Esimeseks osaks tuli 4 tunni vältel koostada lihtne 3 olemiga veebirakendus, mis oli koostatud C# raamistikul ja mis täidaks ette antud REST API testid.

Teiseks osaks oli suuline vestlus, kus tuli osata vastata küsimustele veebirakenduste olulisemate disainivalikute ja koostamise sammude kohta.

ICY0017 – Ettevõttepraktika

Semestri vältel deklareerisin ja sooritasin ka ettevõttepraktika. Vormistasin selle lihtmenetluse korras. Nimelt võtsin kokku oma senise kogemuse Helge Kool MTÜ tootejuhina, tarkvaraliste arenduste disainis, ise koodi kirjutades ja analüüsisin, et mida IT süsteemide arenduse õppimine on mulle nende ülesannete lahendamisel õpetanud.

Kuidas edasi?

Enda rakursist – õppkava lõpuni on veel jäänud lõputöö. Ühtlasi on mul kavas võtta mõningaid teisi TalTech aineid vabakuulajana.

Peale hajusrakenduste kursust on mulle hakanud üha sümpaatsema alternatiivina tunduma TalTech äriinfotehnoloogia õppekava, kus peale IT arendamise baasoskuste omandamist on järjest 4 semestril mitu 12-EAP-st ainet, mis on sisuliselt justkui suured projektid. Nendes osalejad jaotatakse tiimidesse ja nad hakkavad peale seda simuleerima tarkvaraarenduse tiime:

Olles suhelnud mõne selle õppekava võtnud osalejaga – tundub mulle üha enam, et kui ise peaksin uuesti nullist õpingutega alustama, siis praegusel kujul IT süsteemide arenduse õppekava asemel otsustaksin pigem samuti äriinfotehnoloogia kasuks. Õppekavas on palju rohkem rühmatöid, mis minusugusele ekstroverdile tundub sobivam õppimise viis. Mul on rohkem tarvis kaastudengite nügimist, kellega teemasid läbi arutada ja koostöös tulemusi saavutada.Õppekava terviklik ülesehitus tundub olevat loogilisem – erinevad teemad ehitavad üksteise peale. Õpingutes kasutatavad meetodid tänapäevasemad. Samuti on õppekaval uus eestvedaja Karl-Erik Karu, kes saab eeldatavasti järgmistel aastatel seda õppekava veelgi tänapäevasemaks kujundada.

Aga teisalt – kui võrdlen oma koodikirjutamise oskusi, siis paistab, et IT süsteemide arenduse põhjalikum ekskurss erinevatesse programmeerimiskeeltesse, mis kohustuslikkesse õppeainetesse on kokku koondatud (Python, Java, PhP, C#, SQL, Javascript ja selle erinevad raamistikud – React, Vue, Dart, Swift) – ning samuti süvendatum lähenemine algoritmidesse, võrkudesse, IT infrasse – see kõik annab sügavamad teadmised just infosüsteemide arhitektuuri ja kood kirjutamisega paremini hakkama saamiseks.

Niisiis – ilmselt sõltub kõik sellest, et kas tähtsam on ise süsteemide ülesehitusse panustada või koostöös tulemusi saavutada.

Image ChatGPT prompt: “Kasuta lisatud fotot, et genereerida foto mehest, kes kirjutab arvuti taga istudes koodi – ekraanil võiks olla nähtaval veebirakenduse loomine. Ühel pool ekraanil IDE ja teisel pool ekraani tänapäevane dashboard, mis localhost leheküljel on testimiseks avatud. Lisaks võiks olla laua peal paar telefoni ja tahvelarvutit, milles samamoodi ekraanivaated on lahti, mis demonstreerivad koodi testimist.”

Autorist ...

Marko Rillo on ettevõtja, juhtimiskonsultant ja koolitaja

Blogipostitused:

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}