Olen opettanut ohjelmointia päätoimisesti lähes 20 vuotta ja vuodesta toiseen vastaan samaan kysymykseen siitä, miten ohjelmistosuunnittelijaksi tullaan. Vastaus on ollut vuodesta toiseen sama. Aloita opettelemalla jokin ohjelmointikieli ja opettele ratkaisemaan sillä ongelmia.

Ohjelmistosuunnittelijan tärkein taito - ohjelmointitaito
Lukuisia teknologialyhenteitä pursuavien rekrytointi-ilmoitusten lomasta on hyvin epätodennäköistä löytää ilmoitus, jossa edellytetään selkeällä suomen kielellä hyviä ohjelmointitaitoja ja määritellään selkeästi, mitä sillä tarkoitetaan.

Se ei kuitenkaan muuta sitä tosiasiaa, että ohjelmistosuunnittelijan tärkein perustaito on ohjelmointitaito. Ohjelmointia voi myös opiskella itsenäisesti, mutta ongelmaksi voi koitua motivaation löytäminen – on paljon mielekkäämpää tehdä jotain konkreettisempaa, kuten näyttää taitonsa vaikkapa työharjoittelussa ja saada jotain valmista aikaan. Palkallinen työ on usein kuitenkin lopulta se mielekkäin vaihtoehto.

Mistä motivaatio?
Motivaation osalta ongelma lienee monen kohdalla siinä, että ohjelmointitaitojen kehittäminen vaatii aika paljon työtä ja motivaation löytäminen itse opiskellen verkkokurssien ja erilaisten harjoitustehtävien avulla voi osoittautua puuduttavaksi projektiksi. Mitä aikaan ja työmäärään tulee, niin tämän ovat huomanneet yliopistoissa ja korkeakouluissa opiskelleet – jos ohjelmointi ei ole tutkinnossa ollut se mielenkiintoisin laji, käy usein niin, että tietojenkäsittelyopin tai tietotekniikan pääaineesta tulee valmistuttua verraten heikoin ohjelmointitaidoin. Ongelma voi liittyä esimerkiksi ohjauksen puutteeseen, oman motivaation puutteeseen tai molempiin.

Opiskelipa sitten itse tai koulussa, on kuitenkin hyvä pitää mielessä, että asiat voivat muuttua mielenkiintoisiksi, kun oivaltaa tietyt perusideat ja ohjelmointiratkaisujen löytäminen alkaa tuntumaan hieman palkitsevammalta. Kyse on tiettyjen sitkeyttä vaativien kynnystaitojen oppimisesta ja näiden soveltamisesta eri tilanteisiin. Myös uran myöhemmässä vaiheessa on erittäin palkitsevaa huomata ohjelmointikielten luonne-eroja ja nyansseja. Silloin on jo yleensä syntynyt hyvä tuntuma siihen, mitä eri kielillä voi ja kannattaa milloinkin tehdä.

Miten pysyä ohjelmointitöissä eläkeikään ja vielä sen jälkeenkin?
Kaikista alan opiskelijoista ei tule ohjelmistosuunnittelijoita ja se ei ole ongelma. Ohjelmistoteollisuus tarjoaa paljon muutakin kuin ohjelmistosuunnittelutöitä. Jos kuitenkin aikoo tähdätä erityisesti ohjelmistosuunnittelijan uralle, olisi motivaatiota kuitenkin hyvä löytyä, sillä täysin ilman innostusta aiheeseen oppiminen voi olla työn takana. 

Ohjelmistosuunnitteluun liittyvät ohjelmointitaidot kehittyvät vuosien ja vuosikymmenten aikana, mutta vain mikäli seuraa aikaansa ja ohjelmoi säännöllisesti. Juuri tästä syystä hyviä ohjelmistosuunnittelijoita löytyy paljon henkilöistä, joilla ei ole muodollista koulutusta. Erilaisia ohjelmointikieliä- ja tyylejä käyttäneet ammattilaiset ovat yleensä taitavia siirtymään ohjelmointikielestä toiseen - sen tärkeimmän työkalun haltuun ottaminen helpottuu työvuosien karttuessa, jos on tullut tutkineeksi uran varrella hieman eri työkalujen rakenteita ja niitä käsitteitä, joista kielet eli ohjelmoinnin perustyökalut on rakennettu.

Jos mainittu ohjelmointikielten rakenteisiin ja erityispiirteisiin liittyvä ajatustyö on jäänyt väliin, on uuden ohjelmointikielen haltuun ottaminen vuosi vuodelta vaikeampaa. Jokainen voi itse valita, mitä ja millaiset ohjelmointikieliin liittyvät oppimistaidot haluaa itselleen työuransa aikana rakentaa. Tiettyjen teoreettisten seikkojen opettelematta jättäminen kostautuu helposti uran myöhemmissä vaiheissa ja ura voi tyssätä siihen, että uuden oppimiseen ei yksinkertaisesti ole käsitteellisiä eväitä. Tämän asian painottaminen onkin eräs kurssiemme tärkeimmistä viesteistä - teorialla on väliä ja sen voi hoksata ennemmin tai myöhemmin, mutta myöhemminkin se on mahdollista. Jos ohjelmointitaitoja haluaa kehittää koko työuransa ajan, on hyvä jossain vaiheessa tehdä jäsennys ohjelmointikielistä ja niiden rakenteista. On petollista ajatella, että kun on kerran opetellut ohjelmoimaan vaikkapa koulussa, kaikki sen jälkeen tuleva on saman perusajatuksen kertausta. Näin se ei kuitenkaan ole. Kannattaa tutkia funktionaalista ohjelmointia ja pohtia kuinka kertakaikkisen erilainen tapa se on toteuttaa ohjelmistoja verrattuna klassineen imperatiiviseen malliin, joka tuntuu edelleen olevan valtavirtaa niin peruskoulussa kuin ylemmilläkin kouluasteilla.    

Tutkinto ei kerro ohjelmointitaidoista
Maailmassa on paljon erinomaisia ohjelmistosuunnittelijoita, jotka ovat saattaneet opiskella vaikkapa filosofiaa, mutta jotka ovat kenties jo kouluaikana harrastelleet ohjelmointia ja löytäneet itsensä ohjelmointitöistä myöhemmin. Lisäksi on paljon taitavia ohjelmoijia, jotka ovat vaihtaneet uraa ja päätyneet ohjelmistosuunnittelijoiksi. 

Taitavilla ohjelmistosuunnittelijoilla, joilla ei ole alan tutkintoa, on yksi yhteinen nimittäjä. He ovat käyttäneet riittävästi aikaa, vaivaa ja ajatusta ja ovat huomanneet ohjelmoinnin luonnistuvan joko helposti tai hieman isomman harjoittelun tuloksena. Siitä ei ole enää pitkä matka ohjelmoijan töihin. Tämän voivat allekirjoittaa monet meidänkin kursseilta valmistuneet – taidot ovat opittavissa myös ilman tutkintoa. Hyvä esimerkki tästä on englantilainen Jo Stichbury, joka on koulutukseltaan kemisti. Hän on tehnyt pitkän uran niin ohjelmistosuunnittelijana kuin teknisenä kirjoittajanakin ja on tämän lisäksi kirjoittanut hyvin selväjärkisiä ohjelmointikirjoja verraten vaikeaselkoisista aiheista. Toinen hyvä esimerkki on Bartosz Milewski, koulutukseltaan fyysikko, mutta eksynyt syvälle ohjelmoinnin maailmaan - ehkä syvemmälle kuin alun perin ajattelikaan. 

Ikä ei ole este, eikä usein edes hidaste
Ohjelmointitaito ei ole sidottu ikään. Minulla on ollut lukuisia opiskelijoita, joilla on ollut eläkeikään matkaa tuskin kymmentä vuotta ja tämä ryhmä on ollut eräs parhaiten menestyneitä ryhmiä sekä koulutuksen teoriaosuuksissa että työharjoittelussa. Moni esiintyvä taiteilija lumoaa yleisönsä vielä eläkepäivien jälkeenkin ja niin tekevät myös taitavat ja koko ikänsä taitojaan kehittäneet ohjelmistosuunnittelijatkin. Todellisia ongelmanratkaisijoita ja hyviä ryhmäpelaajia löytyy niin nuoremmista kuin vanhemmista.

Yksi kieli kerrallaan ja mieluiten hyvin
Jonkin ohjelmointikielen osaaminen on edellytys ohjelmointitaitojen kehittymiselle ja muiden ohjelmointikielten osaamiselle. Se, mikä pätee luonnollisten kielten oppimiseen, pätee myös ohjelmointikielten oppimiseen. Ensin on hyvä opetella yksi kieli kohtuullisen hyvin ja vasta sitten tutkia muita.

Ohjelmointitaitoa voi jo pitää melko hyvänä, jos kykenee vertailemaan eri ohjelmointikieliä. Sama pätee luonnollisiin kieliin. Jos osaa vertailla kahden kielen rakenteita ja ottamaan vertailussa huomioon myös kielen käyttötilanteen, osaa usein myös soveltaa kieliä eri tilanteissa.

Mikä kieli?
Nykyään ohjelmointikieleksi kannattaa valita jokin nykyaikaisista kielistä. Oleellista varsinkin työllistymisen kannalta on, että kieli on sekä hyödyllinen, että opeteltavissa. Tällä hetkellä suositukseni ensimmäiseksi kieleksi on ECMAScript eli tuttavallisemmin JavaScript, sillä se on sekä hyödyllinen, että suhteellisen helppo oppia. Toinen hyvä vaihtoehto voisi olla Python.

JavaScriptin etu näitä kahta kieltä vertailtaessa on, että sen avulla on melko helppo aloittaa oikeat työt esimerkiksi käyttöliittymiä laatien. Pythonia käytetään erityisesti pienten ohjelmien eli skriptien laatimiseen ja taustapalvelimissa, joiden kanssa harva aloittelija kuitenkaan tekee töitä aivan uran alkuvaiheessa. Toinen JavaScriptin etu on, että sitä käytetään nykyään erittäin paljon työelämässä. JavaScript on verkkokehityksen standardi, erityisesti käyttöliittymiä laadittaessa.   

JavaScriptin opiskeluun erityisesti ohjelmistosuunnittelijan uralle haluavista motivoi sen soveltuvuus sekä frontend- että backend- tekemiseen. Laajemmissa järjestelmissä JavaScript eli tuttavallisemmin ”jäsä” jää työkaluna torsoksi erityisesti tyyppiturvattomuutensa takia, mutta pienimuotoisen backendin tai välityspalvelimen rakentamiseen se sopii mainiosti.

Aloittelevat ohjelmistosuunnittelijat työskentelevät yleensä pienempien järjestelmien ja nimenomaan käyttöliittymien parissa ja JavaScript on senkin takia luonteva valinta ensimmäiseksi kieleksi. Verkkopohjaisten järjestelmiä laatiessa JavaScriptiä on vaikea välttää, ainakaan käyttöliittymiä suunnitellessa.

JavaScriptiä opettelemme edellä mainituista syistä myös jo kolmatta vuotta pyörivällä verkko-ohjelmistojen laatimiseen keskittyvällä kurssillamme, josta löydät lisätietoja täältä: Full stack -kehittäjäksi React, JavaScript/TypeScript ja node.js teknologioilla ja funktionaalisella otteella 16.10.2020 alkaen.

Hyvää kesää!

Selma-koira ja kaverit

 

Niin kiire ei Haskell-koirallakaan ole, ettei ehtisi muutamaa päivää kesässä veneessä makoilemaan.