Olemme tällä viikolla saaneet useita yhteydenottoja, joissa on kysytty valmistautumisohjeita ja hakuvinkkejä syksyllä 21.10.2019 alkavaa full stack -kehittäjän koulutusta varten. Ensimmäinen kysymys on miten voisi valmistautua kurssille hakemiseen ja erityisesti millaiset taidot auttavat kurssin pääsykokeen läpäisemiseen. Toinen kysymys koskee harjoittelupaikkoja. Molempiin kysymyksiin löytyy vastauksia tästä artikkelista.

Koska kurssin tärkein ohjelmointityökalu on ECMAScript 6 -ohjelmointikieli (JavaScript), keskitytään tässä vinkkeihin, jotka liittyvät lähinnä ECMAScriptin opiskeluun. Jäljempänä mainittuja aihepiirejä opiskelemme myös kurssilla - lähdemme opiskelemaan JavaScriptiä alusta asti. Lisäksi tämän artikkelin lopussa on tietoa harjoittelupaikkojen etsimisestä ja harjoittelupaikan vaikutuksesta opiskelijavalintaan.

Listat, listat ja listat
Kurssille hakijan kannattaa opetella ohjelmoinnin alkeet ECMAScript -kielellä(JavaScript) tai jollain muulla ei-oliokielellä. Erityisesti kannattaa panostaa listojen ja perustietorakenteiden opiskeluun.

JSON
JSON-on tärkeä asia, samoin listat ja listojen käsittelyyn liittyvät operaatiot, näistä tärkeimpänä map ja erilaiset listan läpikäyntiin liittyvät rakenteet, kuten forEach. 

Merkkijonojen käsittely
ECMAScriptiä kannattaa opetella erityisesti tiedonkäsittelyn näkökulmasta - myös merkkijonojen käsittely on full stack -kehittäjälle tärkeä taito. Merkkijonojen yhdistäminen ja pilkkominen ovat hyödyllisiä taitoja lähes missä tahansa ohjelmointiympäristössä ei vain full stack -tekemisessä.

Kannattaako opetella prototyyppiperinnän (tai minkään perinnän erityisesti koskien ECMAScript 6 versiota) hienoudet etu- ja takaperin?
Prototyypin käsite on hyvä tunnistaa, mutta kovin syvällistä ymmärrystä käsitteestä kurssilla ei tarvita - asia tulee kyllä vastaan kurssin aikana ja sen merkitys on vähänlainen, koska kurssin aikana käsiteltävä data on lähes aina JSON-muotoista. JSON-tietorakenne voi olla puumainen, mutta oliohierarkioihin ei juuri kurssilla turvauduta.

Kannattaako opetella ECMAScriptin nuolifunktiot ja lambdat?
Ilman muuta kannattaa. Lambdat ja nuolifunktiot ovat tulleet jäädäkseen ja niitä käytetään paljon. Paikallaan määriteltyjä funktioita käytetään sekä asiakkaan että palvelimen päässä. Jos pitää valita laittaako paukkuja ECMAScriptin mukaiseen olio-ohjelmointiin vai käyttäisikö saman ajan nuolifunktioihin ja lambdan -käsitteen opetteluun, niin ilman muuta kannattaa panostaa jälkimmäiseen.

Mitä ECMAScript 6-versioon liittyviä asioita kannatta opetella?
Ehdottomasti jo mainittujen lambdojen ja nuolifunktioiden lisäksi kannattaa opetella destrukturointi eli datan pilkkominen. Asia on yksinkertainen ja helppo opetella. Asia tulee kurssilla vastaan moneen kertaan, joten sen ehtii hyvin oppia kurssin aikanakin.

Muuttujien näkyvyysalueet
Jos mahdollista, muuttujien näkyvyysalueen käsitteeseen kannattaa niin ikään tutustua jo ennen kurssille hakemista. Vaikkei päällekäyvää kätevyyttä asiasta vielä olisikaan, on hyvä, jos käsite on tullut tutuksi - kurssin aikana näkyvyysalueisiin (scope, scoping) tutustutaan tarkemmin, joten vaikka esitiedoista on hyötyä, käsitteen merkitys kirkastuu kyllä kurssin aikanakin.

Kannattaako opetella ECMAScriptin tukemaa olio-ohjelmointia tai auttaako olio-ohjelmoinnin hyvä osaaminen kurssilla ylipäänsä?
ECMAScript 6 versiossa voidaan käyttää luokkia (classes) hieman java-ohjelmoinnin tapaan. ECMAScriptin osaamisesta tai luokkiin liittyvistä perinnästä ja muusta olio-ohjelmointiin liittyvästä ei ole kurssilla sanottavasti hyötyä.

Kurssin aikana käsittelemme dataa usein rakenteilla, joihin ei liity perintää tai kantaluokkiin liittyviä ominaisuuksia tai metodeja lainkaan. Kurssilla käytämme pääasiassa "flättejä" tietotyyppejä - käsittelemme lähes aina JSON-muotoista dataa, joten C/C++ kielestä tutulla "structin" idealla tai vastaavalla pärjää hyvin.

Kurssilla opettelemme uudelleenkäyttämään koodia erityisesti funktiokomposition avulla, joten olio-ohjelmointitaitoja ei ainakaan uudelleenkäyttömielessä tarvita, joten perintähierarkiat ja metodien ylikuormittamisen voi huoletta jättää muiden huoleksi.

Mitä Reactista kannatta opetella ja miten React-komponentteja laaditaan kurssilla? 
Jos on mahdollista alkaa tutustumaan Reactiin jo ennen kurssin alkamista, niin kannatta opetella tekemään komponentit funktioiden avulla (stateless components) ja käyttää tilan hallintaan vaikkapa Hooks-rajapintaa.

Vanhemmankin React-version osaamisesta on hyötyä ja kurssin aikana funktionaalisten komponenttien laatiminen tulee kyllä tutuksi kaikille. Käytämme kurssilla funktionaalisia komponentteja luokkasyntaksiin perustuvien komponenttien tilalla aina kun se on mahdollista – ja lähes aina se on.

Mitä palvelinpuolelta (node.js) kannattaa opetella?
Kannattaa tutustua HTTP-protokollaan ja kommunikaatioprotokollan käsitteeseen yleensäkin. http-protokollan primitiiveihin kannattaa tutustua niin ikään - GET, POST ja niin edelleen. Nämä käydään kurssilla läpi, mutta kommunikaatio-ohjelmoinnin ja hajautettujen tietojärjestelmien teoriaan kannattaa tutustua mahdollisuuksien mukaan jo ennen kurssin alkua, jos asiat ovat uusia tai jos asiat ovat vanhoja, niin hiukan kerrata. Kommunikaatio-ohjelmoinnin opiskellaan kyllä kurssilla, mutta koska oppiminen on vuosien prosessi, ei ole koskaan liian aikaista tutustua käsitteisiin, vaikkei niistä sen syvällisempää otetta heti saisikaan. Suoritusmalliiin, säikeistykseen, asyknronisuuteen ja muuhun tutustumme kurssin aikana.

Mitä asiakaspuolelta (selain) kannattaa opetella?
Kannattaa tutustua HTTP-protokollaan myös selaimen näkökulmasta. Voi olla hyvä tutkia, miten selain ylipäänsä sisäisesti toimii. Miten selaimessa ajettava JavaScript-koodi suoritetaan. Miten selain lähettää pyyntöjä ja miten rinnakkaiset pyynnöt palvellaan. Näitä käydään kurssillakin läpi, mutta selaimen sielunelämään ei voi koskaan aloittaa tustumista liian aikaisin. 

Onko pakko opetella sekä asiakas -että palvelin puoli?
Ei ole. Full stack -kehittäjän rooli on vaativa ja vaikka opiskelemmekin asian molempia puolia, voit kurssin aikana tai viimeistään harjoittelussa keskittyä jompaankumpaan tai molempiin osa-alueisiin. Kurssiltamme työllistyneet tekevät töitä niin taustapalvelinten(backend) kuin selainsovellustenkin(frontend) kanssa.

Millainen lukujärjestys kurssilla on ja millaista pedagogiikka on?
Kurssilla opetellaan asiakas-palvelin -ohjelmiston idea ja tehdään referenssitoteutus ECMAScript -ohjelmointikielellä verkkoteknologioita hyödyntäen. Lukujärjestys on kaikille sama, jotta jokainen saavuttaa tietyn tieto- ja taitotason kurssin aikana. Jos jotkin tehtävät tuntuvat kurssilla liian helpoilta, annamme mielellämme haastavampia lisätehtäviä, joita voit harjoitusten purkutilaisuuksissa esittää koko ryhmälle. Päivärytmi sisältää teoriaa ja harjoituksia sekä harjoitusten läpikäymistä. Kurssi on täyspäivästä opiskelua.

Tyypillisesti maanantaina opiskellaan teoriaa ja harjoitellaan, tiistaina on etäpäivä, jolloin tehdään etätehtäviä, joita käydään keskiviikkona läpi. Etätehtävien läpikäynti kestää usein 2-3 tuntia eli lähipäivän aamupäivä kuluu yleensä tehtäviä läpikäydessä.

Iltapäivälle saatamme jatkaa uuden teorian parissa tai jatkaa tehtävien purkua vielä iltapäivällä. Lukujärjestys on hyvin koulumainen ja edellyttää aktiivista osallistumista lähipäiville, sillä uutta osaamista rakennetaan aiemmin opitun tiedon varaan. Kurssin ensimmäiset n. 3 kuukautta ovat hyvin intensiivisiä, 4 kuukausi sisältää hieman vähemmän lähipäiviä, sillä opiskelijalla on 3 kuukauden jälkeen jo paremmat itseopiskelutaidot.

Miten harjoittelupaikan saa millaisia yrityksiä ja yhteisöjä kannattaa lähestyä?
Kurssille on helpompi päästä, jos löydät jo ennen kurssin alkua itsellesi harjoittelupaikan, jossa voit harjoitella kurssilla opittuja taitoja. Harjoittelupaikan löytäminen ennen kurssin alkua on erinomainen näyttö aktiivisuudestasi ja se otetaan huomioon myös hakuprosessissa.

Harjoittelupaikkaa kannattaa etsiä pienistä ja keskisuurista yrityksistä, joissa tehdään omia tuotteita. Suurin osa vuoden 2018 kurssilaisista löysi harjoittelupaikan pienistä kasvavista Pirkanmaalaisista yrityksistä, joten katseet kannattaa suunnata sinne, kun etsii harjoittelupaikkaa. Kannattaa pitää mielessä myös yhdistykset - niistä voi löytyä myös mielenkiintoista ja opettavaista tekemistä harjoittelun ajaksi, vaikkei harjoittelun päätteeksi työsuhdetta syntyisikään.     

Yhteistyöyritykseen kannattaa kertoa, että kysymys on nimenomaan uusien asioiden opettelusta ja laittaa vaikkapa linkki sivuillamme oleviin juttuihin kurssimme luonteesta. Kannattaa antaa reilusti mielikuva, että on vielä opettelemassa asioita ja että harjoittelun ajaksi tarvitaan ohjaaja, jolta voi kysyä tarvittaessa neuvoa. Näin harjoittelusta saadaan mukava kokemus niin oppilaille kuin harjoittelupaikoillekin. Hyvästä harjoitteluyhteistyöstä syntyy hyvä mahdollisuus näyttää kyntensä, vaikkei harjoittelu aina työsuhteeseen johdakaan. Kurssin vetäjältä saat myös vinkkejä harjoittelupaikoista.

Millainen pääsykoe on?
Pääsykoe on kirjallinen ohjelmointitehtävä, joka tehdään kynän ja paperin avulla. Pääsykokeen vastauksen voi antaa millä tahansa ohjelmointikielellä tai ns. pseudokoodina. Kurssille voi hyvin päästä vaikkei osaisi mitään ohjelmointikieltä, mutta tuntee ohjelmoinnin peruslogiikan niin hyvin, että pystyy kirjoittamaan algoritmit pseudokoodilla. Vastaukseksi kelpaa myös vuokaavio.

Varsinkin hakijat, joille ei ole ohjelmointikokemusta, mutta hyvä ymmärrys ohjelmoinnin logiikasta ovat päässeet kurssille pseudokoodattujen vastausten avulla. Usein on kuitenkin niin, että ohjelmoinnin ideat oppii vasta, kun on käyttänyt jotain tunnetuista ohjelmointikielistä. Pääsykokeessa ideoiden ymmärtäminen kuitenkin ratkaisee pääsykokeesta saatavan pistemäärän, ei tietyn kielen syntaksin hallinta. Vastauksia pisteytettäessä on periaatteena asia ennen muotoa, joten pienistä syntaksivirheistä ei kannata murehtia.   

Auttaako kurssille pääsyssä, jos omistaa valkoisen koiran?
Ei :) 

Onnea hakuun ja hauskaa kesää toivottavat Selma-koira ja kaverit! 

 

"Kesällä ladataan akkuja syksyn koitoksiin" tuntuu Selma-koira miettivän.