Paljastan salaisuuden: Aloitin työurani koodaamalla. Olen siis oikeasti nörtti. Koodaustaitoon liittyy paljon harhakuvia. Haluan muutaman oikaista tässä.
1. Koodaus ei tarkoita pelkkää koodausta
Tein eilen pienimmän toimivan tuoteen eli artikkelin MVP:n tästä samasta artikkelista. Monesti koodaus aloitetaan vastaavasti idean tai käyttöliittymän testaamisella oikeiden asiakkaiden kanssa.
Pienimmän toimivan tuotteen, eli MVP:n tekemisessä tärkeintä on, että saadaan palautetta ideaan. Se on usein ensimmäinen vaihe koodaamisessa. Testataan ideaa ehkä paperiversiolla tai artikkelin beta-versiolla kuten tässä tein. Eilisen artikkelin perusteella verkossa syntyi paljon keskustelua ja tärkein palaute oli juuri, että kansankielellä koodaaminen tarkoittaa eri asiaa kuin mitä ammattilaiset sillä tarkoittavat.
Kansankielellä koodaaminen on laajempi asia kuin ammattilaisten kielessä koodaaminen. Koodaus on yksi tärkeä vaihe ammattimaisessa ohjelmistotuotantoprosessissa.Maailman suurinta käännöstoimistoa rakentavan Transfluentin perustaja Jani Penttinen kommentoi Facebook -nimisen keskustelufoorumisovelluksen keskusteluketjussa artikkelia seuraavasti:
Jos haluaa puhua koodauksesta ohjelmistotuotannon synonyyminä, ni se kyllä vähän itsensä huijaamista. Oikeasti koodaaminen on osa ohjelmistotuotantoa, mutta vain osa sitä ja muutakin tarvitaan. Ehkä parhaiten tilanteen ymmärtää jos tulee vastaan tilanne että pitäisi oikeasti koodata jotain itse. Joko osaat, tai et osaa. Jos et osaa, ni sit puhutaan siitä ohjelmistotuotannosta ja päädyt etsimään jostain koodaajan ja ostamaan tältä koodauspalvelun että saat haluamasi ohjelmiston tuotettua.Jani osuu tuossa asian ytimeen. Asiakas ostaa koodauspalvelua, myyjä myy ohjelmistotuotantoprosessin. Jo siinä monesti koodausprojekti menee vikaan ja on vaarana, että pieneltä firmalta tilatessa projektista tulee niinsanottu purkkaviritys joka näyttää hyvältä, mutta todellisuudessa on hakkereille avoin.Voi kuulostaa saivartelulta, mutta on oikeasti älyttömän iso ero siinä osaako oikeasti koodata vai ei. Sanoisin että esim. jos paljon parjatuissa Tiedon projekteissa sekä ostajan että myyjän edustajat osaisivat itse koodata, speksit tulisi laadittua sellaisiksi että ne saadaan toteutettua ja budjetit sellaisiksi että niissä voi pysyä. Ja ehkä lopputulos olisi sellainen joka toimii.
En sano, että kaikkien pitäisi osata koodata, mutta koodaustaito on aika tärkeä perustaito jonka osaaminen auttaa monessa muussa roolissa vaikka itse ei koodia kirjoittaisikaan.
Tähän laatuasiaan tuli myös kommentti Talent Base Groupin kokeneelta ICT konsultti Reni Waegeleinilta, joka varmasti mm toimiessaan Veikkauksen ICT managerina on huomannut, mitä tarkoittaa kun hän sanoo LinkedIn sovelluksen keskustelussa seuraavasti:
Lisäisin tähän yhden kohdan. Väärä käsitys koodaamisesta: koodarin hyvyyttä voi mitata suoritteiden (koodin määrä, toiminnallisuus) määrällä.Jokaisen nettisivun, verkkopalvelun ja applikaation koodaamiseen tarvitaan koodaamisen lisäksi paljon muita ohjelmistotuotannon prosessivaiheita, joita yleiskielellä kutsutaan tosiaan siis usein pelkistetysti koodaamiseksi.Väärin. Koodaus ei ole liukuhihnatyötä. Samaa ongelmaa ei ratkaista moneen kertaan. Jokainen eteen tuleva asia on uniikki, koska ympäristö johon se tehdään ja prosessi jota rakennetaan on aina uniikki.
Siksi ei ole kannattavaa mitata koodin määrää, toiminnallisuuksien määrää, näiden suhdetta tai niiden tekemiseen kulunutta aikaa.
Se on sama kuin arvioisimme taidemaalarin hyvyyttä siveltimenvetojen lukumäärällä.
Hyvyyttä pitää mitata, mistä sitä koodari itsekään muuten tietäisi miten hän suoriutuu, mutta mittarina pitää olla jokin lopputuloksesta syntyvä mittari: Asiakasasioinnin nopeus, konversio, myynnin kehitys, jne.
Koodi ei synny itsestään.
2. Väärä käsitys koodaamisesta: Koodia voi kopioida
Monesti ajattelemme, että koodia voi tuosta noin vain kopioida ja sitten systeemi toimii. Paljastan salaisuuden: Ei toimi. Vastaavasti voisi ajatella, että otat Teslan moottorin ja akut ja laitat sen vanhaan Toyotaan, niin sinulla on sähköauto.
Okei on poikkeuksia, esim jos sinulla on joku vakio-osa, niin sitä voit kopioida. Esimerkkina autossa voisi olla Teslaan sopiva ratti, jonka voit vaihtaa samasta Teslamallista toiseen, muttet välttämättä kuitenkaan edes Teslan mallien välillä ilman hitsaustyötä. Eikä se varmastikaan sitten sovi siltikään Toyotaan tai Porscheen. Toisin sanoen jokaisella ohjelmointikielellä on omat vakio-osansa.
If I write something in english, it is super difficult to copy to be part of this finnish article, jos ymmärrät mitä tarkoitan. Tietokoneelle koodatessa pitää lähes aina kertoa mitä kieltä sille nyt kirjoitat. Ihminen saattaa osata tulkita jopa tuon englanninkielisen lauseen ja ymmärtää sen olevan esimerkki eri ohjelmointikielistä ja niiden yhteensopimattomuudesta. Toisaalta sinä fiksuna ymmärrät sen, mutta miten olisi käynyt, jos olisin kirjoittanut "Si escribo algo en inglés, es muy difícil copiarlo para ser parte de este artículo finlandés."
/* koodi saattaa sisältää myös kommentteja, esimerkiksi: Tämän kappaleen muuten kopioin suoraan eilisestä MVP:stä. Pari pientä kieliasua korjasin. Niitä voisi koodari kutsua bugiksi tai leikkisästi yllättäväksi ominaisuudeksi, joka saattaa häiritä lukukokemusta. Lisäsin tähän myös tuon esimerkin eri kielistä. Koodin kommentointi helpottaa ylläpitäjän työtä myöhemmin. Kommentit muuten kirjoitetaan usein kielellä, joka ymmärretään laajasti, esim englanniksi kommentointi on lähes vakio myös Suomessa. */
3. Väärä käsitys koodaamisesta: koodaus on koodin kirjoittamista
Monesti ajattelemme, että eihän siihen kauan mene kun kirjoittaa koodin. Koodauksessa on kuitenkin monta muuta ohjelmistotuotantoon ja käyttökokemuksen suunnitteluun liittyvää työvaihetta:
1) miten käyttäjä kokee sovelluksen
2) miten käyttäjä etenee polulla
3) miten käyttöliittymä reagoi kun käännät ruudun
4) miten sovelluslogiikka toimii ja käyttäytyy esimerkiksi jos hakkeri yrittää varastaa Facebookin datasi, antaako sovellus siihen luvan vai miten tietoturvapolitiikka säädetään
5) miten tietoja tallennetaan: tietokantaan, minkälaiseen tietokantaan
6) millä kielellä frontend eli käyttöliittymä koodataan ja millä kielellä backend eli taustalla pyörivä ohjelmistologiikka koodataan
7) miten meidän pitää testata, että ohjelma toimii
Näitä voisi listata vaikka kuinka monta lisää. On ketterää prosessimallia ja vähemmän ketterää. On agilea ja scrumia. Pointti on: koodaaminen ei ole pelkkää laudan naulaamista puutalon seinään, vaan pitää huomioida myös, ettei rakenneta softasta tietoja vuotavaa homepesäkettä. On huomioitava, että kun projekti etenee, niin usein käyttöliittymää pitää muuttaa. Esimerkiksi Facebook on kokenut useita muodonmuutoksia ja versiopäivityksiä matkan varrella. Sen päivittäminen nykypäivään on vaatinut valtavasti useita koko koodin, käyttöliittymän ja tietokantojen täydellistä päivitystä ja uudelleensuunnittelua. Eikä edes Facebook ole vielä valmis vaan siinä on edelleen valtavan monta bugia ja ongelmaa mitä koodarien pitää ratkoa.
/* kommentti onkohan tämä nyt päällekkäinen kohdan 1 kanssa, pitäisiköhän 1 ja 3 yhdistää seuraavaan versioon. */
4. koodarit juovat vain Coca Colaa
90-luvulla vitsailtiin, että koodarin elämä on nettiä, pizzaa ja kokista. Ei ole enää.
Koodarin ammatissa on nykyään kaikenlaisia ihmisiä: vegaaneja, urheilijoita, taiteilijoita, matemaatikoita, autoharrastajia, robotiikkafaneja, rokkareita, foodieita ja vaikka mitä. Meidän toimistolla harvoin näkee kokista. Joskus toki energiajuomia, mutta useimmiten kahvia tai vettä kuten millä tahansa toimistolla.
Suomalainen koodaamisen osaaminen on maailman huippua. Hatunnosto koodareille. Koodarit parantavat maailmaa koodirivi kerrallaan. Menestystä koodausprojekteihisi! Menestystä elämääsi!
Ilkka Lavas
sarjayrittäjä
kirjoittaja digitalisoi maapalloa pikseli ja koodirivi kerrallaan mm seuraavissa firmoissa: City Digital, TableOnline, City Family, City Dev Labs sekä EatAndTheCity