Digital product development guide
01 Introduction02 Getting organised03 Design04 Implementation05 Testing06 Analytics07 Risk management08 In conclusion
Production

Digitaalisen tuote­kehityksen opas

Parhaimmillaan digitaalisen tuotteen rakentaminen voi olla inspiroiva yhteinen matka. Tämän oppaan tarkoituksena on kuvata kehityksen parhaita käytäntöjä. Opas on saatavana myös pdf-muodossa.

01Johdanto

Mikä on digitaalinen tuote?

Digitaalisella tuotteella voidaan tarkoittaa mitä tahansa ohjelmistoa, jolla on määritelty tarkoitus. Lopputulos heijastaa sitä, missä yhteydessä tuotetta käytetään ja mitä tavoitteita sen kehittäjillä on ollut.

Onnistuneen digitaalisen tuotteen luominen vaatii monipuolista ammattitaitoa. Tarvittavia osaamisalueita ovat tyypillisesti palvelumuotoilu, digitaalinen suunnittelu, ohjelmistokehitys, testaus, analytiikka ja markkinointi.

Lopputuloksena voi olla mobiilisovellus, verkkopalvelu tai ohjelmisto. Mahdollisuudet eri alustojen ja käyttötapausten suhteen ovat rajattomat.

Palvelumuotoilu

  • Konseptin luominen
  • Strategia
  • Käyttäjätutkimus

Digitaalinen suunnittelu

  • UX/UI-suunnittelu
  • Design-systeemit
  • Prototyypit

Testaus, analytiikka ja käyttöönotto

  • Tuote- ja UX-testaus
  • Analytiikka ja raportointi
  • Tuotteiden käyttöönotto

Ohjelmistokehitys

  • Tekninen arkkitehtuuri
  • Toteutus, back end ja front end

Sopiva ratkaisu kuhunkin tilanteeseen

Digitaaliset kehityshankkeet ovat hyvin vaihtelevia paitsi kokonsa, myös tavoitteidensa puolesta. Esimerkiksi: vakiintuneen tuotteen suorituskyvyn parantaminen on hyvin erilainen projekti kuin uusi sovellus, jonka tarkoitus on luoda uudenlainen, toimialaa mullistava liiketoimintamalli.

Jokainen projekti vaatii juuri oikeanlaista työtehtävien ja taitojen yhdistelmää. Työn jakautuminen osaajien välillä vaihtelee projektin aikana.

Designlähtöinen kehitys

Kehitysfilosofiamme on designlähtöinen. Tämä lähestymistapa on punainen lanka kaikkien tässä oppaassa esitettyjen ajatusten taustalla.

Designlähtöisyys tarkoittaa, että loppukäyttäjä on huomion keskipisteenä alusta alkaen. Tämä periaate ohjaa projektin kaikkia vaiheita. Digitaalisen tuotteen on palveltava yhtä lailla sekä liiketoimintatavoitteita että käyttäjiä.

Yksinkertainen on kaunista ja tehokasta. Uskomme, että designlähtöisyys on ylivoimaisesti kustannustehokkain tapa luoda laadukkaita digitaalisia tuotteita.

Mitä on laatu?

Maailma on tulvillaan digitaalisia tuotteita, joiden tuottama lisäarvo vaihtelee suuresti. Meidän periaatteenamme on, että emme tuota digitaalista jätettä. Laadukkaalla digitaalisella tuotteella on selkeä syy olla olemassa: se palvelee käyttäjiensä tarpeita ja sen luoneen organisaation tavoitteita.

Laatu tarkoittaa myös intuitiivista käyttökokemusta, jonka mahdollistaa vahva tekninen toteutus. Tyylikkyys on seurausta siitä, kun monimutkaiset ongelmat muutetaan yksinkertaisiksi ja kauniiksi ratkaisuiksi.

Laadunvarmistus

Laadunvarmistus ei ole muusta tekemisestä irrallinen vaihe: sen on syytä kulkea mukana koko projektin ajan. Laadukkaat lopputulokset saavutetaan, kun oikeat ihmiset käyttävät oikeita prosesseja ja työkaluja – riittävän budjetin tuella.

Tämän julkaisun tarkoituksena on kuvata laadukkaiden digitaalisten tuotteiden peruspilarit. Lopulta laadun tärkein edellytys on kaikkien osallisten sitoutuminen. Tämän tulee heijastua niin pieniin kuin suuriinkin valintoihin.

Ketteryys

Siinä, miten ketteryys ymmärretään ja miten sitä sovelletaan varsinaiseen työhön, on jonkin verran vaihtelua. Meille ketteryyden tärkein periaate on palautteen kerääminen eri muodoissa jokaisessa kehitysvaiheessa – sekä halu ja kyky muuttaa suuntaa sen perusteella.

Suunnittelussa tämä tarkoittaa ideoiden validointia haastatteluilla ja prototyypeillä sekä muilla palvelumuotoilun työkaluilla ja menetelmillä. Teknisessä toteutuksessa ilmenemismuotoja ovat vertaisarvioinnit ja tarkasti määritellyt testausprosessit. Analytiikka auttaa meitä keräämään ja arvioimaan dataa käyttäjien toiminnasta.

02Järjestäytyminen

Perustan rakentaminen: Tavoite ja konteksti

Onnistunut digitaalinen projekti alkaa aina kontekstin määrittämisestä, tavoitteiden ja käytettävissä olevien resurssien arvioinnista sekä rajoitteiden ymmärtämisestä. Nämä tekijät on syytä kommunikoida koko tekijätiimille.

Projektin muut vaiheet voidaan aloittaa vasta tämän määrittelytyön jälkeen. Periaate on sama hankkeen koosta riippumatta – ja yksi tärkeimmistä onnistumisen edellytyksistä.

Tiimin kokoaminen

Tiimin koko ja kokoonpano määräytyvät sekä projektin että projektivaiheen mukaan. Mikäli mahdollista, suosimme työpareja: jokaisella tiimin jäsenellä on hyvä olla joku tukemassa heidän työskentelyään.

Projektille valitaan asiakasta edustava tuoteomistaja, joka voi tehdä päätöksiä määriteltyjen ylemmän tason tavoitteiden tueksi. Projektipäällikkö vastaa hankkeen etenemisestä ja lopputuloksesta. Muut tiimin jäsenet valitaan tarvittavan osaamisen perusteella.

Perustan rakentaminen: yhteistyö

Onnistuneessa projektissa on samat rakennuspalikat kuin missä tahansa ihmissuhteissa: keskinäinen kunnioitus, luottamus, avoimuus sekä halu pitää yllä motivaatiota ja neuvotella.

Alusta asti on varmistettava, että viestintä on sujuvaa ja toimii kaikkien osallisten välillä.

Digitaalisen tuotteen rakentamiseen tarvittavat taidot

Digitaalinen tuotekehitys on monialaista työtä. Optimaalinen tiimi on tasapainoinen yhdistelmä eri osaamisalueita. Yksittäisillä tiimin jäsenillä voi olla useita rooleja.

Tuoteomistajuus

Tuoteomistaja edustaa asiakkaan näkökulmaa projektissa. Hänellä on syvällistä tietoa asiakkaan liiketoiminnasta ja siitä, mikä digitaalisen tuotteen rooli on kokonaisuudessa.

Projektinhallinta

Projektipäällikkö valvoo koko projektia. Hän vastaa deadlineista, KPI-mittareista, raportoinnista ja kunkin projektitiimin jäsenen työn seurannasta.

Palvelumuotoilu

Palvelumuotoilija vastaa käyttäjätutkimuksesta ja siitä, että tuotteen suunnittelu noudattaa käyttäjälähtöisyyden periaatteita.

UX/UI-suunnittelu

UX/UI-suunnittelija muuttaa tutkimus- ja liiketoimintatavoitteet intuitiivisiksi ja selkeiksi käyttökokemuksiksi. Hän tekee jatkuvaa yhteistyötä kehittäjien kanssa varmistaakseen, että käyttökokemus (UX) on teknisen toteutuksen mukainen.

Front end -kehitys

Front end -kehittäjä työskentelee käyttäjärajapinnan teknisen toteutuksen parissa. Kaikki, mitä loppukäyttäjä voi nähdä, koskettaa tai klikata on rakennettava niin, että se toimii sujuvasti ja että käyttöliittymään voidaan tarvittaessa tehdä muutoksia mahdollisimman joustavasti.

Back end -kehitys

Back end -kehittäjä on arkkitehti, joka määrittää, mitä tapahtuu digitaalisen tuotteen pellin alla. Tuotteen toiminta palvelimien ja ohjelmointirajapintojen (API) kanssa on ratkaisevan tärkeää – ja usein myös monimutkaista.

Analytiikka ja data

Oikean datan kerääminen kertoo meille, miten hyvin olemme onnistuneet ja millaisia muutoksia seuraavissa iteraatioissa on tehtävä.

Sisällöntuotanto

Laadukas sisältö vaikuttaa ratkaisevasti käyttökokemuksen selkeyteen, äänensävyyn ja tuotteesta saatavaan yleisvaikutelmaan.

Markkinointi

Markkinointi auttaa tuotetta saavuttamaan kohdeyleisön ja kasvattamaan sitä ajan myötä. Työ voi olla sekä tekstuaalista että visuaalista ja edellyttää markkinointialustojen syvällistä tuntemusta.

Testaus

Testauksella varmistetaan, että ratkaisussa ei ole suuria virheitä ja se täyttää kaikki toiminnalliset vaatimukset. Myös turvallisuuden testaaminen on monessa ratkaisussa olennainen prioriteetti.

Päätöksenteko

Kyky tehdä päätöksiä on ensiarvoisen tärkeä onnistumisen kannalta. Projektin aikana tehdään jatkuvasti suuria ja pieniä päätöksiä, joista kaikkien on tuettava kokonaisvisiota. Valtaosan päätöksistä tulisi perustua tiimin yhteistyöhön.

Viimeinen sana kuuluu kuitenkin sille, joka kantaa viime kädessä vastuun. Viisas kapteeni osaa kuitenkin osallistaa, sitouttaa ja innostaa tiimiläisiään parhaan työpanoksen varmistamiseksi.

Projektinhallinnan periaatteet

Työkokonaisuuksien hierarkia määräytyy tavoitteiden laajuuden mukaan. Nimityskäytännöt vaihtelevat, mutta eri tasoista voidaan käyttää esimerkiksi nimityksiä etappi > epic > tehtävä

Työ jakautuu sprintteihin. Sprintti on ennalta määritelty kiinteä kalenteriajan tai työpanoksen määrä. Tyypillinen sprintti voi kestää esimerkiksi 2–10 viikkoa.

Sprinttiin sisältyy aina suunnittelma tuloksista, jotka sen aikana tulisi saavuttaa – ja niihin liittyvät työtehtävät. Projektissa voi olla myös useita samanaikaisesti käynnissä olevia sprinttejä. Sprinttisuunnitelmat ja niihin liittyvät aikataulut muodostavat korkean tason projektisuunnitelman.

Kick off

Kick off on projektin ensimmäinen palaveri. Sitä on usein edeltänyt tarjouspyyntö- ja tarjouskierros tai sisäisten liiketoimintasuunnitelmien laatiminen. Tavoitteena on tutustua muihin projektiin osallistuviin ja oppia ymmärtämään projektin kontekstia ja tavoitteita – sekä saada projekti käyntiin.

Tyypillinen kick off voi kestää muutamasta tunnista kokonaiseen työpäivään. Sen aikana sovitaan myös seuraavat vaiheet ja alustava aikataulu.

Kick off -palaverin tehtävälista

Yrityksen esittely
Asiakkaan liiketoiminnan esittely

Projektitiimin esittely
Toimittajan ja asiakkaan roolit ja henkilöstö, vastuut ja yhteyshenkilöt, toimittajan projektitiimin jäsenten ansioluettelot ja projektin kannalta olennaiset referenssit

Projektin esittely
Alustava suunnitelma siitä, mitä olemme tekemässä

Tavoitteet
Mitä tavoittelemme ja mittaamme onnistumista?

Rutiinien suunnittelu
Viikkopalaverit, viestintä, dokumentointi, versionhallinta

Aikataulu
Projektisuunnitelma ja aikataulu

Perussäännöt
Sopimus, budjetti, vastuut, resurssit

Jatkotoimenpiteet
Seuraavat tapaamiset, tehtävät jne.

Riskit
Riskien tunnistaminen ja luokittelu todennäköisyyden ja seurausten perusteella

03Suunnittelu

Tärkeintä etsimässä

Suunnittelussa on kyse ratkaisun syvimmän olemuksen, sekä sen toiminnallisen ja esteettisen olemuksen määrittelystä. Hyvään suunnitteluun panostaminen mahdollistaa kustannustehokkuuden, sillä sen avulla lopputuotteeseen valikoituvat ainoastaan olennaisimmat elementit. Digitaalisten tuotteiden yhteydessä suunnittelun ja toteutuksen välillä ei ole selkeää rajaa.

Winston Churchill tiivisti olennaiseen keskittymisen filosofian seuraavasti: ”Jos haluat minun puhuvan kaksi minuuttia, minulta menee kolme viikkoa valmisteluihin... Jos haluat minun puhuvan tunnin ajan, olen valmis heti.

Design thinking and lean

Suunnitteluprosessimme on saanut paljon vaikutteita sekä Design Thinking- että Lean-menetelmistä.

Meille Design Thinking tarkoittaa ratkaisukeskeisyyttä – suunnittelun tärkeimpänä tehtävänä on aina kartoittaa todellisia ongelmia ja etsiä niihin ratkaisuja.

Lean-ajattelussa meihin vetoaa eniten asiakkaiden ja loppukäyttäjien osallistaminen iteraatio- ja testausprosessiin.

Yhteissuunnittelu

Yhteissuunnittelutyöpajat ovat keskeinen osa prosessiamme. Niiden avulla varmistamme, että jaamme asiakkaan kanssa saman vision. Lisäksi hyödymme siitä, että asiakas tuntee oman liiketoimintaympäristönsä parhaiten.

Ensimmäisissä työpajoissa määrittelemme kohderyhmät, tuotteen tavoitteet ja hypoteesit – ja käymme läpi siihen mennessä esille nousseet mahdolliset esteet. Tämän jälkeen siirrymme tyypillisesti käyttäjäprofiilien ja käyttäjäpolkujen luomiseen.

Yhteissuunnittelutyökalut

Yhteissuunnittelutyökalut ovat tehokas tapa saavuttaa yhteinen käsitys tuotteesta ja tehdä jaettuun ymmärrykseen perustuvia päätöksiä tuotteen suunnittelusta.

Lean Business Model Canvas

Lean Business Model Canvas on yksi laajimmin käytetyistä ideointityökaluista, joka auttaa kokoamaan projektin perusasiat yhteen helppolukuiseen malliin.

LBMC kerää yhteen tuotteen peruslähtökohdat (liiketoimintamahdollisuus, ratkaisu, kilpailijat, arvolupaus, keskeiset mittarit). Se auttaa vahvistamaan digitaalisen ratkaisun tarkoitusta, tavoitteita ja haasteita.

Käyttäjäpersoonat

Käyttäjäpersoonat antavat paremman käsityksen ihmisistä, jotka tulevat käyttämään tuotetta. Persoona voi muodostua esimerkiksi seuraavien tietojen kuvauksista: demografiset tiedot, taloudelliset tiedot, siviilisääty, elämäntapa, käyttötilanteiden kuvaukset sekä palvelun käyttöön liittyvät tavoitteet, toiveet ja pelot.

Käyttäjäpolut

Käyttäjäpolut visualisoivat käyttäjien vuorovaikutuksen palvelun kanssa ajan mittaan. Niihin voi sisältyä kuvauksia käyttäjäpolun eri vaiheista, toteutetuista toimista ja erilaisten tunteiden ja tilanteiden mahdollisesta vaikutuksesta kokemukseen.

Priorisointimatriisi

Priorisointimatriisi on projektin eri ominaisuuksien arviointiin tarkoitettu työkalu, joka selkeyttää fokusalueita.

Trigger-kortit

Trigger-kortit ovat luova ideointiväline, joka voi auttaa tiimiä etenemään ideointivaiheessa erilaisten ”mitä jos” -kysymysten avulla.

UX-suunnittelu

UX-suunnittelu eli käyttökokemuksen suunnittelu on prosessi, jossa tietoa kerätään, priorisoidaan ja esitetään muodossa, joka tarjoaa käyttäjälle sujuvan kokemuksen. Usein parhaat käyttökokemukset ovat niin intuitiivisia, että ne ovat lähes huomaamattomia.

Tyypillisesti UX-suunnittelu alkaa tietoarkkitehtuurin luomisesta (mitä tietoa tarvitaan ja miten se tulisi jäsentää) ja etenee rautalankamalleihin (wireframe) ja prototyyppeihin, jotka visualisoivat palvelun kulkua. Näiden työkalujen avulla tuotetta voidaan testata käyttäjien ja muiden sidosryhmien kanssa ennen kuin joudumme kirjoittamaan ensimmäistäkään koodiriviä.

UX-suunnittelutyökalut

UX-työkalut herättävät suunnittelun ja ideat eloon, oli kyse sitten informaatioarkkitehtuurista tai interaktiivista prototyypeistä.

Informaatioarkkitehtuuri

Informaatioarkkitehtuurissa on kyse siitä, miten ja mitä tietoa käyttäjälle esitetään. Sujuvan UX-suunnittelun keskeinen osa on sen selvittäminen, mitkä tiedot ovat tuotteelle välttämättömiä ja miten ne järjestetään niin, että käyttäjä voi liikkua niiden välillä intuitiivisesti.

Palvelusuunnitelma

Palvelusuunnitelma on laajempi kuvaus siitä, mitä tuote tekee ja mitä palvelussa pitäisi tapahtua eri tasoilla käyttäjäpolun aikana.

Käyttäjätestaus

Käyttäjätestauksen ei tulisi juolahtaa mieleen vasta viime tingassa: se kannattaa ottaa mukaan suunnitteluprosessiin mahdollisimman varhaisessa vaiheessa. Todellisilta käyttäjiltä saatava data kertoo oikein jäsenneltynä luottettavasti, olemmeko tekemässä oikeita suunnitteluvalintoja.

Rautalankamallit

Rautalankamalli (wireframe) on kuvaus palvelun eri näkymien välisistä siirtymistä. Se on tehokas työkalu, jonka avulla voi selvittää, noudattaako palvelun sisällä liikkuminen selkeää logiikkaa: käyttäjän ei pitäisi koskaan jäädä jumiin tai eksyä.

Prototyypit

Erilaisten prototyyppityökalujen avulla palvelusta voidaan luoda klikkailtavia versioita ennen tuotantoon siirtymistä. Testauksen aikana tehdyt löydökset ovat arvokkaita, sillä tässä vaiheessa käyttöliittymään on paljon nopeampaa ja edullisempaa tehdä radikaalejakin muutoksia verrattuna jo koodattuun versioon.

Tutkimus ja palvelumuotoilu

Meille palvelumuotoilu on erottamaton osa suunnittelua. Keräämme perusteellisempaa tietoa havainnoinnin ja kenttätutkimusten avulla kunkin projektin tarpeiden mukaan. Tyypillisesti teemme haastatteluja ja kyselyjä saadaksemme selkeämmän käsityksen käyttäjien tarpeista ja haasteista.

Myös käyttäjätestaus on normaali osa prosessiamme ja auttaa meitä sekä validoimaan isompia ideoita että tuomaan esiin yksittäisiä ongelmia käyttäjäpoluissa.

Projekteihin voi kuulua myös palveluauditointeja, joissa tutkimme ja testaamme tuotteen käytettävyyttä tai saavutettavuutta.

“Käyttäjäpersoonien luominen on tehokas toimintatapa. Yksinään käytettyinä käyttäjäpersoonat voivat kuitenkin johtaa tilanteeseen, jossa tuotteen käyttäjät ovat heikosti edustettuina. Suosittelen aina etsimään tasapainoa sisäisen palvelumuotoilutyön ja käyttäjäyhteydenpidon välillä. Ihmiset ovat aina monimutkaisempia kuin luulemme, ja tiedon kerääminen oikeita käyttötilanteita tutkimalla auttaa koko tiimiä ymmärtämään tosielämän kohdeyleisön ajattelutapaa.”
Sanni Karlsson
UX-suunnittelija, Taiste

UI-suunnittelu

UI-suunnittelu eli käyttöliittymän suunnittelu on paljon muutakin kuin rautalankamallien visualisointia. Nykyaikaiset käyttöliittymät on rakennettu komponenttien ja dynaamisten tyylien avulla.

Design-systeemit ovat paljon enemmän kuin komponenttikirjastoja – niiden suunnittelufilosofia mahdollistaa yhdenmukaisemman asiakas- ja brändikokemuksen kaikissa digitaalisissa kanavissa, joita asiakas käyttää nyt tai tulevaisuudessa.

UI-suunnittelussa eniten käyttämämme työkalu on Figma, jonka olemme valinneet sen yhteistyöominaisuuksien ja joustavuuden ansiosta. Vuosien varrella olemme rakentaneet alustalle omaan käyttöömme räätäöityjä lisäosia, joilla voidaan luoda edistyneitä prototyyppejä ja kääntää tyylejä ja komponentteja suoraan uudelleenkäytettäväksi koodiksi.

04Toteutus

Parhaan lähestymistavan valinta

Digitaalinen tuote on aina sen teknisen toteutuksen ilmentymä – ja päinvastoin. Toteutusta ja suunnittelua ei voi erottaa toisistaan. Molempien on oltava mukana alusta alkaen.

Tekninen toteutus voidaan toteuttaa monin eri tavoin erilaisia teknologioita tai lähestymistapoja hyödyntäen. Jotkut vaihtoehdot kuitenkin sopivat tarkoitukseen paremmin kuin muut.

Valitut menetelmät ovat aina kompromissi useiden eri tekijöiden välillä. Valinnat on tehtävä siten, että ne kestävät aikaa ja niitä on helppo päivittää tosielämän käytöstä saatavan palautteen perusteella.

Teknologiaperiaatteet

Yksinkertainen on kaunista
UX-työkalut herättävät suunnittelun ja ideat eloon, oli kyse sitten tietoarkkitehtuurista tai vuorovaikutteisista prototyypeistä.

Suoraviivainen on tyylikästä
Ylisuunnittelu on yleinen sudenkuoppa. Vältä turhaa monimutkaisuutta. Älä yritä ratkaista ongelmia, joita sinulla ei ole.

Uudelleenkäyttö on fiksua
Pyörän keksiminen uudelleen ei ole tehokasta eikä taloudellista. Asioiden tekeminen kerralla oikein maksaa itsensä takaisin.

Vakaa teknologia on parempi kuin trendikäs
Tuotannossa ei kannata luottaa uusimpiin villityksiin. Perusvarma, monissa liemissä testattu vaihtoehto on lähes aina oikea valinta.

YAGNI (You Ain’t Gonna Need It)
Rakenna sitä, mitä tarvitaan juuri nyt – älä sitä, mitä saatetaan tarvita tulevaisuudessa. Lähesty toteutusta skaalautuvasti, jotta sitä on helppo laajentaa myöhemmin.

Valitse kevyt ja epämuodollinen (enimmäkseen) raskaan ja muodollisen sijaan
Ellei kyse ole ihmishengistä, laajamittaista muutostenhallintaa tai hankalia laadunvalvontaprosesseja ei todennäköisesti tarvita. Maalaisjärjellä ja koodikatselmuksilla pääsee jo pitkälle.

Teknologiavalintoihin vaikuttavat tekijät

Teknistä arkkitehtuuria suunniteltaessa on otettava huomioon useita näkökohtia. Seuraavassa esitellään työhömme sovellettavia periaatteita.

Teknologiavalintoihin vaikuttavat tekijät

Tarvittavat toiminnallisuudet ja alustat

Käyttäjävaatimuksista riippuen ongelman ratkaisemiseksi on useita mahdollisia tapoja, joista jokaisella on omat hyötynsä ja haittansa.

Pyrimme käyttämään tehtävään parhaiten soveltuvia työkaluja ja vain tarvittavan määrän perusrakennuspalikoita. Riippuvuudet ovat riskejä, joten suhtaudumme niihin varovaisesti.


Käytössä olevat teknologiat

Asiakkaalla saattaa olla käytössä oma teknologiastackinsa – pyrimme aina sopeutumaan siihen ja sisällyttämään omat valitsemamme työkalut mahdollisuuksien mukaan.

Jos yhteensopivuusongelma on liian suuri, on vastuumme olla asian suhteen rehellisiä ja mahdollisesti jättää projekti väliin kokonaan.

Yrityksen sisäinen osaaminen

Projektitiimin osaaminen ja vahvuudet tulee aina ottaa huomioon teknologiapinon valinnassa.

Budjettirajoitukset

Kaikkien teknologiavalintojen tulee olla realistisia suhteessa budjettiin. Jos budjettirajoitukset ovat merkittiä, noudatamme periaatetta ”testaa manuaalisesti ja luo hyvä tuote” sen sijaan, että yrittäisimme sovittaa yksikkö- ja integraatiotestauksen liian tiukkaan budjettiin.

Pitkän aikavälin kestävyys

Back-endin suhteen pyrimme olemaan hyvin konservatiivisia – käytämme VPS:ää, automatisoimme Ansiblella ja pidämme asiat mahdollisimman yksinkertaisina ja riippumattomina. Useimmissa ratkaisuissa on myös hyvä olla riippumaton pilvipalveluntarjoajasta.

Skaalautuvuus

Useimmat palvelut toimivat yleensä hyvin skaalaamalla “vertikaalisesti” tarpeen mukaan: käytännössä tämä tarkoittaa tehokkaampien tietokoneiden hankkimista sen sijaan, että rakennettaisiin heti klusteri. Ensimmäinen vaihtoehto toimii useimmissa tapauksissa myös pitkällä aikavälillä – jälkimmäinen taas tuo lisää monimutkaisuutta, mikä ei välttämättä ole perusteltua.

Tietoturvavaatimukset

Taisteella on sujuvasti toimiva automaatio palveluiden käyttöönotolle Ansiblella, jossa perustietoturvaperiaatteet ovat sisäänrakennettuina. Näiden työkalujen käyttö tarkoittaa, että asiat ovat alusta alkaen varsin turvallisia.

Suorituskykyvaatimukset

Oikeiden algoritmien käyttö ja tietokantataulujen indeksointi vievät pitkälle. Emme yritä optimoida ennen kuin tiedämme, missä kehitteillä olevan järjestelmän pullonkaulat tulevat olemaan.

Luotettavuusvaatimukset

Pyrimme luomaan klustereita VPS:n avulla ja tarjoamme luotettavuutta hajautettujen järjestelmien perusperiaatteiden mukaisesti.

Suorituskykyvaatimukset

Pyrimme käyttämään komponentteja, jotka ovat jo laajalti käytössä ja toimivat odotetusti. Luonnollisesti on myös projekteja, joissa uusien komponenttien kokeilu on pienempi riski.

Teknologinen joustavuus

Paras tapa olla joustava on noudattaa mahdollisimman tarkasti parhaita käytäntöjä annetussa frameworkissa.

Kun luomme uusia abstraktioita, emme tee sitä esimerkiksi siksi, että olemme "tyytymättömiä siihen, miten asiat ovat Djangossa” – se on pystyttävä perustelemaan käsillä olevan ongelman näkökulmasta. Valitsemissamme työkaluissa pysyttäytyminen on sen arvoista, vaikka se vaatisikin joskus pieniä uhrauksia.

Osaamisen kehittäminen ja tutkimus

Jotkut projektit mahdollistavat rohkeammat ja kokeellisemmat lähestymistavat. Tällaisissa tapauksissa on ensiarvoisen tärkeää varmistaa, että kaikki osalistujat ymmärtävät valitun lähestymistavan mahdolliset hyödyt ja sudenkuopat ennen tällaisten päätösten tekemistä.

Tekninen suunnittelu ja arkkitehtuurin suunnittelu

Kaikkien projektien perussuunnittelussa on yleensä tiettyjä yhteisiä piirteitä. Pyrimme löytämään ratkaisuja, joissa jaamme järjestelmän autonomisiin yksiköihin, jotka pystyvät toimimaan osatehtävässä mahdollisimman itsenäisesti.

On tärkeää ymmärtää alusta asti sekä dataa että järjestelmän tiedonkulkumalleja. Tämä auttaa mallintamaan loputkin ratkaisusta tämän tiedon ympärille.

Suosittelemme käyttämään relaatiotietokantaa tietojen säilytyskerroksena. Jos taas on suuri tarve offline-käytölle, jossa useat käyttäjät käyttävät samaa tietojoukkoa, valitsisimme mieluummin PouchDB-/CouchDB-pohjaisen ratkaisun.

Jos tarvitaan useita palveluita, prosessien välinen viestintä rakentuu pääosin viestijonojen abstraktioiden ympärille, kuten RabbitMQ tai Redis. Joissakin tapauksissa käytämme myös HTTP REST APIa liikennekerroksena – mutta vain sellaisissa tapauksissa, joissa API-rajapintaa käyttävät myös muut asiakkaat eikä jonopohjaista ratkaisua pystytä toteuttamaan selvällä tavalla.

Tarpeen mukaan arvioimme ainakin asiakkaan ja back end palveluiden välisen vuorovaikutuksen selvittääksemme, kannattaako valita REST- vai GraphQL-pohjainen ratkaisu.

Ympäristön luominen

Luomme ympäristön yleensä jonkin aiemman projektimme pohjalta. Olemme kokeilleet mallipohjien luomista, mutta huomanneet, että niiden avulla on vaikea toteuttaa kustannustehokkaita ja yleispäteviä ratkaisuja.

Koska olemme toteuttaneet satoja projekteja, meillä on referenssiprojekteja useimpiin tarpeisiin. Ymmärrämme luonnollisesti, että tämä ei silti päde kaikkiin tapauksiin. Olemme myös aina kiinnostuneita tutkimaan muita, mahdollisesti juuri sinun projektiisi sopivia vaihtoehtoja.

Tehtävien hallinta

Suuremmissa projekteissa toteutamme työn aina Kanban-tyyppisenä ketteränä prosessina. Sprintti suunnitellaan ja tarinat luodaan Shortcutissa, jonka sisäisesti rakennettu integraatio GitLabiin pitää huolen niiden synkronoinnista.

Suosittelemme antamaan arvion mahdollisista ongelmista Shortcutissa. Jos työ kestää yli neljä päivää, on hyvä idea jakaa se useampaan ongelmaan, jotta tehtävästä saadaan parempi ymmärrys.

Kehitysjono on asetettu tärkeysjärjestykseen – devaajan tarvitsee vain valita luettelon ensimmäisenä oleva tehtävä saatuaan edellisen valmiiksi.

Toteutussykli

Kun kehittäjä valitsee tärkeysjärjestyksessä ensimmäisenä olevan ongelman toteutettavaksi, työ aloitetaan uudessa haarassa, joka voidaan luoda automaattisesti GitLabissa.

Sen jälkeen kehittäjä jatkaa toteutusta ja pyytää työn edetessä palautetta tai neuvoja projektitiimin jäseniltä, asiakkaalta tai kollegoilta. Toteutuksen päätyttyä ongelmalle määritetään katselmoija ja tehdään koodikatselmus. Kun havainnot on ratkaistu, koodi yhdistetään asianomaiseen haaraan ja CI/CD-putki huolehtii käyttöönotosta.

Laadunvalvonta ja testaus

Budjetin salliessa ehdotamme aina vähintään ratkaisun tärkeimpien osa-alueiden yksikkö- ja integrointitestausta. Yhdistettynä hyvään manuaalisen testauksen suunnitelmaan tämä riittää useimpiin pieniin projekteihin.

Jos päätetään luoda UI-testejä, on aina parempi toteuttaa ne silloin, kun käyttöliittymä on lähes valmis.

Käyttöönotto

Projektille on määritettävä vähintään perustason jatkuva integraatio (CI) esim. GitLabissa, jotta työ varmasti pakataan, tarvittaessa testataan ja otetaan käyttöön ympäristöissä asianmukaisesti. Meillä on hyvä valikoima CI-konfiguraatioita, jotka voidaan sisällyttää uusiin projekteihin ja jotka ovat ehdottomasti investoinnin arvoisia.

Lisäämme back end palveluihin myös perusmittareita ja seurantaa sekä Sentryn ja muita työkaluja, joiden avulla ongelmat ja järjestelmävirheet voidaan löytää ennakoivasti ennen kuin käyttäjät edes huomaavat niitä.

Seuranta

Sekä back endin että front endin seuranta ja virheraportointi mahdollistavat nopean reagoinnin tuotannossa ilmeneviin virheisiin.

Kerättävä ja seurattava tietokokonaisuus määräytyy palvelun mukaan. Teknisestä näkökulmasta se tulee valita sen perusteella, mikä auttaa meitä parhaiten pysymään ajan tasalla mahdollisten ongelmien ehkäisyssä ja käsittelyssä. Tietyt mittarit, kuten keskusyksikön ja muistin käyttö, instanssin kuormitus ja onnistuneiden pyyntöjen määrä ovat aina olennaisia.

Kun CD-putket on luotu, järjestelmää on helppo päivittää ongelman tunnistamisen jälkeen.

05Testaus

Testausvaatimukset

Testaus on olennainen osa jokaista digitaalisen kehityksen vaihetta. Mikään ohjelmisto ei ole virheetön, mutta luotettavuutta koskevat vaatimukset vaihtelevat: virheiden sieto on aivan erilainen esimerkiksi ilmailualan ohjelmistossa kuin mobiilipeleissä.

Vaatimusten ja testausprosessin määrittely on välttämätöntä, jotta voidaan saada aikaan kaikkien osapuolten odotukset täyttäviä tuloksia. Yksi testauksen keskeinen osa-alue on ongelman havaitseminen digitaalisen tuotteen käyttöönoton jälkeen.

Projektin testaussuunnitelma

Testaussuunnitelmalla määrittelemme testauksen säännöt ja tavoitteet projektiin parhaiten sopivalla tavalla.

Rajaamme mitä testauksen piiriin kuuluu ja mitä ei, kuka vastaa eri testausalueiden organisoinnista ja toteuttamisesta, mitkä ympäristöt meidän on otettava huomioon testauksessa ja miltä testausaikataulu näyttää.

Aika ja budjetti rajoittavat aina testausta. Testaussuunnitelman tulee heijastaa yhteistä ymmärrystä siitä, mitä laatu tarkoittaa kyseisessä projektissa.

“Kun bugien metsästystä jatketaan, siihen alkaa usein kulua yhä enemmän aikaa, sillä havaitut virheet ovat yhä harvinaisempia ja erikoislaatuisempia. Virheettömiä ohjelmistoja ei ole olemassa, joten on tärkeää tietää, milloin kannattaa lopettaa. Digitaalisen tuotteen resilienssi tarkoittaa usein myös sitä, että ohjelmisto kaatuu mahdollisimman hallitusti, jos jotain menee kaikesta huolimatta pieleen."
Oscar Salonaho
Toimitusjohtaja, Taiste

Laitteiden ja käyttöjärjestelmien testimatriisi

Mobiilisovelluksia testattaessa on otettava huomioon suuri määrä käyttöjärjestelmien ja laitteiden yhdistelmiä. Verkkosovelluksissa sama pätee selaimiin ja selainversioihin.

Laitteiden ja käyttöjärjestelmien testimatriisit (mobiilisovelluksille) sekä laitteiden ja selainten testimatriisit (verkkosovelluksille) auttavat määrittämään, mitkä käyttötapaukset on tärkeää priorisoida.

Ajankohtaisten markkinatietojen ja kunkin tuotteen yksilöllisten vaatimusten perusteella luomme kartan todennäköisistä käyttöjärjestelmien, laitteiden ja versioiden yhdistelmistä. Näitä voidaan sitten priorisoida ajan ja budjetin perusteella.

Testauksen tarkistuslista

Prosessit, vastuut, tavoitteiden määrittely ja laatu. Excel/Numbers-asiakirja käyttäjän toiminnasta ohjelmistossa. Sisäisen testiryhmän muodostaminen.

Testausohjeet

Testausohjeasiakirjan laatiminen ja jakelu. Tiedossa olevien ongelmien luettelointi.

Jakelu asiakkaalle
Asiakkaan testiryhmän muodostaminen. Jakelu valitulla prototyyppityökalulla ja sen käytön opettaminen asiakkaalle.

Toiminnallisuustestaus
Päästä päähän

Testaustulosten dokumentointi
Testauksesta tehdyn transkription luominen ja päivittäminen.

Ongelmien siirto GitLabiin
Ongelmien korostaminen ja lisääminen GitLabiin.

Yhteensopivuustestaus
Erilaiset laitteet, selaimet, käyttöjärjestelmät jne.

06Analytiikka

Tietojen kerääminen

Syvällinen perehtyminen analytiikkaan ei kuulu tämän oppaan aihepiiriin. Seuraavaa checklist on kuitenkin yleispätevä lähtökohta, jota voidaan laajentaa kulloisenkin projektin tarpeiden mukaan.

Syitä tietojen keräämisen:

  • Onnistumisen/KPI-lukujen mittaaminen
  • Toiminnallisuuden seuranta
  • Tuotteen parantaminen

Älä jätä tilaisuutta käyttämättä

Tärkein dataan liittyvä sääntö on, että keräämättä jäänyttä dataa ei saa enää koskaan takaisin. Siksi tuote on integroitava heti oikeisiin analytiikkatyökaluihin.

Kun dataa kertyy pidemmältä ajanjaksolta, sitä voidaan hyödyntää myöhemmin monimutkaisempiin käyttötarkoituksiin. Kun siis alat vastaanottaa dataa muista lähteistä (esim. digitaalisesta markkinoinnista), muista integroida se myös käyttämääsi analytiikkaan.

Teknisellä puolella on ratkaisevan tärkeää kerätä virhelokeja, joiden avulla voidaan korjata virheitä ja käytettävyysongelmia myöhemmässä vaiheessa.

Perusanalytiikka

Analytiikkaratkaisun luomisen tulisi alkaa keskustelemalla siitä, mitkä ovat käytettävät KPI-mittarit. Miten mittaamme käyttötapoja? Mitkä toimet lasketaan konversioiksi? Voimmeko linkittää markkinointikanavat analytiikkaamme ja mitata siten kampanjoidemme onnistumista?

Yleisimmin käytetyissä analytiikka-alustoissa (esim. Google Ads, Localytics) riittää ominaisuuksia lähes kaikkiin tarpeisiin, mutta käyttäjän on varmistettava, että asetukset ja integraatiot toimivat niin kuin on tarkoitus.

Kun perusanalytiikan asetukset ovat valmiit, tärkeimmät mittarit on hyvä sisällyttää koontinäyttöön, josta niitä on helppo käyttää.

07Riskienhallinta

Valmistautuminen yllättäviin tilanteisiin

Digitaaliseen projektiin liittyy aina riskejä, joista osa on todennäköisempiä kuin toiset. Riskit voivat olla sisäisiä tai ulkoisia. Useimmissa ohjelmistoissa on integraatioita muihin palveluihin, ja ne ovat alttiita tällaisten kolmansien osapuolten tuotteiden mahdollisille ongelmille.

Riskien käsittely

Riskien kontrollointi sisältää valmistautumisen ongelmien ilmenemiseen ja toimintatavat niiden hoitamiseksi. Yhdysvaltain ilmavoimien alun perin kehittämä OODA-loop on erittäin tehokas riskienkäsittelytyökalu. Se sisältää neljä vaihetta, jotka vastuullisen organisaation on toteutettava.



Havainnointi (Observation)
Ongelman havainnointi, mieluiten etukäteen

Tilanteen arviointi (Orientation)
Ongelman vakavuuden ja laajuuden määrittäminen

Päätös (Decision)
Asianmukaisten päätösten tekeminen

Toiminta (Action)
Asianmukaisten tehtävien suorittaminen

Uhka- ja turvallisuusanalyysi

Uhka- ja turvallisuusanalyysi auttaa sekä lieventämään näitä vaaroja että varmistamaan, että olemassa on suunnitelma siltä varalta, että jotain menee pieleen. Valmistautuminen ja varasuunnitelmat ovat olennaisen tärkeitä näiden uhkien välttämiseksi.

Uhka- ja turvallisuusanalyysin tarkistuslista

Kolmansiin osapuoliin liittyvät riskit

Kolmansiin osapuoliin liittyvät riskit voivat vaihdella tilapäisistä käyttökatkoista tietojen turmeltumiseen. Nämä vältetään parhaiten hajauttamalla palvelu useille palveluntarjoajille ja pitämällä yksityisiä varmuuskopioita kriittisistä tiedoista (jos mahdollista). Myös kolmansien osapuolten palvelut ovat alttiita muutoksille.

Tekninen arkkitehtuuri kannattaa usein rakentaa siten, että se ei ole liian riippuvainen minkään yksittäisen kolmannen osapuolen tuotteen toteutuksen yksityiskohdista.

Turvallisuusriskit

Palvelunestohyökkäykset, tietovarkaudet ja niihin liittyvä rikollinen toiminta ovat aina mahdollisia. Tämän torjumiseksi on aina vältettävä ”kaikki yhden lukitun oven takana” ilmiötä varmistamalla, että kaikkialla on käytössä ainutlaatuiset ja turvalliset määritykset.

Kehitystiimissä on hyvä olla turvallisuuteen liittyvää DevOps-osaamista. Usein on välttämätöntä salata arkaluonteiset tiedot ja pitää tietokantoja erillisillä, tavallista turvallisemmilla palvelimilla.

Ohjelmiston laatuun liittyvät riskit

Yksikkö- ja integrointitestit ovat välttämättömiä, koska ne mahdollistavat muutosten tekemisen ja jatkokehityksen niin, että yksittäisen komponentin tai tuotteen rikkoutumisen riski on pienempi. Ongelmien välttämiseksi tämä tulee aina ottaa huomioon myös budjetissa.

Lisäksi koskaan ei saa syntyä tilannetta, jossa vain yksi henkilö todella tuntee koodin. Tämä voidaan välttää yhteistyöhön perustuvilla vertaiskatselmuskäytännöillä kehitystiimissä.

Sosiaaliset riskit

Sosiaalisia riskejä ovat muun muassa henkilösuhteisiin liittyvät ongelmat, avainhenkilöiden poistuminen yrityksistä sekä työkulttuurin ongelmat. Digitaalisissa projekteissa ei kannata olla rocktähtiä vaan tiimejä, jotka työskentelevät yhdessä yksikköinä ja dokumentoivat työnsä tavalla, joka helpottaa uusien ihmisten mukaantuloa.

Kulttuurin kannalta avainasemassa on tiimin hyvinvoinnin mahdollistaminen ja seuranta sekä avoimen keskustelun edistäminen. Sosiaalisiin suhteisiin liittyvät ongelmat tulee aina hoitaa pikaisesti, ja tulee keskittyä toimiin, jotka auttavat välttämään tällaisten tilanteiden syntymistä.

Ylivoimaisiin esteisiin liittyvät riskit

Force majeure -tilanteet eli ylivoimaiset esteet, kuten onnettomuudet, ilkivalta, sota ja ympäristökatastrofit, vaikuttavat myös ohjelmistokehitykseen.

Maailma voi olla arvaamaton. Siksi on tärkeää luoda prosessi, jonka avulla luodaan varmuuskopioita yrityksen tilojen ulkopuolella sijaitsevaan paikkaan ja pidetään ne aina ajan tasalla sekä huolehditaan fyysisten tilojen turvatoimista.

Tietojen häviäminen

Tietoja voi hävitä vioittuneiden tiedostojen tai fyysisten vaurioiden vuoksi. Kun tiedot ovat saatavilla useissa (turvallisissa) paikoissa sekä digitaalisesti että fyysisesti, tiimi voi nukkua yönsä rauhassa.

08Yhteenveto

Mitä seuraavaksi?

Onnistuneen digitaalisen tuotteen tärkeimmät osa-alueet ovat selkeät tavoitteet, oikea osaaminen, kunnolliset työkalut – ja viimeisenä muttei todellakaan vähäisimpänä: yhteistyö.

Kun nämä osa-alueet ovat kunnossa, digitaalinen projekti voi olla inspiroiva matka ideasta valmiiksi tuotteeksi.

Ovatko tässä julkaisussa esitetyt ideat herättäneet sinussa ajatuksia?

Autamme digitaalisen tuotekehityksen kaikissa vaiheissa. Ota yhteyttä ja keskustellaan lisää.

Ota yhteyttä

Henri Ranki

Uusi liiketoiminta

henri.ranki@taiste.com
+358 44 500 1364

Vilma Merikanto

Yleiset tiedustelut

vilma.merikanto@taiste.com
+358 44 556 8459