Sovelluskehityksen 5 yleisintä virhettä

Digitaaliset ratkaisut ja kyvykkyydet ovat iso osa nykypäivän digitaalista liiketoimintaa. Digitaalisuus ja modernit menetelmät mahdollistavat yrityksille tänä päivänä paljon. Ne tarjoavat mahdollisuuden päästä asiakkaan lähelle ja nopeasti, ja ovat myös monen liiketoiminnan edellytys. Mitä enemmän liiketoiminnot nojaavat ns. digipalveluihin, niin sitä enemmän tulee eteen aiheita joiden olisi tärkeää olla oikein alkujaan.

Tavoitteeni listalle oli nostaa esille aiheita joissa havaitsemme puutteita. Nämä pohjautuvat yleisesti kokemukseen ja keskusteluihin, joita olemme käyneet. Lista ei ole tyhjentävä, joten panostaminen näihin asioihin potentiaalisesti tekee projektista menestyksekkäämmän ja auttaa välttämään mahdollisia törmäyksiä matkan varrella.

Teknologian valinnoissa tehdään valintoja fiiliksellä tai vain euroja katsellen.

Erittäin usein tulee vastaan tapauksia, joissa ollaan lähdössä kehittämään ratkaisua toisen ratkaisun jatkeeksi ns. hyllytuotteen kustomointi. Tämä on usein se lähestyminen, joka tulee ensimmäisenä mieleen ja ei välttämättä ole väärä lähestyminen. Tämä kuitenkin ajaa ratkaisun pahimmillaan tilanteeseen, missä tuotteen tavanomaiset päivitykset voivat hajottaa ratkaisun ja aiheuttaa pahimmillaan lumipalloefektin, jossa “vahingot” eivät rajoitu välttämättä vain kehityksen kohteena olevaan järjestelmään. Riippuen toki mitä tavoitellaan, niin olisi hyvä koluta teknologista portfoliota riittävästi läpi, etsiä sopivat osat ja täyttää välit oikein. Parasta on, että olemassa olevat palaset voivat toteuttaa sitä mitä ne tekevät parhaiten. Teknologia valinnoilla mahdollistetaan paljon, mutta tärkeintä olisi huomioida, että valinnoissa painotettaisiin jatkuvuutta.

Tietoturvan merkitystä ei osata ennalta arvioida tai määritellä.

Iso aihe, mutta jälleen kerran tapauksia on tullut vastaan, missä nopean silmäilyn tuloksena löydetään vakavia puutteita, haavoittuvuuksia ja yksinkertaisesti virheitä, joita ei saisi tehdä. Tietoturva ei ole yksinkertainen tai -ulotteinen aihe ja siinä onnistuminen vaatii paljon niin toimittajalta kuin asiakkaalta. Yksi iso osa tietoturvaa on myös käyttäjän turvaaminen ja tämä valitettavasti on aihe, jossa moni oikaisee. Tietoturvaa ei pidä missään nimessä vähätellä, mutta sen ei myöskään tarvitse olla peikko. Onnistuminen tietoturvan saralla voidaan varmistaa, kun perusasiat ovat kunnossa ja pohjana voidaan hyödyntää valmista viitekehystä ja jota noudattamalla pääsee jo hyvin liikkeelle.

Ylläpidon ja/tai jatkokehityksen tärkeyden aliarvioiminen.

Valitettavan monessa projektissa ei panosteta yksinkertaisesti riittävästi dokumentaation osuvuuteen. Dokumenttia ei pitäisi kirjoittaa dokumentoinnin takia vaan aiheen, merkityksen tai kohteen takia. Tämän jatkeeksi jos teknologiset valinnat tehtiin huonoin perustein ja ylläpitoa ei suunniteltu riittävästi, niin tässä kohtaa voidaan pahimmillaan todeta rahojen menneen haaskuun. Jos teknologialle/ratkaisulle ei löydy osaajia markkinoilta ja dokumentaatio ei riitä haltuunottoon, niin usein ollaan oman onnen varassa. Tätä saatetaan paikata palkkaamalla henkilö(itä), jolla tilannetta yritetään saada hallintaan. Ylläpitoon liittyvät tarpeet olisi viisasta ratkaista jo ennen kuin kehittämiseen lähdetään, ja esimerkiksi panostaminen toimivaan DevOps kulttuuriin ja moderneihin CI/CD menetelmiin varmistavat, että homma pysyy hallinnassa ja tuloksia syntyy myös jatkossa ja ylläpitäminen sekä reagointi tapahtumiin helpottuu huomattavasti.

Tarvetta ei määritelty riittävän tarkasti tai osapuolien tarpeita ei huomioitu.

Pahimmillaan lyhyt “valmistautumisaika” voi johtaa paniikinomaiseen ratkaisuun; “valitaan tää härveli, koska se todennäköisesti taipuu tarpeisiimme” tai “kyllähän näin ison toimittajan organisaatio tän ratkaisee”. Esimerkiksi lisenssien päättymiseen olisi tärkeää reagoida riittävissä ajoin, ja olisi hyvä selvittää itselleen: a) haluaako jatkaa ko. härvelin kanssa ja mitä se tarkoittaa, vaiko b) siirtyä toisenlaiseen järjestelmään ja mitä se puolestaan tarkoittaa. Siirtyminen järjestelmästä toiseen voi olla kivuliasta, kallista ja pahimmillaan paljastaa kuinka tiukasti liiketoiminta on riippuvainen esim. jostain custom -prosesseista. Suunnittelun taikka määrityksien merkitystä ei siis voi koskaan vähätellä ja niihin tulisi käyttää aikaa ja vaivaa. Näillä usein varmistetaan, että nykytilanne ymmärretään kattavasti ja tavoitetilasta ollaan hyvässä ymmärryksessä.

Skaalautumista ja optimointia ei huomioida alkujaan.

Mitä jos liiketoiminta kasvaa ja ratkaisua halutaankin laajentaa? Hyvin optimoitu ja toteutettu ratkaisu hyödyntää vain tarvittavan määrän kapasiteettia, jolloin et maksa ylimääräisestä. Pelimaailma on hyvä esimerkki tästä, sillä serveri resurssien hyödyntämistä pyritään optimoimaan viimeistä bittiä myöden. Pelimaailmaan tarpeet ja perusperiaatteet ovat yleistäen samoja taustajärjestelmien osalta, mutta volyymit ovat omassa kategoriassaan. Optimoimalla voidaan saavuttaa parhaimmillaan isoja säästöjä, koska turhaa dataa ei tallenneta, ohjelmistokomponentit eivät syö turhia resursseja, eikä verkkoliikenne paisu turhista pyynnöistä. Helpommin sanottu kuin tehty, mutta modernit menetelmät ja teknologiat mahdollistavat paljon ja oikein suunniteltuna palveluita voidaan skaalata automaattisesti tarpeeseen pohjautuen minuuteissa ja parhaillaan jopa sekunneissa.

Kysyvä ei tieltä eksy

Toimivan kokonaisuuden kehittäminen vaatii huolellisuutta, määrätietoisuutta, useita osapuolia ja aikaa. Näin ollen ratkaisun tai sovelluksen kehitykseen ei löydy yksittäistä hopealuotia, jolla varmistetaan onnistuminen. Hyvä varautuminen ja valveutuminen edistää onnistumisen mahdollisuuksia huomattavasti.

Kirjoitukseni tavoite on saada lukija miettimään, mikäli kyseisille aiheille on annettu riittävästi huomiota ja ovatko valinnat omaan projektiin liittyen olleet perusteltuja. Yksi asia on hyvä pitää mielessä, ennen kuin astuu mukaan sovelluskehityksen maailmaan: “Kysyvä ei tieltä eksy”.

Tervetuloa luomaan tulevaisuuden teknologiaa!

Facebook
Twitter
LinkedIn