Ohjelmistokehittäminen ja johtajuus – kaaoksesta itseohjautuvuuteen

Kirjoittaja: Rizwan Asif
Software Designer

Ohjelmistoprojektien aloittaminen uudella tiimillä voi tuntua ylivoimaiselta. Asiakastyytyväisyyden saavuttamisen ja myyntiodotusten täyttämisen välissä haasteena on sovittaa taidot ja asiantuntemus menestyksen saavuttamiseksi. Tässä artikkelissa eritellään ohjelmistoprojektin eri vaiheet ja se, miten tiimin organisointi voi vaikuttaa lopputulokseen.

Ohjelmistotiimit ovat erittäin dynaamisia – tiimin jäsenillä on laaja valikoima vaihtelevan osaamistason taitoja. Tarkat taidot ja tarkan asiantuntemuksen omaavan unelmatiimin kokoaminen on miltei mahdotonta. Ohjelmistokehittäjä panostaa kuukausia, ellei jopa vuosia, taitojensa kehittämiseen – toisin sanoen kielen oppimiseen tai erilaisten ohjelmistokehityksen työkalujen hallitsemiseen.

Usein ohjelmistokehittäjän on siirryttävä nopeasti vaihtoehtoisiin toimintatapoihin joko asiakkaan vaatimusten vuoksi tai hyödyntääkseen muiden ohjelmistokehittäjien käytössä olevia ja suosioon nousseita työkaluja. Lisäksi henkilökohtaiset uratavoitteet voivat poiketa projektivaatimuksista.

Ohjelmistokehityksen kaoottinen luonne

Nämä ohjelmistokehityksen näkökohdat vaikuttavat ohjelmistokehittäjään jommallakummalla tai molemmilla tavoilla:

  1. Motivaation puute

Turhautuminen on luonnollista, kun kehittäjä tietää, että hänen ydintaitonsa eivät riitä tehokkaasti edistämään projektin onnistumista. Projektin aloitus on pahinta aikaa, kun asiakkaan vaatimukset ja nopea tahti eivät anna mahdollisuutta uusien työkalujen omaksumiselle.

  1. Osallisuuden puute

Motivoituneet kehittäjät ovat tiukkoja henkilökohtaisista tavoitteistaan. Projektit, jotka poikkeavat näistä tavoitteista, saavat alhaisemman prioriteetin. Tällöin kehittäjät tuntevat hidastavansa muiden kollegojensa työtä.

Tämä kaaos räjähtää käsiin, kun tyypillinen tiimi koostuu vähintään 2-6 kehittäjästä, joista jokainen haluaa tehdä projektia omalla osaamisalueellaan.

Oppiminen ja itseohjautuvuus ohjelmistojohtamisessa

Mahtava asia ohjelmistotiimien kanssa työskentelyssä on vaisto oppimiseen. Jokainen, jolla on taustaa ohjelmistokehityksessä, ymmärtää, että työkalut ja kielet kehittyvät jatkuvasti. Varhaisessa vaiheessa ohjelmistokehittäjät omaksuvat jatkuvan oppimisen tavan, mikä tekee heistä asiantuntijoita itseohjautuvuudessa. He luovat omat etenemissuunnitelmansa, tunnistavat teknisen velan ja rakentavat uusia mahdollisuuksia.

Tiimin johtaja voi hyödyntää tätä oppimisvaistoa johtaakseen tiiminsä kohti onnistumista. Se vaatii kuitenkin aikaa, vaivaa ja omistautumista luoda oppimisympäristö, jossa projektin tavoitteet vastaavat kehittäjien henkilökohtaisia tavoitteita. Lopputuloksena on kuitenkin itseohjautuva tiimi, joka toimii kuin hyvin öljytty kone.

Kolme vaihetta matkalla itseohjautuvaksi ohjelmistotiimiksi

On tärkeää muistaa, että projekti ei voi oletusarvoisesti aloittaa itseohjautuvasta tiimistä. Itseohjautuvan tiimin muodostumisessa on tyypillisesti kolme vaihetta.[1]

1.     Selviytymisvaihe

Selkeä merkki selviytymisvaiheesta on kysyä itseltäsi: ”Voinko lähettää puolet tiimistä lomalle muutamaksi viikoksi?”. Jos vastaus on ”En ikimaailmassa.”, olet selviytymisvaiheessa. Tässä kohtaa alkaa muodostua tiimikulttuuri: sovitaan tehtävät ja luodaan rakenne viestinnälle, myös asiakkaan kanssa.

Tärkein tiiminjohtajan tehtävä, on luoda selkeä viestintälinja paitsi tiimin jäsenten välille, myös itsensä ja asiakkaan välille. Anna tiimin jäsenten olla suoraan yhteydessä asiakkaaseen, vaikka itse komennat ja hallitset. Tiiminjohtaja sanelee suuret teknologia- ja etenemissuunnitelmia koskevat päätökset. Tämä mahdollistaa muiden mukaan ottamisen projektin ydintasolle.

Luonnollinen kysymys kuuluukin: miten diktaattorina oleminen liittyy siihen, että muut voivat tuntea itsensä mukaan otetuiksi? Tämä saavutetaan ottamalla tiimin itseohjautuvuus yhdeksi projektin tavoitteista eli keskustelemalla avoimesti siitä, miltä oppimisympäristö tiimissä pitäisi näyttää ja mitkä ovat tiimin tavat saavuttaa se.

2.     Oppimisvaihe

Tämä on vaihe, jossa tiimikulttuuri alkaa muotoutua; asiakas on jo nähnyt tuloksia, eikä sinun tarvitse enää komentaa ja hallita. Suurin haaste tässä vaiheessa on tiimin jumiutuminen rooleihinsa, toisin sanoen tiimi on jo tottunut jäykkään toimintatapaan. He ovat tyytyväisiä heille määritettyihin rooleihin, mutta työmäärä ei näytä riittävän haastavalta.

Halkeamat alkavat näkyä, kun tiimi kohtaa odottamattoman katastrofin (ohjelmistoprojekteissa katastrofi on aina odotettavissa). Usein, nämä tilanteet saattavat syntyä juuri silloin, kun osa tiimistä, tiiminjohtaja tai asiakas ei ole tavoitettavissa tai käytettävissä. Tiimin jäsenten on järjestäydyttävä uudelleen ja vastattava haasteeseen. Käytännössä heidät heitetään siis takaisin selviytymisvaiheeseen.

Noidankehän välttämiseksi on tärkeää, että tiiminjohtaja muuntautuu nopeasti diktaattorista valmentajaksi. Ennakoidessaan katastrofeja johtajan tulisi opastaa tiimiään valmistautumisessa:

  1. Lähtökohtana olisi koodin ristiinarviointi, esimerkiksi antaa backend-kehittäjien tarkistaa frontend ja päinvastoin.
  2. Tästä johtuen voi tehtävien määrittäminen riistiin antaa kehittäjille mahdollisuuden suorittaa tehtäviä mukavuusalueensa ulkopuolelta, esimerkiksi SQL-kehittäjä voi kirjoittaa pienen ohjelmointirajapinnan.
  3. Paras tapa, jos se on mahdollista, on järjestää oppimisistunto. Maksullinen kurssi voi nostaa motivaatiota, koska kehittäjällä on mahdollisuus soveltaa heti saatua tietoa käynnissä olevassa projektissa.

Huomaa, että tässä vaiheessa tiiminjohtaja on valmentaja eikä diktaattori. Tiimisi toiveiden huomioon ottaminen on tärkeämpää kuin tietopolun määrittäminen väkisin. Tavoitteena on luoda oppimisympäristö, joka epäsuorasti merkitsee sitä, että hallinnasta pitää luopua.

3.    Itseohjautumisvaihe

Nyt, kun tiimi on asetettu itsensä kehittämisen tielle, on aika siirtää hallinta heille. Anna tiimin päättää, miten he haluavat muokata projektia. Toimiva tiimi osaa ratkaista ongelmia, tietää keneltä pyytää apua ja tietää miten käsitellään katastrofeja.

Yksi keskeinen asia, joka tiimistä saattaa kuitenkin vielä uupua, on asiakkaiden odotuksien hallinta ja asiakastyytyväisyyden ylläpitäminen. Tähän hyvä tiiminjohtaja haluaa käyttää aikaa, jotta voi rakentaa vahvemman suhteen tiimin ja asiakkaan välille.

Tehokas tapa vahvistaa asiakaspalvelua on pyytää tiimiltä parannus- ja moonshot-ehdotuksia. Haasta tiimi laatimaan omat suunnitelmansa, muut tiimin jäsenet huomioiden. Keskustelkaa yhdessä ja käykää kaikki eri katsantokannat läpi. Anna sitten tiimin itse esittää ideoita asiakkaalle. Joidenkin ideoiden hylätyksi tuleminen on väistämätöntä, mutta hyvä johtaja autaa tiimiään käsittelemään myös ne tilanteet ja jatkamaan yrittämistä.

Lopulta tiimi saavuttaa vaiheen, jossa tiiminjohtaja on tarpeeton ja toimii vain mahdollistajana. Keskeinen osoitus tämän saavuttamisesta on se, että johtajan poissaolo ei enää vaikuta hankkeen etenemiseen. Tiimi luo itsenäisesti tehtäviä, hankkii asiakkailta hyväksynnät ja jakaa tehtäviä ottaen opitut asiat huomioon.

Miksi suosia itseohjautuvuutta?

Tiiminjohtajan ei kuulu olla timantinkova kaveri, joka tekee jatkuvasti yhdeksäntuntisia päiviä ja pistää tiimin ojennukseen aina tarvittaessa. Ei, johtaja varmistaa, että hänen tiiminsä toimii hyödyntäen omaa parasta osaamistaan.

Ohjelmistokehityksessä jokaisen kehittäjän omat henkilökohtaiset tavoitteet ovat tärkein ainesosa upean tiimin luomisessa. Jos johtaja voi luoda ympäristön, jossa kunkin kehittäjän työn alla oleva projekti ja henkilökohtaiset tavoitteet ovat linjassa, kehitysorganisaatio ei toimi vain koska sen on pakko, vaan koska se haluaa. Ottamalla huomioon tiimin kasvun ja monimuotoisuuden, itseohjautuvuus auttaa hallinnoimaan tätä kokonaisuutta. Motivaatio pysyy korkealla ja kaikki tiimin jäsenet kokevat, että heidät otetaan mukaan toimintaan.


Blogikirjoitukseen on saatu inspiraatiota teoksesta Osherove, Roy, Elastinen johtajuus: Kasvavat itseorganisoivat tiimit. Manning-julkaisut, 2016.