Mitä on kestävä ohjelmistokehitys?

Kestävä kehitys on nousemassa puheenaiheeksi IT-alalla muun muassa ohjelmistoalan kasvavan hiilijalanjäljen sekä lisääntyvän yhteiskuntavastuun takia. Monet sekä liiketoiminnalliset että yhteiskunnalliset toiminnot muuttuvat entistä riippuvaisemmiksi ohjelmistoista, mikä kokonaisuudessaan lisää alan vastuuta eettiseltä pohjalta.

Kestävässä ohjelmistokehityksessä ei tule ottaa huomioon vain teknisiä vaatimuksia ja
kestäviä teknologiavalintoja, vaan myös se, että testaajat ja kehittäjät ottavat omistajuuden pitkäaikaisesta asiakastyytyväisyydestä. Kestävyyden kannalta yksi haastavimpia asioita onkin jatkuvasti muuttuviin asiakastarpeisiin mukautuminen, esimerkiksi miten priorisoida ominaisuuksien kehittämistä asiakaspalautteen tai muuttuvien liiketoiminnan tarpeiden mukaan.

Kestävä ohjelmistokehitys on synonyymi Compilen tavalle tehdä töitä, ja se on ollut yrityksemme perustajien Juhan ja Mikan ydinfilosofia alusta alkaen. Tämän vuoksi haluamme nostaa esiin, mitä aihe sisältää konkreettisesti ohjelmistokehityksen osalta. Avaamme myös vankan kokemuksemme pohjalta eri näkökulmia kestävään ohjelmistokehitykseen.

Yleisesti kestävä kehitys viittaa nykyhetken taloudellisten, ympäristöllisten sekä sosiaalisten tarpeiden täyttämiseen ilman, että tulevat sukupolvet joutuvat joustamaan omista tarpeistaan. Kestävän kehityksen vaatimuksia tarkastellaan seuraavilla osa-alueilla (Goodland, 2002):

  • Ekologinen kestävyys (Digitalisaation ilmastovaikutus on valtava)
  • Taloudellinen kestävyys (Millaiset ratkaisut ovat taloudellisesti kestäviä ja kustannustehokkaita asiakkaille)
  • Sosiaalinen kestävyys (Millaisia vaikutuksia IT-ratkaisuilla on yhteiskuntaan)
  • Inhimillinen kestävyys (Yksilön jatkuva, elämän mittainen kehittyminen ja hyvinvointi)

Tutkijoiden (Penzenstadler & Femmer, 2013) mielestä nämä neljä osa-aluetta eivät kuitenkaan tarjoa mahdollisuutta tarkastella ohjelmistokehitystä teknisten järjestelmien kestävyyden kannalta. Siksi he ovat lisänneet viidennen osa-alueen ohjelmistokehityksen ja IT-alan tarkasteluun:

  • Tekninen kestävyys (Järjestelmien pitkäaikainen käyttö ja mahdollisuudet kehittää niitä muuttuvien olosuhteiden ja vaatimusten mukaisesti)

Ohjelmistokehitys on siis kestävää, kun ohjelmiston kehittämisestä ja käytöstä koituvat negatiiviset suorat ja epäsuorat vaikutukset talouteen, ihmisiin, yhteiskuntaan ja ympäristöön ovat minimaaliset ja kun ohjelmiston pitkäaikainen käyttö ja kehittäminen muuttuvien olosuhteiden ja vaatimusten mukaisesti on mahdollista.

 

IT-alan kestämätön hiilijalanjälki

Ohjelmistoalalla on vastuu olla sen ympäristöllisestä kuormituksesta tietoinen. Yhdysvaltalaiset tutkijat arvioivat, että vuoteen 2020 mennessä IT- ja viestintä-ala luovat 3,5% globaaleista ilmastopäästöistä, kun taas vuoteen 2040 mennessä suhdeluvun arvioidaan olevan jo 14%. Professori Jukka Manner arvioi Ylen haastattelussa jo vuonna 2013 ICT-alan vastanneen 10% brittien sähkönkulutuksesta vuonna 2007, ja että ala on kovaa vauhtia ohittamassa päästömäärissään paljon kiistellyn ilmailualan.

Digitalisaation myötä datan määrä kasvaa jatkuvasti. Tämän vuoksi vaaditaan myös entistä enemmän hyperskaalautuvia konesaleja, joista isoimmat esimerkit maailmalla kuluttavat kokonaisten valtioiden verran sähköä. Suomessa lähinnä tällaisia on Googlen Haminan palvelinkeskus. Norjassa puolestaan on näytetty jo hyvää esimerkkiä rakenteilla olevan Kolos-datakeskuksen osalta, jonka pyrkimys on olla maailman suurin täysin uusiutuvalla energialla toimiva konesali. Tällaisia konesaliratkaisuja tarvitaan kasvavassa määrin mm. uusien teknologioiden (kryptovaluuttojen data mining, kone- ja syväoppiminen, IoT, robotic process automation) yleistyessä, mikä on mahdollistunut vasta äskettäin 5G-verkon tulon myötä. 5G-verkko kymmenkertaistaa dataliikenteen kapasiteetin verrattuna 4G-verkkoon.

Suuret globaalit pilvipalveluiden tuottajat pyrkivät aktiivisesti pienentämään hiilijalanjälkeään. Google ilmoitti vuoden 2018 ympäristöraportissaan kattavansa 100% sähkönkulutuksestaan markkinoilta ostetulla uusiutuvalla energialla. Amazon puolestaan sanoo AWS:n tuottaneen viime vuonna yli 50% palveluistaan uusiutuvalla energialla, mutta yhtiö on sitoutunut 100%:n tavoitteeseen. Paikallisilla toimijoilla on kuitenkin asian suhteen vielä paljon parantamisen varaa. Monissa tilanteissa ympäristöystävällisin valinta ei aina ole se kustannustehokkain, jolloin taloudellinen valinta ottaa yliotteen etenkin, jos kyseessä on asiakastyö. Kestävyydessä organisaatiot voivat kuitenkin ottaa ensin sisäisesti pieniä askelia ja edetä tästä kohti esimerkin näyttämistä asiakkaalle.

Asiakkaan taloudellisilla resursseilla ei tule kokeilla

Taloudellinen kestävyys viittaa siihen, mitkä ratkaisut ovat kustannustehokkaita asiakkaille. Asiakkaan budjetilla ei vain kokeilla, vaan valitaan aidosti juuri heidän toimintaympäristöönsä parhaiten soveltuvat työkalut ja ratkaisut. Ominaisuuksien kehittämiseen kestävästi kuuluu pienissä osakokonaisuuksissa eteneminen (Minimum Viable Product -henkisesti) sekä maltillinen resurssien allokointi lähitulevaisuuteen vuosia rahaa polttavien IT-hankkeiden sijaan.

Voidaankin sanoa, että joitain hankkeita olisi syytä olla käynnistämättä ollenkaan. Näissä tapauksissa poltetaan resursseja turhaan ja tuotetaan koodia ilman, että edes tiedetään, mihin lopputulokseen ollaan pyrkimässä. Luottamus, läpinäkyvyys ja kestävyysajattelu ovat erityisen tärkeitä toiminnan pohjaa määriteltäessä organisaatioiden ja IT-toimittajien välille.

Myös johtamisjärjestelmien tulisi tukea kestävää talouden kehitystä. Johdon parametrit tulisi asettaa niin, että edetään pienillä ketterillä kokeiluilla eikä allokoida kehityksen resursseja pitkälle tulevaisuuteen. Tällä varmistetaan keskittyminen oikeisiin asioihin. Hankkeissa ilmenee usein isoja haasteita, jotka johtuvat organisaation eri tasojen ristiriitaisista tavoitteista. Nämä tavoitteet tulisi yhdenmukaistaa ja tuoda yhteen kaikille kestävälle pohjalle.

Ohjelmistoalalla suuri yhteiskunnallinen vastuu

Sosiaalinen kestävyys tarkoittaa sosiaalisen pääoman ylläpitoa. Sosiaalista pääomaa ovat investoinnit niihin asioihin, jotka luovat yhteiskuntamme perustan. Yhteiskunnallinen kestävyys vähentää yhteistyön kustannuksia ja parantaa sen edellytyksiä. Luottamus eri osapuolten välillä puolestaan vähentää kaupallisia kustannuksia. (Goodland, 2002.)

Ohjelmistoalalla on kasvavassa määrin suuri eettinen vastuu muun muassa vaalikoneiden algoritmien, tietosuojan ja energiankulutuksen näkökulmasta. Yhteiskuntavastuuraportointi on jo joillain yrityksillä käytössä, mutta miten juuri ohjelmistoala voisi huomioida paremmin tämän kasvavan vastuun?

Microsoftin Jeffrey Snover esittää, että seuraavia yhteiskuntavastuuseen liittyviä kysymyksiä tulisi pohtia ohjelmistokehityshankkeissa:

  • Parantaako ratkaisu ihmisten elämänlaatua?
  • Voitaisiinko ratkaisua väärinkäyttää johonkin epäeettiseen?
  • Mitkä käyttäjäryhmät on suljettu pois?
  • Onko tekemisemme eettistä?
  • Onko tekemisemme laillista?

Tekninen kestävyys rakentuu ihmisten ja kulttuurin kautta

Inhimillinen kestävyys tarkoittaa niinikään inhimillisen pääoman ylläpitoa. Siihen kuuluvat mm. terveys, koulutus, taidot, tietämys ja johtajuus. Investoinnit yksilöiden opetukseen, terveyteen ja ravitsemukseen on otettu mukaan osaksi taloudellista kehitystä ja sen kestävyyttä. (Goodland, 2002.) Ohjelmistokehityksessä tämä voi koskea esimerkiksi kehitystiimien välistä yhteistyötä ja ylipäänsä työhyvinvoinnillisia tekijöitä, eli miten työnantajat kohtelevat työntekijöitään tai miten työntekijät pitävät itsestään huolta.

Ohjelmistoja on rakennettava ja ylläpidettävä niin, että kehittäjät ja tuotekehityksen tiimit voivat olla pitkäjänteisesti tyytyväisiä tekemäänsä työhön ja työympäristöön. Työskentelykulttuurin tulisi perustua asiantuntija- ja asiakasyhteistyöhön, jotta kaikki osapuolet saavat työhönsä ammattilaisten muodostaman yhteisön tuen. Tällaisen toimintatavan yksi parhaita käytänteitä on DevOps-mallinen ohjelmistokehitys ja sen luoma työskentelykulttuuri.

Yleinen ihmislähtöinen kestävyyttä heikentävä ongelma on myös kehittäjien epärealistiset arviot ajankäytöstä. Näin voi käydä, kun kehityssprinteille luodut aikataulut ovat liian tiukat ja laatu kärsii sen seurauksena. Julkaisupaineet saattavat viedä keskittymisen pois huolellisesta koodin katselmoinnista ja testauksesta, kun liiketoimintaa pyritään palvelemaan julkaisemalla uusia toiminnallisuuksia nopeassa tahdissa.

Vaikka ajanhallinnan haasteet ja liiketoiminnan vaatimusten hallinta on usein pois teknisestä kestävyydestä, on useimmissa yrityksissä ongelma kuitenkin kulttuurin tasolla. Aina tulisi pyrkiä luomaan sisäinen kulttuuri, jossa fokus on laadun rakentamisessa. Tähän kuuluu myös ohjelmistoa tekevän tiimin sekä sen osaamisen, motivaation ja työkalujen jatkuva parantaminen. Tiimien laadukasta työtä ja hyvinvointia tukeva työskentely vaatii ympärilleen kestävän organisaatiokulttuurin, joka vaalii jatkuvaa parantamista ja tarjoaa riittävästi resursseja ja tukea kehitykseen.

Ilman ihmislähtöistä kulttuuria ei ole myöskään edellytyksiä tekniselle kestävyydelle. Teknisen kestävyyden osalta voidaan ottaa huomioon esimerkiksi seuraavat osa-alueet (Penzenstadler, 2013):

  • Kehittämisen menetelmät ja työkalut (Development methods and processes)
  • Ylläpidon sekä testauksen käytänteet ja prosessit (Maintenance process)
  • Järjestelmän tuotanto ja valmistus (System production)
  • Järjestelmän käyttöaste (System usage)

Kehittämisen kannalta olennaista on koodin jatkuva parantaminen: koodin arkkitehtuuria ja läpinäkyvyyttä tulee kehittää jatkuvasti mukailemaan muuttuvia tarpeita ja ominaisuuksien vaatimuksia.

On myös tärkeää, että asiakkaita kannustetaan parantamaan kehityksen työkaluja ja menetelmiä siten, että teknistä velkaa ja bugeja ei päätyisi versionhallintaan ja tuotantoon. Tähän sisältyvät muun muassa koodin laaja automaattinen testaus sekä katselmoinnit, joissa on koko tiimi mukana ja joissa ongelmakohdat nostetaan aidosti esille. Näillä toimenpiteillä voidaan parantaa laatua, vähentää regressiota ja nopeuttaa tuotantoa, eli loppujen lopuksi säästää hermoja, luonnonvaroja ja rahaa.

Tämän artikkelin oli tarkoitus antaa yleiskatsaus siihen, mitä kestävä kehitys on, mitkä sen haasteet IT-alalla ovat ja kuinka juuri ohjelmistoala voisi vastata sen kasvavaan vastuuseen sekä teknisessä että ihmislähtöisessä kestävyydessä. Seuraavissa artikkeleissa käsittelemme muun muassa kertomisen ja jakamisen kulttuuria onnistuneissa ohjelmistoprojekteissa, teknisesti kestäviä työkalu- ja teknologiavalintoja sekä vastuullista asiakastyötä.

Lähteet:

Goodland, R. (2002). Sustainability: Human, Social, Economic and Environmental. Encyclopedia of Global Environmental Change: Social and Economic Dimensions, 5, 489–491.

Penzenstadler B. (2013). Towards a Definition of Sustainability in and for Software Engineering. Proceedings of the 28th Annual ACM Symposium on Applied Computing, 1183–1185.

Penzenstadler B., & Femmer H. A. (2013). Generic Model for Sustainability with Process- and Product-specific Instances. Proceedings of the 2013 Workshop on Green in/by Software Engineering, 3–8.

Lue lisää Compilesta | Kokenut ohjelmistokehittäjä – hae meille töihin! | Ohjelmistokonsultointi

Seuraa meitä Linkedinissä niin tiedät aina, mitkä ovat ohjelmistokehityksen toimivimmat käytännöt juuri nyt.

eNPS-mittaus perustuu Fred Reichheldin kehittämään Net Promoter Score -mittariin, jolla alunperin tutkittiin yritysten asiakaskokemusta ja asiakastyytyväisyyttä. Myöhemmin sitä on alettu käyttää myös työntekijätyytyväisyyden tutkimiseen (e niin kuin employee + NPS).

Näin mittaus tehdään.

Kysymme työntekijöiltämme kerran kertaa vuodessa, että “kuinka todennäköisesti suosittelisit työpaikkaasi ystäville tai tutuille asteikolla 0-10?”. Sen jälkeen pyydämme tarkennusta avoimella kysymyksellä: ”mistä syystä annoit tämän tuloksen?”.

Niitä, jotka antavat luvuksi 9 tai 10, kutsutaan suosittelijoiksi. Niitä, jotka antavat luvuksi 0-6, kutsutaan kriitikoiksi.

eNPS-tulos lasketaan vähentämällä suosittelijoiden suhteellisesta prosenttiosuudesta kriitikoiden suhteellinen prosenttiosuus. Muut vastaukset saavat arvon 0.

Mittarin tulokset voivat olla mitä vain -100 ja +100 väliltä. Yli nollan nousevat tulokset ovat tyydyttäviä. +10 ja +30 välillä olevia tuloksia pidetään hyvänä, ja yli +50 olevia tuloksia pidetään erinomaisena.