Havaintoja kevään 2023 Koodiklinikalta – syynissä Ideal Learning Oy:n kahdeksas Koodiklinikka
Jo kahdeksatta vuotta Ideal Learning Oy:n kurssit ovat sisältäneet Koodiklinikan, jossa jokainen opiskelija kertoo, mitä on harjoittelupaikallaan tehnyt harjoittelun ensimmäisen puoliskon aikana. Nyt kun Selma-koirakin on saanut kesäturkin, lienee hyvä aika kirjata havaintoja kevään 2023 Koodiklinikasta.
Keskiviikkona 29.3.2023 Full Stack 2022 kurssi kokoontui jakamaan kokemuksiaan työharjoitteluista. Näimme mitä erilaisimpia toimintaympäristöjä ja ohjelmointivälineitä. Silmiinpistävää 10 opiskelijan esityksissä oli erilaisten valmiskirjastojen käyttö ja toisissa harjoittelupaikoissa harjoitteluympäristön ”kasaaminen” niin, että oppilaiden oli mahdollisimman helppo toimia ympäristössä itsenäisesti, ilman jatkuvan ohjauksen tarvetta.
Tyypillinen ratkaisu, jota käytettiin noin 30% harjoittelupaikoista näytti olevan yrityksen sisäinen projekti, jonka puitteissa harjoittelijoita eli käytännössä uusia työntekijöitä sisään yrityksen tekemiseen. Toinen erinomainen perehdytysmalli tuntuu vuodesta toiseen olevan riittävän yksinkertainen, hyvin määritelty ja tarkkarajainen speksi, jonka mukaan opiskelijan oli suhteellisen vaivatonta lähteä liikkeelle ja tutustumaan yrityksen ohjelmistotekemiseen.
Tutut ohjelmointikielet jylläävät
Ohjelmointikielistä pinnalle nousivat viime vuosien tapaan JavaScript, TypeScript, C# ja C++ ja hiukan eksoottisempana erikoisuutena Dart. Ohjelmointiin liittyvistä käyttöliittymäohjelmointityökaluista törmäsimme Reactiin ja Angulariin. Angularista näimme hyvinkin valovoimaisen pienen demon, joka paljasti hyvin Angularin toimintaperiaatteen ja koodin luonteen: funktioita on paljon ja niitä myös käytetään paljon. Datan käsittely on arkipäivää myös käyttöliittymissä ja funktioiden rooli korostuu.
Pilvipalvelut sovellussuunnittelun infrana
Pilvipalveluiden osalta esityksissä kuultiin niin Azuresta kuin Amazoninkin pilviratkaisuista. Varsinkin räätälöityjä ohjelmistopalveluja näyttävät tarjoavan yleensä ainakin näitä kahta vaihtoehtoa asiakkailleen. Azuren ideasta näimme hyvän yhteenvedon erään oppilaan esittämänä jo kurssin loppuvaiheen erikoistumisjaksolla. Järkevä infra yhdistettynä hyvään ohjelmistosuunnitteluun on ilman muuta niin toimittajan kuin asiakkaankin etu.
Pysyvyysratkaisuissa nähtiin tuttuja kamppeita
Pysyvyysratkaisujen osalta törmäsimme edellisten vuosien tapaan niin relaatio- kuin oliotietokantoihinkin. MongoDB tuntuu edelleen olevan monen yrityksen lempilapsi, mitä dokumenttimallisiin tietovarastoihin tulee. Relaatiokannoissa Microsoftin ratkaisut, postgreSQL ja MySQL näyttävät pitävän pintansa. Myös Microsoftin Azure Cosmos DB mainittiin ja kun Cosmos DB:tä yritettiin määritellä, huomattiin, että joskus on vaikea erottaa pilvessä tarjottavaa pysyvyyteen liittyvää kokonaispalvelua yksittäisestä tietokannasta. Asiakkaalle sillä ei ole niin väliäkään, mutta oppilaan on hyvä tietää, miten dokumenttikannat ja relaatiokannat eroavat. Tämä pätee muidenkin tarjoajien ”pysyvyysalustoihin” tai miksi niitä suomeksi kutsuisikaan.
Käyttöliittymäkomponenttien tyylittely
CSS-määrittelyjen laatiminen on edelleen hyvä osata web-sovelluksia tehdessä, mutta työkalut jylläävät silläkin saralla. Puhtaiden CSS-määrittelyjen sijaan näimme paljon valmiskomponentteja, joiden ulkonäköä ja toiminnallisuutta voidaan muuttaa konfiguroiden itse komponenttia koskematta CSS määrittelyihin. Monet UI-kirjastot, kuten Material UI, tarjoavat paljon mahdollisuuksia konfiguroida paitsi yksittäistä komponenttia, myös koko sovelluksen käyttöliittymää. Erilaiset teemat mahdollistavat helpon perusräätälöinnin asiakkaan nauttia. Material UI:n lisäksi Bootstrap kirjasto oli hyvin edustettuna esityksissä.
Websocketit
Harjoitteluissa törmättiin myös Websockettien mahdollisuuksiin. Useammassakin esityksessä pohdittiin Websockettien käyttämissä tietyissä harjoittelun aikana vastaan tulleissa ongelmatilanteissa. Ideal Learningin kursseilla vuosia kommunikaatioteknologioita opettaneen todellisen seniorin Tino Pyssysalon opit eivät siis menneet tälläkään kertaa hukkaan.
Websockettien osalta tuli esiin sama ilmiö kuin aiempinakin vuosina – aika harva yritys on ottanut ko. teknologiaa käyttöön, vaikka käyttötapauksia voisi ollakin. Tosin, näinhän teknologiat usein omaksutaan – ensin hitaasti, sitten nopeammin.
ChatGPT
Osa opiskelijoista on käyttänyt hyvällä menestyksellä ChatGPT:tä harjoittelun aikana. ChatGPT osaa antaa hyviä vinkkejä ja osaa myös kertoa, missä ohjelmassa mahdollisesti piilevä bugi on. Kannustamme kaikkia kokeilemaan ChatGPT:tä eri tilanteissa. Myös eräs vuosia harjoittelijoita palkannut asiakkaamme oli kiinnittänyt asiaan huomiota. Otamme ChatGPT:n opetuskäyttöön syksyllä alkavalla kurssillamme.
Funktiot ja sivuvaikutusten merkityksen oivaltaminen isossa roolissa Reactissa ja Angularissa
Jo useamman vuoden ajan opetuksessa painottamamme teoreettisluonteinen seikka on osoittautunut yhä tärkeämmäksi jokaisen ohjelmoijan ymmärtää. Kyse on tietenkin sivuvaikutuksen käsitteen ymmärtämisestä ja käsitteen soveltamisesta.
Oli kyse sitten Reactista tai Angularista, pelkästään dokumentaation ymmärtäminen edellyttää hyvää perusymmärrystä niin puhtaista funktioista kuin sivuvaikutuksistakin, mistä hyvänä esimerkkinä toimii lause Angular-kirjaston dokumentaatiosta: ”A pure pipe must use a pure function, which is one that processes inputs and returns values without side effects.”.
Moderni fornt end-kehitys on luonteeltaan entistä enemmän datan käsittelyn deklaratiivista kuvaamista. Jos sivuvaikutuksen tai puhtaan funktion käsitteet tuntuvat epäselviltä, Reactin tai Angularin kaltaisten kirjastojen soveltaminen jää usein puolitiehen, mikä ilmenee myöhemmin ohjelmiston laatuongelmina.
Terveisin
Juuso Vuorinen ja kumppanit
Ideal Learning Oy
”Turkki lähti, saa kevät nyt tulla, aika lämmin jo olikin mulla”, taitaa Selma-koira mielessään riimitellä.