Käytännön ohjeita ja vinkkejä aloittelijalle
Meiltä koodaajilta kysytään usein, mitä koodaaminen tarkoittaa? Miten sitä tehdään ja kuinka tullaan koodaajaksi? Vastaamme alla, mitä tämä kaikki on.
Mitä koodaaminen on?
Koodaaminen on pääosin ongelmien ratkomista, olemassa olevan koodin toistoa ja valmiiden koodiratkaisujen muokkausta tarpeita vastaavaksi. Koodaus voi olla itsenäistä tai vaatia tiheääkin yhteistyötä muiden koodarien kanssa ja suunnittelijoiden kanssa.
Koodaamisessa käytetään erilaisia kieliä niin kuin ihmisetkin voivat puhua eri kielillä. Koodatessa puhe (eli koodikieli) suunnataan ihmisen sijaan tietokoneelle. Koodaus on kommunikaatiota tietokoneen kanssa. Usein abstraktit ideat ja ajatukset pyritään kääntämään loogiseksi ja tarkasti määritellyksi kokoelmaksi komentoja, joita tietokone ymmärtää. Koodaaminen on käytännössä yhdistelmä ajatusten lukua ja tulkkaamista. Koodaamisen voi konkreettisella tasolla mieltää ohjeiden ja komentosarjojen kirjoittamisena tietokoneelle, tai mille tahansa laitteelle, jossa on mikropiiri tai prosessori. Kaikenlaista taskulaskimesta älytelevisioon ja NASAn supertietokoneeseen. Nämä komennot täytyy kirjoittaa tietyssä muodossa, ja näitä muotoja on eri ohjelmointikielet.
Koodikielissä eli ohjelmointikielissä vallitsee omat sääntönsä. Niistä käytetään nimitystä syntaksi. Koodikielessä tapahtuvasta ”kielioppivirheestä” käytetään ilmaisua syntaksivirhe.
Koodaaminen on erilaisten suoritinohjauskäskyjen kirjoittamista monilla eri tasoilla. Alimmalla tasolla, eli lähinnä prosessoria, puhutaan ykkösistä ja nollista. Ylemmillä tasoilla ohjelmointiin voidaan käyttää ihmiselle helpommin ymmärrettävää lähdetekstiä, eli koodia.
Miten koodia muodostetaan?
Vaikka koodia syntyy myös sovelluskehitysympäristön generoidessa sitä tiettyjen parametrien mukaan, tarvitaan siihen silti vielä ihminen ja näppäimistö mukaan.
Koodikieltä muodostetaan numeroista ja kirjaimista kirjoittamalla niitä peräkkäin, jolloin niistä muodostuu palikoita. Kun näitä palikoita yhdistellään eräänlaiseen rakennelmaan, saadaan aikaan ohjelma.
Niin kuin kaikessa elämässä, monimutkaiset kokonaisuudet kannattaa pilkkoa mahdollisimman pieniin osiin, palikoihin, joita on huomattavasti helpompi käsitellä ja ymmärtää. Koodia muodostetaan luomalla näitä palikoita ja suunnittelemalla niistä toimivia kokonaisuuksia.
Joissain projekteissa suunnittelu viedään todella pitkälle ja palikoita pureskellaan ennen kuin koodari itse aloittaa edes tekemään asioita.
Itse koodaustapoja on kuitenkin yhtä monta kuin on koodareitakin. Jokaiselta löytyy omat kikkansa ja hyväksi todetut tavat tuottaa koodia. Koodin muodostaminen riippuu myös paljon vaatimuksista ja itse toteutettavasta toiminnosta.
Joillekin paras tapa on vain alkaa kirjoittamaan koodia ja koodin syntyessä alkaa myös itse hahmottamaan intuition ja kokemuksen kautta, kuinka asioita kannattaa jäsennellä. Tällaiseen prosessiin liittyy paljon asioiden selvittelyä, suunnittelua, kokeilua, refaktorointia ja uudelleenkirjoittamista. Trial and Error.
Jos miettii esim. chattisovellusta, jossa viestit liikkuvat käyttäjien välillä, niin sen peruskäyttöliittymän koodin saa luultavasti koodaaja muodostettua itse vain kirjoittamalla koodia. Siinä vaiheessa, kun käyttöliittymään syötetyn datan pitää alkaa liikkua puhelimien välillä niin voi olla tarvetta tukeutua johonkin oppaaseen, jossa kerrotaan, miten tällainen tiedonsiirto tehdään. Oppaan mukaan vaihe vaiheelta luodaan joko omaa koodia tai kopioidaan valmiita osia, jotka hoitavat eri vaiheita tässä tiedonsiirrossa. Lopuksi pitäisi olla valmis kokonaisuus, jolla viestit kulkevat.
Nykyisin yleisimmin koodia muodostetaan siten, että otetaan käytössä olevan ohjelmointiympäristön runko tai malliesimerkki, jota täydennetään ja muutetaan omiin tarpeisiin sopivaksi.
Mitä välineitä koodaamiseen tarvitaan?
Koodaamiseen tarvitaan näppäimistö, tietokone ja jokin alusta, minne koodia syötetään. Huomattavaa apua saa, jos on lisäksi Internet-yhteys.
Alustaksi sopii jopa perinteinen Word, mutta yleensä käytetään jotain koodikielelle tarkoitettua ohjelmaa. Tällainen alusta on esimerkiksi Visual Studio Code, jonne voi syöttää mitä tahansa koodikieltä.
Mitä koodaaja tekee?
Koodari kirjoittaa koodia, mutta idea valmiiseen koodiin ei synny tyhjästä. Koodaaja tuottaa koodia tulkitsemalla ja kopioimalla. Koodari tulkitsee vaatimuksia ja pyrkii näiden vaatimusten pohjalta muodostamaan käännöksen, jota tietokone ymmärtää. Koodari tulkitsee ongelman ja paloittelee sen niin pieniin osiin, että jäljelle jäävät tehtävät voi kuvata loogisina ongelmina.
Nykyajan koodarin työstä melko pieni osa on itse ”kädet savessa” koodin kirjoittamista, ja suurempi osa tiedonhakua, luovaa ja loogista ongelmanratkaisua, suurten ongelmien paloittelua pienempiin osiin sekä kommunikointia.
Koodaajan hommana voi olla esimerkiksi luoda koodikokonaisuus, joka hoitaa puhelimen näytölle syötetyn tiedon kuljettamisen käyttäjältä toisen käyttäjän puhelimen näytölle. Koodaajan hommana voi olla myös varmistaa, että tämä tieto kulkee puhelinten välillä tietoturvallisesti. Joskus tuo tieto saattaa liikkua liian hitaasti ja koodaajan pitää tehdä olemassa olevasta tiedonsiirrosta nopeampaa.
Joskus puhelimen näytöllä kaikki ei näytä ihan siltä, miltä pitäisi. Silloin koodarin hommaksi voi tulla ohjelman käyttöliittymän komponenttien siirtely tai vaikka värien muokkaus niin, että lopputulos miellyttää silmää.
Koodari saattaa myös samalla joutua tekemään käännöstyötä esim. englannin ja suomen välillä. Koodaus voi olla myös paljon muutakin ja on vaikeaa kiteyttää lyhyesti, mitä kaikkea koodarina voi päästä tekemään.
Koodauksessa hyvin paljon aikaa menee vain googlettaessa, miten asioita olisi järkevää tehdä ja hyvin usein ongelmiin löytyy myös suoria koodiratkaisuja, joita koodarin pitää osata soveltaa omaan toteutukseensa.
Keskeinen ongelma koodauksessa on puutteelliset määritykset, joita pitää osata tulkita. Koodaajan tehtävä on muodostaa käsitys tarvittavista tiedoista, mitä tietoja tarvitaan ja millä säännöillä tarpeen toteuttamiseksi. Näistä voi muodostua kaavioita ja sanallisia kuvauksia, jotka alkavat olla jo pseudokoodin luokkaa.
Pseudokoodilla tarkoitetaan toimimatonta koodia, jolla voidaan kuvata toisille koodareille, mitä halutaan toteuttaa.
Koodari tulkitsee näitä määrityksiä koneen ymmärtämään muotoon. Kyse on tulkkaamisesta. Tulkinta on mahdollisesti määrittelyssä jääneen määrittelemättömän harmaan alueen täyttämistä niin, että koodista tulee riittävän yksiselitteistä ja voidaan todeta koodin vastaavan määrittelyä.
Mitä taitoja koodaaja tarvitsee?
Tiedon etsiminen on yksi tärkeimpiä koodarin taitoja (lue. googlettaminen). Tiedon etsimisen jälkeen on syytä osata soveltaa löytämäänsä tietoa. Tarkkaavaisuus ja luonnollinen kiinnostus kaikkea tietotekniikkaa kohtaan on plussaa. Ala kehittyy todella nopeasti, joten kyky oppia uutta on myös tärkeää. Lisäksi koodari tarvitsee luku-, tulkinta- ja kirjoitustaitoja sekä päättelykykyä, vähän kielitaitoa ja toisinaan myös kärsivällisyyttä. Kehittyminen vaativimpiin hommiin vaatii myös oppimisen taitoa.
Empatiasta ja sosiaalisista taidoista ei ole myöskään haittaa, kun pyrkii ymmärtämään ja tulkitsemaan, mitä asiakkaat tai loppukäyttäjät oikeasti haluavat. Pitäisi pystyä asettumaan toisten saappaisiin ja ajattelemaan kuin käyttäjä. Erityisen hyvät koodarit pystyvät täyttämään myös vaatimukset, joita ei erikseen tuoda esille.
Koodarin tulee ymmärtää, miten tietoa tulee käsitellä ja millä löytää esimerkit, joita kopioimalla tai matkimalla saa toteutettua toimivan koodin. Pelkkä tekoäly ei riitä: vähän niin kuin koneellisen kielen käännöksen tuotoskin on luettava, vastaako se sitä, mitä alun perin tarkoitettiin.
Lisäksi tulee ymmärtää tietokoneen toimintaperiaatteista ja miten tietokone käsittelee ohjelmakoodia: tietokone käsittelee sille syötettyä tietoa annettujen ohjeiden mukaisesti. Hyvä koodari osaa myös ottaa huomioon ohjelmointiympäristön sisäiset rajoitteet.
Koodarin tulee huomioida suorituskyvyn näkökohdat: turhaa tietomassan läpikulkua on vältettävä, hyödynnettävä sopivasti avaimia, käytettävä sopivia ohjelmointikieliä, käyttöjärjestelmiä, tietokantoja ja niin edelleen.
Ymmärrys matemaattisista käsitteistä kuten muuttuja, lauseke ja funktio auttaa myös koodaamisen alkuun pääsyssä.
Lopullinen koodi on usein sellaista, mitä on muokattu ja korjattu ainakin parikymmentä kertaa.
Voiko kuka tahansa oppia koodaamaan?
Kyllä näinkin voi sanoa, jos on riittävästi intoa oppia koodaamaan ja kehittämään itsessään siihen tarvittavia taitoja.
Koodaajaksi voi oppia kuka tahansa, joka osaa lukea, kirjoittaa ja tulkita. Toki tulee ottaa huomioon, että ihmisten luontaiset taipumukset kiinnostua eri asioista vaihtelee. Karkeasti jaoteltuna, koodaaminen tapahtuu paljon asioiden parissa työskennellessä ja toisille on luontevampaa toimia enemmän ihmisten parissa. Koodaus vaatii myös tietynlaista ajattelumallia, joka on toisille luontaisempaa kuin toisille. Omaa ajatteluaankin pystyy kuitenkin kehittämään.
Koodariksi tullaan koodaamalla. Jonkin verran englannin kielitaitoa olisi kuitenkin ehkä hyvä olla pohjalla koodaamiseen ryhtyessä -erityisesti koodaustermistöä ajatellessa. Englannin kielitaidosta on etua uuden oppimisessa ja joidenkin asioiden ymmärtämisessä koodatessa.
Korkean tason ohjelmointikielillä tietokoneen sisäinen toiminta on häivytetty taustalle, jolloin sen tunteminen ei ole ensiarvoisen tärkeää.
Koodausten perusteiden ymmärtämisestä voi olla muutenkin hyötyä, vaikka koodausta ei päätyisi työkseen tekemäänkään. Ja kaiken tasoisia koodaajia tarvitaan!
Missä voi opiskella koodaajaksi?
Koodaajaksi voi opiskella siellä, missä on mahdollista tehdä koodausharjoituksia. Kotona, koulussa, harrastuksessa… Kunhan on tarvittavat välineet: tietokone, näppäimistö, alusta (ja Internet-yhteys).
Koodari käyttää kuitenkin vain pienen osan ajastaan itse koodin kirjoittamiseen ja koodarin töihin kuuluu myös paljon muutakin kuin pelkkää koodausta. Ohjelmistosuunnitteluun ja ohjelmistotuotantoon liittyviä asioita oppii lähinnä toimimalla osana tiimiä. Myös koulutus luo pohjan uusien asioiden sisäistämiselle. Vaikka ilman koulutustakin tulee paljon loistavia koodaajia, usein on kuitenkin helpompi hankkia pohja tietotaidolle ja oppimiselle koulun kautta.
Koodariksi voi opiskella esimerkiksi perinteiseen tapaan ammattikorkeakoulussa tai yliopistossa. Koulutuslinjat voivat olla nimeltään esimerkiksi ohjelmistotekniikka, tietojenkäsittely, ohjelmistotiede tai ohjelmistosuunnittelu. Eri koulut ja linjat painottaa yleensä vähän eri asioita opinnoissa. Näille linjoille pohjana on yleensä ylioppilastutkinto, ja tärkein aine matematiikka. Sen lisäksi valinnassa ja pääsykokeissa yleensä katsotaan luonnontieteitä.
Nykyään on myös paljon erillisiä koulutuksia mm. alanvaihtajille, ja avoimet yliopistot (todennäköisesti myös ammattikorkeakoulut) tarjoavat paljon ohjelmointiin liittyviä kursseja.
Joistain peruskouluistakin löytyy ohjelmointikursseja valinnaisena oppiaineena. Ammattikouluissakin on omat linjansa ohjelmistokehityksestä kiinnostuneelle.
Jos koulu ei kuitenkaan lainkaan napostele, on netti täynnä ohjeita, joilla pääsee alkuun ja, niin pitkälle kuin kiinnostusta riittää. Koodia pitää tehdä itse, että oppii koodaamisen taidon.
Paljonko koodaaja tienaa?
Koodaajilla palkkahaitari voi olla hyvinkin suuri. Palkka muodostuu monesta tekijästä eikä ainoastaan kokemusvuosista. Palkkaan vaikuttavat vahvasti oma osaaminen, mutta myös sijainti, vastuun määrä, työpaikka, työtunnit, yleinen palkkataso alalla, työnkuva ja niin edelleen. Palkkahaitari liikkuu peruspalkasta huippuhyviin palkkoihin monen tekijän vaikutuksesta. Ei voida sanoa siis sanoa yhtä varmaa kuukausipalkkaa koodaajalle.
Yleisesti tunnetuimpia koodikieliä
Yleisesti tunnetuimpia koodikieliä ovat muun muassa JavaScript, C#, Python, C++ ja Java.
JavaScript on yksinkertainen ja hyvä harjoittelukieleksi. Se on nykyajan BASIC (koodikieli sekin). JavaScriptiä opetetaan paljon kouluissakin ohjelmistokehittämistä aloittaville. Pythonista voi myös aloittaa, mutta JavaScript on varmempi ensimmäiseksi kieleksi.
c# ja/tai Java kannattaa opetella, jos haluaa tehdä koodia joskus työkseen.
Avanion näkökulmasta JavaScript ja C# ovat kaksi tärkeintä. Mobiilisovelluksia tehdään kuitenkin paljon myös Swift (iPhone) ja Kotlin (Android) -kielillä.