Huippukoodarin filosofia – hyvä koodi alkaa ennen ensimmäistäkään koodiriviä 

Hyvä koodi ei synny pelkästään teknisestä osaamisesta. 

Teollisten koneiden ja laitteiden ohjelmistokehityksessä hyvä koodi näkyy ennen kaikkea lopputuloksessa: kone toimii suunnitellusti, muutoksia voidaan tehdä hallitusti ja järjestelmä pysyy ylläpidettävänä myös vuosien päästä.  

InSolutionin kesäpäivillä pysähdyimme pohtimaan tätä koodauksen filosofiaa käsitelleessä workshopissa. Keskustelu kiteytyi muutamaan perusasiaan: ongelman ymmärtämiseen, hyvään arkkitehtuuriin, datan omistajuuteen, uudelleenkäytettävyyteen, dokumentointiin ja kokonaisuuden testaamiseen. 

InSolution Goes Hanko

Ensin ongelma, sitten ratkaisu 

Teollisessa ohjelmistokehityksessä pelkkä tekninen määrittely ei riitä. Ohjelmoijan täytyy ymmärtää myös koneen, laitteen tai prosessin toimintaa ja sitä, mitä ratkaisulla tavoitellaan. 

Jos käyttöliittymässä käyttäjä esimerkiksi syöttää koneelle arvon, ei riitä, että tieto saadaan teknisesti välitettyä PLC:lle. Tekijän pitää ymmärtää myös, mitä arvo prosessille tarkoittaa, millaiset arvot ovat sallittuja ja mitä tapahtuu poikkeustilanteissa. 

Tärkein kysymys ei siis ole ensimmäisenä “miten tämä toteutetaan?”, vaan “Mitä tällä oikeastaan halutaan saada aikaan?” Kun tavoite ymmärretään oikein jo alussa, myös teknisille ratkaisuille saadaan oikea suunta. 

Hyvä arkkitehtuuri näkyy erityisesti silloin, kun jokin muuttuu 

Harva rakentaa tarkoituksella vaikeasti ylläpidettävää järjestelmää. Spagettia syntyy yleensä vähitellen: yksi poikkeus tänne, toinen tuonne ja kiireessä tehty ratkaisu vielä kolmanteen paikkaan. Siksi arkkitehtuuria kannattaa miettiä ennen toteutusta. 

Hyviä kysymyksiä ovat esimerkiksi: 

  • Mitä tapahtuu, jos tämä laite tai komponentti vaihdetaan myöhemmin toiseen? 
  • Voidaanko samaa ratkaisua hyödyntää seuraavassa konemallissa? 
  • Missä data sijaitsee ja kuka sitä saa muuttaa? 
  • Ovatko eri järjestelmän osien väliset rajapinnat selkeitä? 

Täydellistä modulaarisuutta ei tarvitse tavoitella, eikä kaikkea kannata abstrahoida varmuuden vuoksi. Tavoitteena on rakenne, jossa yhden asian muuttaminen ei hajota viittä muuta. 

Kuka omistaa datan? 

Yksi workshopin keskeisistä aiheista oli datan omistajuus. 

Erityisesti PLC-ohjelmoinnissa järjestelmä pysyy selkeämpänä, kun jokaisella kokonaisuudella on vastuu omasta toiminnastaan ja datastaan. 

Ajatellaan esimerkiksi kuljetinta. Kuljettimella voi olla moottori, antureita ja tilatietoja. Hyvässä rakenteessa kuljetin tietää oman toimintansa ja ohjaa moottoria tarvitsemallaan tavalla sen sijaan, että järjestelmän muut osat muuttaisivat suoraan moottorin sisäisiä tietoja. 

Kaikkea dataa ei tarvitse eikä pidä jakaa kaikkialle. 

Selkeät vastuut ja rajapinnat tekevät kokonaisuudesta helpommin ymmärrettävän, testattavan ja uudelleenkäytettävän. 

Uudelleenkäyttö syntyy suunnittelusta 

Uudelleenkäytettävyys ei tarkoita vanhan projektin kopioimista uuteen hakemistoon. 

Se syntyy hyvästä arkkitehtuurista, selkeistä rajapinnoista ja sopivasti rajatuista kokonaisuuksista. Kun hyväksi todettuja ratkaisuja voidaan hyödyntää uudelleen, seuraavan projektin tekeminen helpottuu. 

Kaikkea ei kuitenkaan kannata rakentaa yleiskäyttöiseksi. 

Hyvä suunnittelu on myös kykyä tunnistaa, mitkä asiat kannattaa vakioida ja mitkä ratkaista projektikohtaisesti

Kommentoi miksi, älä kaikkea 

Hyvän koodin pitäisi kertoa mahdollisimman pitkälle itse, mitä siinä tapahtuu. Kommentin tärkein tehtävä on usein kertoa, miksi jokin ratkaisu on tehty. 

Erityisen tärkeää tämä on silloin, kun toteutus poikkeaa normaalista toimintatavasta esimerkiksi asiakkaan prosessin, laitteen ominaisuuden tai aiemmin havaitun ongelman vuoksi. 

Tekoäly helpottaa nykyään myös dokumentointia ja kommentointia, mutta määrä ei korvaa laatua. Olennaista on jättää seuraavalle tekijälle riittävästi tietoa ratkaisujen taustoista ilman, että tärkeä tieto hukkuu massaan. 

Testaa kokonaisuus, älä vain omaa osuuttasi 

Projektissa voidaan testata jokainen yksittäinen osa onnistuneesti ja silti päätyä järjestelmään, joka ei asiakkaan näkökulmasta toimi. 

PLC-ohjelmoija on testannut oman osuutensa. Käyttöliittymän tekijä omansa. Sitten käyttäjä painaa HMI:n nappia – eikä mitään tapahdu. Siksi yksi tärkeimmistä testauksen periaatteista on yksinkertainen: 

Testaa koko ketju HMI:n napista PLC:n lähtöön ja fyysisen laitteen toimintaan asti. 

Asiakasta ei lopulta kiinnosta, toimivatko järjestelmän yksittäiset komponentit irrallaan. 

Asiakasta kiinnostaa, toimiiko kokonaisuus. 

Hyvä koodi ei synny sattumalta 

Hyvän ohjelmistokehittäjän tunnistaa teknisestä osaamisesta, mutta teollisissa järjestelmissä yhtä tärkeää on kyky ymmärtää koneen toimintaa, asiakkaan tarvetta ja ratkaisun koko elinkaarta. 

Huippukoodari kysyy ensin, mitä oikeasti ollaan ratkaisemassa. Hän miettii, kuka datan omistaa, rakentaa selkeät rajapinnat, dokumentoi olennaisen ja varmistaa lopuksi, että kokonaisuus toimii käyttäjän näkökulmasta asti. 

Hyvä koodi ei ole itseisarvo, vaan osa toimivaa kokonaisuutta.

Parhaimmillaan se ratkaisee oikean ongelman, on ymmärrettävää myös seuraavalle tekijälle ja antaa tilaa muutoksille ilman, että koko paketti pitää rakentaa uudestaan. 


Haluatko jatkaa aiheesta?

Jos teollisen ohjelmistokehityksen, automaation tai ohjelmistoarkkitehtuurin kehittäminen on ajankohtaista, jutellaan mielellämme lisää. Ota yhteyttä


Katso myös tunnelmia InSolutionin kesäpäiviltä Hangosta →

Lue myös

InOS (Industrial Operation System) demo Automaatioklubilla 12.2.2026
Alustavetoisella automaatiosovelluskehityksellä jopa 30–40 % tehokkaampi kehitys ja parempi laatu

Entä jos automaatiojärjestelmää ei tarvitsisi rakentaa tyhjästä? Onko automaation uusiminen ajankohtaista, tai oletko keskellä tuotekehitysprojektia, jossa automaatio määrittää lopputuloksen? Rakennetaanko se kerralla oikein – vai

InSolution TekniikkaTalous 4 (1)
Automaatiosuunnittelua perävalotakuulla vai elinkaaren kokoinen yhteistyökumppani? 
InSolutionilla ymmärretään teollisuuden vaatimuksia, oli kyseessä sitten pienempi muutaman hengen paja tai suurempi pörssiyhtiö. Emme jätä asiakasta yksin, kun sähköt kytketään päälle!
Insolution_Rekry
We’re hiring! Katso avoimet työpaikat.

We’re hiring! InSolution on paikka, jossa luovuus, huippuosaaminen ja tiimihenki kohtaavat. Nyt myös sinulla on mahdollisuus liittyä joukkoomme, sillä etsimme tekijöitä.

Ota yhteyttä

Ratkaistaan haasteesi yhdessä