Sinä vastaat osaamisesi kehittämisestä

Osaamisen kehittämisessä työnantajalla ja esimerkiksi työvoimahallinnolla on oma roolinsa. Työnantaja voi tukea osaamistasi tarjoamalla kursseja tai hyväksymällä osan työajasta käytettäväksi opiskeluun. Työvoimahallinto taas voi tukea osaamistasi koulutuksilla. Esimerkiksi BearIT:n tarjoamat LearnIT-koulutukset ovat osoittautuneet erittäin tehokkaiksi ohjelmistoalan osaamisen kehittämisessä ja työllistymisessä. Oppiminen on kuitenkin lopulta kiinni itsestäsi ja omasta aktiivisuudestasi.

Ohjelmistoala on siitä hyvä oppimisen mahdollisuuksien kannalta, että myös itsenäiseen opiskeluun tarkoitettuja kursseja on tarjolla erittäin paljon. Suuri osa esimerkiksi Youtube-kursseista ei kuitenkaan ole laadukkaita, ja ongelmana usein onkin löytää riittävän hyviä kursseja ammattimaisen koodauksen opiskeluun. Haasteena on usein myös, kuinka suunnata rajallinen aikansa niihin aihealueisiin, joilla on paremmin kysyntää työmarkkinoilla ja jotka todella tukevat kehittymistä.

mitä sitten opiskella?

Opiskeltavat teknologiat riippuvat siitä, mihin ohjelmistokehityksen osa-alueeseen haluat keskittyä. Käsittelen seuraavassa lyhyesti kolmea osa-aluetta: web-sovelluksia (myös mobiilia), dataa ja analytiikkaa sekä pilvisovelluksia (joista keskityn AWS:n eli Amazon Web Services –alustan käsittelyyn). Täydennän syvällisemmin näitä alueita ja käsittelen myös muita teknologioita seuraavissa blogiteksteissäni.

web-sovellukset

Olennaista on luonnollisesti osata Javascriptin, HTML5:n ja CSS:n perusteet, mutta nämä opittuaan kannattaa tutustua web-frameworkeihin, joita useimmissa projekteissa käytetään. Frameworkit tarjoavat myös aloittelijalle nopeamman tien saada näkyviä tuloksia, ja näkyvät tulokset puolestaan kannustavat opiskelemaan lisää.

Sovelluskehityksessä React on tällä hetkellä kysytyin framework. Jonkin verran olisi hyvä tietää myös Angularista ja Vuesta ja ymmärtää, miten esimerkiksi Angular 1 eroaa uudemmista Angular-versioista tai miten Angular ja Vue eroavat Reactista. Oma ammatillinen työalueensa on hyvä tuntea, ja siksi on hyvä olla kiinnostunut myös niistä teknologioista, joiden parissa ei itse työskentele.

React tarjoaa polun myös mobiilikehittämiseen React Nativen kautta, Angular taas Ionic 2:n kautta. Edellä mainittujen teknologioiden lisäksi tärkeää on myös perusosaaminen NoSQL-tietokannoista (kuten MongoDB:stä tai AWS:n DynamoDB:stä).

data, analytiikka, tekoäly ja koneoppiminen

Alue on erittäin laaja ja pitää sisällään paljon osa-alueita, mutta ohessa muutamia perusteita mietittäviksi. Datan visualisointiin, tekoälyyn ja koneoppimiseen liittyviin ratkaisuihin otan tarkemmin kantaa seuraavissa blogiteksteissäni.

SQL

Datan ja analytiikan parissa tärkeintä on osata erittäin hyvin SQL-kieli. SQL-kielen hyvä osaaminen on tärkeämpää kuin se, oletko työskennellyt MySQL-, MariaDB-, Microsoft SQL Server-, Oracle- tai PostgreSQL-tietokantojen kanssa. Olennaisinta oppimisessa on, että menet riittävän syvälle SQL:n maailmaan: esim. alikyselyt ja sanat LEFT, RIGHT, INNER ja OUTER tulee olla hyvin hallussa.

Python ja R

Ohjelmointikielistä nousevat esiin kaksi tärkeintä eli Python 3.x ja R. Itse suosin Pythonia, koska useimmiten se on monikäyttöisempi ja helpompi oppia. Luonnollisesti oma koodaamistaustani muilla kielillä toisaalta ohjaa käyttämään ennemmin Pythonia kuin hieman erilaista R-kieltä.

R on erinomainen kieli puhtaissa data science -käyttötapauksissa, mutta erot Pythoniin ovat kuitenkin kohtuullisen pieniä ja rajoittuvat tiettyjen spesifien käyttöalueiden hieman pidemmälle vietyihin kirjastoihin. Pythonin kirjastot Numpy, Pandas, SciPy ja Scikit-Learn tai Python Data Scientist Platform Anaconda (mm. Jupyter Notebook) kokonaisena alustana tarjoavat erinomaiset työkalut.

Python toimii erinomaisesti myös nykyaikaisissa cloud-native-ratkaisuissa esim. pilvipalvelu AWS:n serverless-toteutuksina, minkä ansiosta sitä voidaan hyödyntää laajemmin kuin R:ää.

pilvisovellukset

Merkittävimmät pilvipalvelujen tarjoajat ovat tällä hetkellä suuruusjärjestyksessä Amazon Web Services (AWS), Microsoftin Azure Cloud ja Google Cloud Platform (GCP). Keskityn tässä suurimpaan eli AWS:n pilviteknologiaan.

AWS:n kaltaisista pilvipalveluista puhuttaessa usein keskitytään pääosin virtuaalipalvelimiin, jotka ovat kyllä olennainen osa pilvessä tarjottavia palveluja. Kannattaa kuitenkin muistaa, että AWS:n valikoimissa on tällä hetkellä 129 erilaista palvelua, ja voit sijoittaa oman palvelusi toimimaan 54 fyysisesti erotetussa datakeskuksessa 18 alueella ympäri maailmaa.

Serverless cloud-native

Serverless tarkoittaa suoraan käännettynä palvelitonta. Käytännössä serverless ei kuitenkaan tarkoita palvelitonta ohjelmistokehitystä, mutta se kuvaa nykyistä ohjelmistokehityksen tapaa, jossa kehittäjän ei itse tarvitse murehtia palvelimista, ja etäännyttää kehittäjää näin ollen kauemmaksi palvelimista ja infrastruktuurista. Pilvipalvelun tehtävä on antaa automaattisesti riittävästi kapasiteettia sovelluksesi ajamiseen, ja maksat palvelusta vain käytön mukaan.

Serverless on monen mielestä hypeä vielä vuonna 2018, mutta omassa työssäni se on ollut de facto standardi useimmissa sovellusten toteutustavoissa jo vuodesta 2016 lähtien. Tämä koskee sekä web-sovelluksia että dataan ja analytiikkaan tekemiäni projekteja.

Hyvä esimerkki serverless-palveluista on rakentaa web-sovellus serverless-mallin mukaan hyödyntäen AWS:n S3-, Lambda-, Cloudfront-, Cognito- ja DynamoDB-palveluja. Haasteellisempi vaihtoehto on rakentaa esimerkiksi koneoppimiseen pohjautuva ratkaisu ja hyödyntää siinä AWS:n Kinesis-, S3-, Lambda-, Glue-, Spark/EMR- ja SageMaker-palveluja.

Hyvä lähtökohta serverless-maailmaan on opetella sitä Serverless Frameworkin kautta. Serveless Framework ei ole AWS:n kehittämä työkalu mutta erinomainen AWS-ympäristöön rakennettaville sovelluksille. Pidemmälle AWS:n palveluiden hyödyntämisessä ehtineelle AWS:n SAM (Serverless Application Model) on varteenotettava vaihtoehto.

sopivia koulutuksia

“ilmainen ei toimi”

Tämä pätee oman kokemukseni mukaan usein verkkokursseissa: Youtube on täynnä verkkokursseja, mutta parhaat kurssit löytyvät muualta – ja ovat usein maksullisia. Useat Youtube-kurssit eivät nimittäin mene riittävän syvälle ammattimaisen koodaamisen maailmaan. Joukossa voi olla hyviäkin kursseja, mutta niiden löytämiseen voi mennä paljon aikaa. Oman kokemukseni mukaan monet Youtubesta löytyvät, tietyn erityisalueen useita jaksoja sisältävät kurssit usein myös keskittyvät aihealueen opettamisen sijaan tekijän oman osaamisen esittelyyn. Itse hylkäsinkin Youtuben tässä tarkoituksessa pari vuotta sitten.

Hyviä paikkoja kurssien etsinnälle ovat esim. Udemy (https://udemy.com), josta kursseja löytyy useimmiten 10-15 dollarin hintaan. Jos hinta on korkeampi, niin odota pari päivää. 10 dollaria on hyvin kohtuullinen hinta kurssista, jonka kunnollinen läpikäyminen vie kokopäivätyönä viikosta useampaan viikkoon.

Jos haluat todella panostaa pilvipalveluihin ja AWS:n eri palveluiden hyödyntämiseen, niin hyvä paikka on https://acloud.guru/, josta voit saada käyttöösi kaikki yli 30 AWS-kurssia 29 dollarin kuukausihinnalla.

miten valita sopivat kurssit?
  • Valitse kursseja, joita on myyty runsaasti, jotka ovat saaneet hyviä arvosanoja ja joissa on sanallisia kommentteja.
  • Testaa, että kyseinen kouluttaja puhuu äänellä, jota viitsit kuunnella pidempään. Ainakin Udemyssä joitakin jaksoja voi kuunnella ennen ostamista.
  • Tarkista, että kurssia on päivitetty viimeisen vuoden sisällä. Muutenkin kun etsit alaan liittyvää tietoa netistä, niin hae ensin viimeisen vuoden sisällä päivitettyä tietoa ja vasta sen jälkeen vanhempaa tietoa.

Erityisesti työttömyyden tai lomautuksen kohdatessa kannattaa panostaa uuden opiskeluun. On hyvä pitää mielessä, että oppiminen vie paljon aikaa ja olemme oppijoina erilaisia. Osalle oppimiseen riittää työajalla käytettävä aika, mutta osan pitää opiskella myös osittain vapaa-ajalla pysyäkseen teknologian kehityksen vauhdissa tai laajentaakseen osaamistaan riittävän nopeasti työtehtävien vaatimalle tasolle.

“Ei aina uutta, vaan uudestaan.”

Uuden opettelu vaatii myös määrätietoisuutta. Rajaa opiskeltavat aiheet pienemmiksi paketeiksi ja keskity yhteen asiaan kerrallaan, jotta pystyt sisäistämään asiat paremmin. Katsele videoita, mutta muista olennaisin: tee harjoituksia. Muista, että uuden opiskelussa toisto on tärkeää: Jari Sarasvuon sanoin “ei aina uutta, vaan uudestaan”.