Ketterästi kohti korkeampaa laatua: Platform Engineeringin rooli nykyaikaisessa ohjelmistokehityksessä
Nykyajan ohjelmistokehitysympäristö, ketterät toimintatavat ja DevOps-tyyppiset toimintamallit ovat muuttaneet ohjelmistokehittäjän työtä merkittävästi.
Ohjelmoijan työ ei ole enää pelkän koodin tuottamista. Ohjelmistokehittäjiltä edellytetään laajaa teknistä osaamista ja joustavuutta uusien työkalujen ja menetelmien omaksumisessa. Pilvipohjaiset alustat, konttiteknologiat, ja mikropalveluarkkitehtuurit ovat esimerkkejä alueista, joiden ymmärtäminen on tärkeää. Tämän lisäksi ketterät kehitysmenetelmät, jatkuva integraatio ja jatkuva toimitus (CI/CD) ovat keskeisiä käytäntöjä, jotka edistävät nopeaa ja tehokasta ohjelmistotuotantoa. Ohjelmistokehittäjien on myös ymmärrettävä ja sovellettava laadunvarmistuksen periaatteita kaikissa kehityksen vaiheissa, sekä pidettävä turvallisuus ja yksityisyys etusijalla kaikessa toiminnassaan.
Kaikki tämä tekee työstä mielenkiintoista mutta samalla vaativaa ja altistaa virheille. Kansainvälisessä yrityksessä ohjelmistokehityksestä vastaava henkilö totesikin, että ”kyllä me peruskoodivirheet saadaan nykyään jo aika hyvin kiinni, mutta prosessissa tuppaa aina sattumaan jotain ja joku toimii tietämättään väärin, muokkaa väärää versiota tai tallentaa muutoksia vääriin paikkoihin…”.
Laatuhaasteen lisäksi ympäristö heikentää myös tuottavuutta. Entistä monimutkaisempi toimintaympäristö lisää tarvetta kysyä ja saada apua. Vaikka kommunikaatio on yleensä hyvä asia, niin tässä muodossaan se johtaa siihen, että kokeneimmilta ja osaavimmilta tiimin ja yhteisön jäseniltä pyydetään entistä enemmän apua ja tukea. Tästä seuraa paljon työn keskeytyksiä ja se syö tehokkuutta kaikilta, mutta erityisesti tiimin tuottavimmilta jäseniltä. Tiimin tuottavuus ja tehokkuus laskee!
Kolmas haaste, työn päällekkäisyys, vaikuttaa tehokkuuteen ja innovaatiokykyyn organisaatioissa. Tämä ilmenee usein siten, että eri tiimit tai yksilöt kehittävät lähes samanlaisia teknisiä komponentteja tietämättään tai siksi, että on helpompi tehdä oma uusi komponentti kuin hyödyntää olemassaolevaa komponenttia. Organisaatiossa ei ole riittävästi tietoa muiden tekemästä työstä, eikä ole olemassa tehokkaita keinoja jakaa tätä tietoa ja toisaalta löytää tietoa. Vaikka tietoa toisten kehittämistä komponenteista olisikin saatavilla, niiden integroiminen ja hyödyntäminen omassa työssä voi olla haastavaa. Eri tiimit saattavat käyttää erilaisia teknologioita ja standardeja, mikä tekee yhteensopivuudesta haastavampaa. Päällekkäinen työ tuhlaa yrityksen voimavaroja ja niitä ei käytetä parhaalla mahdollisella tavalla. Organisaation kyky innovoida ja kehittää uusia ratkaisuja heikkenee.
Kaikenkaikkiaan moderni, mutta samalla monimutkainen sovelluskehitysympäristö aiheuttaa haasteita laajasti, mikä näkyy laadussa, tuottavuudessa, tehokkuudessa sekä työn tekemisen mielekkyydessä.
Yksittäistä hopealuotia on turha etsiä ja ratkaisua haasteeseen onkin syytä rakentaa laajasti: osaamisen kehittämisestä, toimintatavoista, prosesseista, organisoitumisesta ja työkaluista.
Toimintatapojen ja organisoitumisen alueella monet organisaatiot kääntävät katseensa Platform Engineering -toimintamalliin, joka on noussut yhdeksi ohjelmistokehityksen kuumimmista aiheista.
Platform Engineering -toimintamallia voisi yksinkertaistaa ja kuvata siten, että panostetaan ja parannetaan kehitystiimien toimintaedellytyksiä tarjoamalla niille paremmat mahdollisuudet uudelleenhyödyntää organisaatiossa jo tehtyä työtä ja käyttää tehokkaasti työkaluja ja koko infrastruktuuria. Tämä saavutetaan usein muotoilemalla infrastruktuuri ja kehitysympäristö itsepalvelumalliseksi ohjelmistokehitysalustaksi ja tarjoamalla kaikki ohjelmistokehityksen artefaktit kaikkien löydettäväksi ja hyödynnettäväksi. Platform engineering -toimintamallissa tuon ohjelmistokehitysalustan kehittäminen, ylläpito ja hallinta on keskitetty omaan tiimiin tai tiimeihin. Tämä mahdollistaa kehittäjille nopeamman ja sujuvamman työskentelyn ja vähentää aikaa, joka kuluu ympäristön määrittelyyn ja ylläpitoon.
Pintaraapaisulla Platform Engineering -toimintamalli muistuttaa hyvin paljon perinteistä mallia, jossa it-infrastuktuuri on keskitetty IT-organisaatiolle ja joka palvelee kehitystiimejä usein systemaattisesti esim. tikettipohjaisesti. Onko tässä vain keksitty uusi nimi tutulle toimintamallille?
Kannattaa kuitenkin perehtyä asiaan, sillä se on merkittävästi erilainen ja aidosti ketterän filosofian mukainen. Ero pohjautuu täysin erilaiseen organisaation ohjelmistokehityksen kulttuuriin, jossa korostuvat tiimien autonomia, vastuu lopputuloksesta ja sen toimivuudesta ja hyödynnettävyydestä ja tavoitteena on työn nopeus ja sujuvuus.
Kenties suurin ero muodostuu siitä, että perinteinen malli pyrki hiomaan tiimien tukea ulkopuolisena palveluna ja Platform Engineering mallissa pyritään mahdollistamaan tiimien autonomia ja nopea toiminta erilaisin itsepalveluin ja automaation keinoin mutta kuitenkin yhteisiin toimintatapoihin ohjaten.
Summa summarum, Platform Engineering on katalysaattori, joka mahdollistaa organisaatioiden kilpailukyvyn, innovaation ja tehokkuuden, tuottaen samalla laadukkaampaa toimintaa ja virheettömämpää ohjelmistoa.
Toisaalta Platform Engineering voidaan nähdä myös ammattimaista ja tehokasta sovelluskehitystyötä tekevän, DevOps tai DevSecOps -toimintamallia tavoittelevan organisaation työnjakoa, organisoitumista ja kulttuuria ohjaavana periaatteena.