Kestävä kehitys ohjelmistokehityksessä tarkoittaa tehokkaiden, luotettavien ja ympäristöystävällisten sovellusten ja järjestelmien luomista. Tämä lähestymistapa tasapainottaa innovatiivisen teknologian tarpeen ja vastuun ympäristövaikutusten minimoinnista ja sosiaalisen hyvinvoinnin edistämisestä. Kestävillä käytännöillä kehittäjät voivat luoda ohjelmistoja, joilla on positiivinen vaikutus niin ihmisiin kuin planeettaan.
Hyvistä käytännöistä syntyy parhaita ratkaisuja
Vielä on työtä tehtävänä, jotta digipalveluiden ympäristöystävällisyydestä tulisi megatrendi. Yhteiskunnallisella tasolla on pikkuhiljaa alettu vasta puhumaan esimerkiksi kierrätysmateriaalien käytöstä tai hiilijalanjäljestä.
Perinteisesti ohjelmistokehityksessä tehostaminen on ollut elintärkeää, kun käytettävissä olevista resursseista on puhuttu kilobiteissä gigojen sijaan. Teknologian kehittyessä resursseista ei kuitenkaan ollut enää pulaa, joka johti massiivisiin ohjelmistoihin, joissa optimointi jäi taka-alalle.
Meidän on kuitenkin pakko havahtua siihen tosiasiaan, että kuten kaikki muukin maailmassa, myös ohjelmistot ja nettisivut vaativat energiaa toimiakseen. Ohjelmistokehittäjät ovatkin tutun ongelman edessä: Miten ohjelmistoista ja verkkosivuista tehdään pienempiä ja tehokkaampia, kuitenkaan tinkimättä toiminnallisuuksista ja saavutettavuudesta?
Vielä suurempi kysymys on, miten vastuullisuus tuodaan vakiintuneeksi osaksi kehittämistä. Ideaalitilanteessa se olisi keskeinen osa koodauksen ja kehittämisen mittareita.
Yksi tärkeä näkökulma on elinkaariajattelu, joka on tuttu fyysisten tuotteiden maailmasta. Elinkaariajattelussa otetaan huomioon muun muassa seuraavat asiat: Kuinka pitkään palvelu on käytettävissä, kuka siitä vastaa ja kenelle vastuu palvelusta siirtyy?
Lisäksi on tärkeää huomioida, miten palvelun elinkaari loppuu: Miten lopetus tehdään, tuleeko tilalle uusi palvelu, pitääkö palvelun osia vielä ylläpitää, ja mitä jäljelle jäävälle datalle tehdään? Elinkaariajattelun tulee olla mukana alusta asti, ja sen vaatimusten tunnistaminen vaatii hyvää käsitystä kokonaisarkkitehtuurista.
Löytyisikö vastaus standardisoinnista?
Yksi kehittäjien tehtäväkuvaan kuuluvista alueista on mahdollisimman tehokkaiden ratkaisujen toteutus. Oman työn perusteelliseen arviointiin ei kuitenkaan aina löydy riittävästi aikaa, ja optimointi jää muun työn jalkoihin.
Yksi hyvä tapa varmistaa, että optimoinnille jää aikaa, on lisätä se kriteeriksi “tehty”-listalle (Definition of Done: asiat, jotka pitää olla tehtynä ennen kuin kehitettävä ominaisuus luokitellaan valmiiksi). Tällöin energiatehokkuuteen on sitouduttu projektitasolla, ja se on helpompi ottaa osaksi aika-arviota.
Koodikatselmus kriteereineen on yksi tehokkaimmista tavoista vaikuttaa koodin energiatehokkuuteen päivittäisessä työssä. Kun kaikki muutokset ja lisäykset kulkevat useiden silmäparien ohi, mahdolliset logiikkavirheet, epätehokkaat ratkaisut tai muut epäselvyydet eivät pääse tuotantoon asti.
Ideaalissa tilanteessa energiatehokkuuteen suhtauduttaisiin samanlaisesti kuin saavutettavuuteen, jolle on olemassa viralliset, lain vaatimat standardit. Näin saattaa tulevaisuudessa olla, mutta tällä hetkellä kyse on vielä vapaaehtoisesta toiminnasta.
Eräs ongelma, joka hankaloittaa standardoinnin mahdollisuutta, on mitattavuus tai oikeastaan sen puute. Mikäli käytettävään laitteeseen ei saa kiinni fyysistä mittaria, energiankulutusta voi vain arvailla parhaan tiedon mukaan.
Hiilipäästöjen arvioimiseen on kuitenkin saatavilla työkaluja, jotka arvioivat nettisivujen päästöjä esimerkiksi datan määrän, liikenteen ja palvelimien mukaan. Website Carbon Calculator on esimerkiksi tällainen palvelu. Suuret pilvipalveluiden tarjoajat antavat myös omia arvioitaan, joten kehittäjillä on mahdollisuus saada jonkinlainen arvio tuotteen ympäristövaikutuksista.
Saavutettavuudella ja tehokkuudella on merkitystä
Kuten edellisessä luvussa mainitsin, saavutettavuus on tunnistettu tärkeäksi kriteeriksi digitaalisten palveluiden kehityksessä. Saavutettavuus ja vastuullisuus tukevatkin usein tosiaan.
Esimerkiksi pidentämällä laitteiden käyttöikää, käyttäjien ei tarvitse ostaa uusia laitteita ja opetella niiden käyttöä. Myös vähäinen määrä liikkuvia elementtejä sivulla, kuten esimerkiksi videoita, vähentää datan määrää ja helpottaa käyttöä.
Vaikka loppukäyttäjän energiakulutukseen kehittäjä ei voi suoraan vaikuttaa, voi selkeällä rakenteella ja helppokäyttöisyydellä nopeuttaa palvelun käyttöä, eli teoriassa vähentää käyttäjän energiankulutusta.
Mitä ensimmäisiä askelia kehittäjä voi ottaa omassa työssään?
Kehittäjälle jokapäiväisessä työssä tärkeintä olisi tehdä luettavaa, ymmärrettävää ja ylläpidettävää koodia. Mikäli koodi on spagettiin vertautuva sekamelska, siihen ei välttämättä tulevaisuudessa haluta edes koskea, vielä vähemmän optimoida sitä. Jokaiselle kehittäjälle tuttu ilmiö on “to do”-rivi, joka on viimeksi päivätty kolme vuotta sitten.
Yksinkertaisessa ja helppolukuisessa koodissa on etuna myös se, että mahdolliset bugit ja virheet on helpompi löytää ja korjata. Tällöin myös itse korjaus säästää niin aikaa kuin kehittäjän hermoja.
Toinen, hyvin yleinen ilmiö (erityisesti web-kehityksessä) on monenlaiset kirjastot, näiden apukirjastot ja pluginit. Mikäli netistä lataillaan kirjastoa kirjaston perään, niin hallittavien lisäosien kuin koodinkin määrä kasvaa hurjasti. Kun käyttää vain tarpeellisia kirjastoja, joiden sisältö on varmistettu, tiedostojen määrä vähenee, ja myös tietoturvariski pienenee.
Lopuksi mainittakoon ehkä kehityksen keskeisin asia: valitse työkalut projektin mukaan. Esimerkiksi pääasiassa tekstiä ja muutamia kuvia sisältävän portfoliosivun rakentamiseen ei välttämättä ole järkevää tai resurssitehokasta käyttää työkaluja, jotka loistavat suurten, monisivuisten ja monimutkaisten nettisivujen rakentamisessa.