Hackathon 6668

Millainen on hyvä ohjelmistosuunnittelija?

Alun perin otsikon aihe tuntui liian itsestään selvältä ja kalutulta, enkä halunnut kirjoittaa siitä. Varmastihan hyvän ohjelmistosuunnittelijan piirteistä on kirjoitettu vaikka kuinka monta bloggausta? Yllättävää kyllä, googlaamalla ei suomenkielisiä artikkeleita aiheesta juuri löytynyt. Sen sijaan löytyi kyllä tekstiä siitä, mitä hyvän ohjelmoijan pitää osata. Kyse on kuitenkin eri asiasta.

Ohjelmistosuunnittelija ei vain ohjelmoi, vaan hänen ammattiinsa kuuluu paljon muutakin. Millaista osaamista ja ominaisuuksia hyvällä ohjelmistosuunnittelijalla sitten on? Tässä viiden kohdan lista.

Hyvä ohjelmistosuunnittelija…

1. Osaa kertoa, kysyä ja kuunnella

Ohjelmistosuunnittelija ratkaisee lähes aina jonkun muun ongelmaa yhdessä muiden kanssa. Poikkeuksena saattaa olla yksinäinen indie-pelikehittäjä, joka toteuttaa vain omaa visiotaan, mutta miltei kaikissa muissa tapauksissa pitää ymmärtää ja tulla ymmärretyksi, koska samaa soppaa hämmentävät asiakkaat, muut saman projektin kimpussa työskentelevät ohjelmistosuunnittelijat, projektipäällikkö, testaajat ja käytettävyysasiantuntijat, noin muutamia esimerkkejä mainitakseni.

Hyvä ohjelmistosuunnittelija osaa kertoa suunnitelmistaan, ratkaisuistaan ja ongelmistaan kuulijalle sopivalla tavalla. On eri asia keskustella toisen ohjelmistosuunnittelijan kuin sellaisen asiakkaan kanssa, joka on jonkin muun alan ihminen. Tarkoituksena ei ole päteä teknisellä osaamisella vaan tulla ymmärretyksi ja esimerkiksi auttaa asiakasta tekemään hyviä päätöksiä eri vaihtoehtojen välillä.

Kysyminen on myös tärkeä taito. Sitä tarvitaan silloin, kun tarvitsee kollegalta apua vaikean ongelman ratkaisussa, ja erityisesti silloin, kun asiakkaan tarve on jollakin tavalla epäselvä. Usein vaikeankin ongelman saa lopulta ratkaistua jopa ilman apua—tosin siihen menee tarpeettoman paljon aikaa. Sen sijaan jättämällä kysymättä täsmennystä asiakkaan tarpeeseen, kysymällä väärää asiaa, tai jättämällä varmistamatta, että kysyjä ja vastaaja ymmärtävät asian samalla tavalla, voi tulla toteuttaneeksi aivan väärän ominaisuuden.

Ehkä kaikkein tärkein viestintätaito ohjelmistosuunnittelijalle on kuunteleminen. Joskus kovan tason asiantuntija sokaistuu omasta osaamisestaan ja ajattelee tietävänsä paremmin kuin muut. Tällainen henkilö kuuntelee lähinnä väittääkseen vastaan, saadakseen ohittaa kuulemansa ja esittääkseen oman ajatuksensa, tai hieman paremmassa tapauksessa esittääkseen oman vielä hiukan pitemmälle kehitellyn versionsa. Todellinen ammattilainen kuitenkin kuuntelee ensisijaisesti ymmärtääkseen.

2. Osaa määritellä ratkaistavan ongelman

Monesti sanotaan, että ohjelmistosuunnittelijalla on oltava ongelmanratkaisukykyä. Totta kai on oltava, mutta ennen kuin ongelmaa voi ratkaista, pitää osata määritellä se. Esimerkiksi asiakkaan ilmoittamasta tarpeesta tai vaatimuksesta voi olla melko pitkäkin matka täsmälliseen ratkaistavan ongelman kuvaukseen. Siihen pääseminen vaatii usein analyyttista ja poikkitieteellistä ajattelua, yleissivistystä sekä kohdassa 1 mainittuja kysely- ja kuuntelutaitoja. Lisäksi se vaatii taitoa muotoilla (eli kirjoittaa) ongelman määritelmä selvästi ja yksiselitteisesti, koska jos määritelmä on olemassa vain suullisena, se saattaa muuttua lennossa ja siihen on mahdotonta palata luotettavasti.

Joskus, tai aika monestikin, on niin, että ongelman määrittelee ainakin alustavasti joku muu kuin se, joka kirjoittaa koodin. Tällainen työnjako määrittelijän ja toteuttajan välillä on kuitenkin häilyvä ja kokonaan poistumassa ainakin Suomessa tehtävästä ohjelmistotyöstä, sillä ”siinä on speksi, mikset jo koodaa” -tyyppistä ohjelmointityötä voi teettää halvemmalla muissa maissa.

3. Osaa ohjelmoida

Kyllä, ohjelmistosuunnittelijan pitää osata myös ohjelmoida. Tämän ammattitaidon tärkeän osan perusta hankitaan yleensä tutkinto-opinnoissa, ja meidänkin yrityksemme arvostaa erityisesti ylempää korkeakoulututkintoa ohjelmistotekniikasta tai tietojenkäsittelytieteestä. Ohjelmoinnin oppiminen ei kuitenkaan tietenkään lopu valmistumiseen, vaan siitä se oikeastaan vasta alkaa.

Ohjelmistosuunnittelijan on oltava koko ajan valmis ja halukas oppimaan uusia kieliä, työkaluja ja tekniikoita, mutta myös tekemään työtä niillä välineillä, jotka kulloinkin ovat tarkoituksenmukaisia asiakkaan kannalta. Tämä voi joskus tarkoittaa, että tehdäänkin vähän vähemmän kuumalla ja uutuudenkiiltävällä, jottei tarvitsisi kirjoittaa kaikkea vanhaa ja toimivaa uudelleen. Ammattilainen sopeutuu reunaehtoihin ja ymmärtää, miksi työtä tehdään ja mitkä seikat teknologiavalintoihin vaikuttavat. Hänen ohjelmointitaitonsa ja motivaationsa hyvän koodin tekemiseen ovat teknologiariippumattomia.

4. On sinnikäs

Ohjelmistosuunnittelija kohtaa joskus työssään vastoinkäymisiä, jotka saattavat äkkiseltään tuntua lannistavilta. Ohjelmassa voi olla mystinen bugi, jonka syy ei vain tunnu mitenkään selviävän. Integraation saaminen toimimaan oikein saattaa vaatia monimutkaista kommunikointia muiden henkilöiden ja firmojen kanssa, eikä se ole onnistunut vielä kolmannellakaan yrityksellä.
Tällaisissa tilanteissa ei auta muu kuin sinnikkyys. Ohjelmistosuunnittelijan kannattaa pyrkiä tekemään sinnikkyydestä osa ammattimaista identiteettiään. Jos huomaa lannistuvansa nopeasti tai välttelevänsä hankalia ongelmia esimerkiksi yrittämällä sysätä ne muiden ratkaistaviksi, kannattaa pysähtyä ja miettiä, haluaako mieluummin päästä helpolla vai olla ohjelmistokehityksen Winston Wolf*.

5. On luova

Ohjelmistosuunnittelu on luovaa työtä, ja siksi sen tekijältä pitää löytyä luovuutta ja halua rakentaa ennennäkemättömiä asioita. Alalla on myös vahvaa kahvimainoksista tuttua käsityöläisyysotetta sekä ylpeyttä omasta ammattitaidosta ja kätten työn tuloksista.

Toki ohjelmistotyöhön kuuluu paljon myös rutiinia ja kurinalaisuutta, joten alalla vaaditaan tasapainoilua prosessien ja vakiintuneiden käytäntöjen noudattamisen sekä toisaalta luovuuden ja innovoinnin välillä. Ensin mainittujen avulla varmistetaan hyvä peruslaatu, viimeksi mainittujen avulla ratkaistaan vaikeimmat ongelmat ja aina joskus onnistutaan tuottamaan huikeaa lisäarvoa.

Lopuksi

Jos lukijana jossain kohdassa tunsit piston sydämessäsi, ei se mitään, niin tunsin minäkin kirjoittaessani. Itse kullakin on varmasti jossain vaiheessa uraansa tai vähintään joskus huonona päivänä ollut ongelmia esimerkiksi kysymisen, kuuntelemisen tai sinnikkyyden kanssa, tai on tullut kiukuteltua projektin kivikautisista teknologioista. Tämä ei tee ihmisestä lopullisesti huonoa ohjelmistosuunnittelijaa, vaan osoittaa vain tarpeen harjoitella omaa asennoitumista ja kehittää ammattitaitoa.

Yllä oleva viiden kohdan lista ei missään nimessä ole tyhjentävä, ja on helppo keksiä muitakin hyvän ohjelmistosuunnittelijan ominaisuuksia. Jos kuitenkin olisin valitsemassa itselleni unelmatiimiä uuteen yhdessä tehtävään projektiin, juuri nyt kiinnittäisin varmasti huomiota näihin seikkoihin.

* Harvey Keitelin hahmo elokuvassa Pulp Fiction.


atostek risto pitkanen 4227 sq - Millainen on hyvä ohjelmistosuunnittelija?

Risto Pitkänen
Johtava konsultti