Olen ollut ohjelmistoalalla kymmenisen vuotta. Kollegoita kahdesta kahteen tuhanteen ja vastuuta milloin ohjelmistosuunnittelusta, milloin projektien johtamisesta. Tällä alalla usein sivuutetaan työkalu, joka on hyödyllinen niin tekijöille kuin johtajillekin, pienimmästä liiketoiminnasta suurimpaan.
Kyseessä on luovuus. Sillä on positiivinen kaiku ja silti se jää vajaakäytölle hyötyynsä nähden. Sääli, sillä syynä on vain tiedon puute. Moni ei tiedä miksi luovuus on tärkeää ja miten se otetaan käyttöön. Haluan valaista asiaa omasta näkökulmastani ja aloitan vastaamalla kysymykseen...
Mitä luovuus on?
Luovuus minulle tarkoittaa, että luon jotain uutta ja merkityksellistä. Esimerkiksi kun kirjoitan koodia, luon jotain uutta. Ja se on merkityksellistä, koska se vie kohden jotain ratkaisua. Koodi olisi myös uutta, jos hakkaisin vain näppäimistöä: ahfdspudhfösadjhfpsi, mutta se ei ole luovaa, koska tuossa ei ole mitään järkeä. Toisaalta voisin kopioida ratkaisun sellaisenaan käyttöön. Silloin etenen kohti ratkaisua, mutta en luo uutta. Otan vain käyttöön aikaisemmin luotua. Luovuuden ideana on, että minä luon jotain uutta ja merkityksellistä.
Luovuus ei ole 1 tai 0. Eli sitä joko olisi tai ei. Se on asteikko 0-1-> Eli mielestäni ei voi olla 0-luovuutta, että sitä ei olisi lainkaan. Tai sen puoleen 1-luovuutta, etteikö sitä voisi olla lisää. Se on siis asteikko.
Mikä sitten erottaa 0,1-luovuuden 0,9-luovuudesta? Ehkä se on se luovan prosessin helppous? Jos on vain tottunut kopioimaan muilta tai painamaan nappia linjastolla, uusien vaihtoehtojen luominen voi olla hankalaa. Tämä on aina tehty näin, miten muka voisi tehdä toisin? Ja mitä järkeä siinä olisi, kun on jo olemassa ratkaisu? Luovemmalle henkilölle vaihtoehtojen kuvittelu voi olla yhtä helppoa kuin hengittäminen. Tämän voisi tehdä näin, tai näin, tai näin...
Jos olen luova, luon siis jotain uutta ja merkityksellistä. Luovuuden asteeni mukaan se on minulle helpompaa tai vaikeampaa. Tämä lienee tarpeeksi hyvä ote liukkaasta termistä. Luovuus tulee käytännössä esiin vastaamalla seuraavaan kysymykseen:
Miten luovuus näkyy ohjelmistokehityksessä?
Jos johonkin ongelmaan on jo olemassa ratkaisu, se kannattaa kopioida sellaisenaan. Miksi keksiä pyörä uudelleen, jos toimiva ratkaisu on jo tehty? Se on jo kertaalleen mietitty toimivaksi ja voi sisältää oletuksia tai varautumista olosuhteisiin, joita itse ei välttämättä osannut ajatella. Pitää toki käyttää kriittistä ajattelua ja varmistaa, että kyseinen koodi sopii sellaisenaan tilanteeseen.
Kun en käytä valmista, luon uutta. Silloin luon ainutlaatuisen ratkaisun, jota ei ole koskaan ennen luotu. Se on inspiroivaa!
Olen luovimmillani hiljaisessa tilassa, jossa on rauhaa ajatella. Ehkä töistä johtuen yleensä tietokoneen ääressä. Ideoita syntyy toki muulloinkin, etenkin silloin kun on joku iso asia tai ongelma, joka pyörii päässä. Silloin inspiraatio voi iskeä esimerkiksi imuroidessa tai koiran ulkoilutuksessa.
Ohjelmistokehityksessä on monenlaista luovuutta. Suurelta osin siinä etsitään paras ratkaisu ongelmaan olosuhteet huomioiden. Esimerkiksi koodauksessa valintoja on jatkuvasti: Mikä on kuvaavin muuttujan nimi ja sopivin tyyppi? Mihin piirretään luokkien rajat ja miten suunnittelen rajapinnat?
Perinteisempää luovuutta edustaa esimerkiksi käyttöliittymäsuunnittelu. Siinä on tarkoitus ratkaista ongelma, esimerkiksi kuinka tieto esitetään mahdollisimman helppolukuisesti, ja toisaalta saada ratkaisusta viehättävän näköinen. Muita esimerkkejä perinteisestä luovuudesta ovat muun muassa nettisivun ulkoasun suunnittelu tai sähköpostien ja dokumentaation kirjoittaminen.
Kun aloitetaan uusi ohjelmistokehitysprojekti, vaatimusten koonnin jälkeen ratkaisun suunnittelu puhtaalle pöydälle on hyvin luovaa. Suunnittelijat voivat melko vapaasti valita mitä työkaluja käytetään, mitä arkkitehtuuria, mitä rakennusprosessia ja niin edelleen. Toisaalta, jos jatketaan jo olemassa olevan projektin ylläpitoa tai kehitystä, siinä aikaisemmin tehdyt ratkaisut tuottavat työlle rajoitteita. Vaikka projektissa ei ole samanlaista vapautta valita ratkaisuja, työskentely rajoitteiden kanssa vaatii luovuutta. Esimerkiksi kuinka ratkaistaan tietty ongelma jo käytössä olevan teknologian puitteissa tai käytössä olevaa arkkitehtuuria laajentaen.
Luovuudesta on siis hyötyä ohjelmistokehityksessä. Minkä takia luovuuden kannattaisi olla korkealla asteella? Toisin sanottuna...
Miksi luovuus on tärkeää?
Luovuus on tärkeää muun muassa ongelmanratkaisussa, joka on ohjelmistokehityksen keskeisin piirre. Ratkaisija luo erilaisia vastausvaihtoehtoja, joista sitten valitaan soveltuvin. Mitä luovempi prosessi on, sitä enemmän ja erilaisempia vaihtoehtoja ja sitä sopivampi vaihtoehto löytyy kyseiseen ongelmaan konteksti ja rajoitteet huomioiden.
Henkilökohtaisella tasolla luova henkilö tekee parempia päätöksiä. Esimerkiksi uravalinta. Sanotaan vaikka, että olen kahvilatyöntekijä. Työ on kivaa, mutta palkka kehno ja erikoiskahvien tekeminen ei tyydytä. Käyttämällä luovuuttani voin punnita useampia uravaihtoehtoja ja päätyä vaikka sovelluskehittäjäksi.
Organisaatiotasolla luovuus on tärkeää siksi, että saadaan sopivampia ratkaisuja. Sopivimman ratkaisun toteuttamisessa ja ylläpidossa aikaa ja rahaa kuluu vähiten. Asiakas on tyytyväisempi, kun saa tarvitsemansa ratkaisun eikä maksa ylimääräisestä tai tehottomuudesta.