Mitä ohjelmistotyö on?

"Computer Science is no more about computers than astronomy is about telescopes." - Edsger Dijkstra

Ohjelmoija, koodari, nörtti. Mielikuva kellarissa näppäimistöä hakkaavasta, virvoitusjuomia ja roiskeläppiä kuluttavasta antisosiaalisesta erakosta ehkä elää vielä, mutta todellisuus on jo siirtynyt eteenpäin. Ohjelmistotyö koostuu nimittäin paljon muustakin kuin pelkästään raa'asta teknisestä toteutuksesta.

Työn monipuolisuus tarjoaa virkistävän paljon erilaisia rooleja, joihin erikoistua. Tittelisi voi esimerkiksi olla ohjelmistosuunnittelija, projektipäällikkö, käyttöliittymäguru, Scrum Master jne. Vaihtoehtoja siis on, ja usein oma erikoisosaaminen löytyy työelämän pyörteissä.

Teknologioiden lisäksi pääset tutustumaan ja opettelemaan asiakkaan liiketoimintaa ja -osaamista asiakasprojekteissa. Projektin aikana rakennat ymmärrystä siitä, kuinka asiakkaan business toimii, ja monesti saatatkin törmätä termistöön, joka menee täysin ohi. Tämä ei maailmaa kaada, kunhan vain uskaltaa kysyä, mitä asiakas tällä tarkoittaa. Poikkitieteellisyys ei ole haitaksi tällä alalla, ja joskus yllättävistäkin taidoista voi olla hyötyä.

Olen todennut, että ohjelmistoalalla työskentely on mielikuvista poiketen kuitenkin sosiaalista, ja tärkeäksi voimavaraksi saattaa muodostua työkaverit. Kollegoiden kanssa voi pohtia esimerkiksi parasta toteutustapaa kulloiseenkin tilanteeseen, ja yleensä yhteinen intohimo uusimpia ja parempia teknologioita kohtaan kannustaa oman ja työyhteisön osaamisen kehittämiseen. Tämä onkin mielestäni yksi ohjelmistoalan hyvistä puolista: aina riittää uutta opeteltavaa.

Oppiminen ei siis (onneksi) pysähdy seinään valmistujaispäivänä. Työ itsessään opettaa kokemuksen karttuessa, mutta oppimista voi tukea monella tavalla, esimerkiksi:

Tärkeäksi taidoksi on osoittautunut myös kielitaito, koska lähes kaikki ajankohtainen materiaali, foorumikeskustelut ja seminaarit ovat englanniksi. Ja kun koodia kirjoitetaan, niin metodien ja luokkien nimet kuvataan englanniksi.

"First, solve the problem. Then, write the code." - Anonymous

Alan ammattilaisena työnkuvaasi kuuluu ongelmanratkaisu. Tämä ei rajoitu ainoastaan teknologiakysymyksiin. Yleensä lähdetään liikkeelle siitä, että asiakkaalla on ongelma tai idea, joka saattaa vaatia uuden tietojärjestelmän. Usein nämä visiot ovat kuitenkin kohtuullisen abstrakteja, joten järjestelmä suunnitellaan yhdessä asiakkaan kanssa konkreettiseksi, järkeväksi kokonaisuudeksi.

Ohjelmistotyötä voi sanoa myös tuotesuunnitteluksi. Siksi edes jonkinlainen ymmärrys käyttäjäystävällisyydestä ja estetiikasta on mielestäni tärkeää. Suosittelenkin tutustumaan seuraavaan koosteeseen, joka käsittelee suunnittelua yleisellä tasolla (eritoten startup-yritysten näkökulmasta). Tuotesuunnittelu tarkoittaa muutakin kuin pelkästään kaunista ulkomuotoa. Konepellin kiiltäessä on myös moottorin toimittava ilman, että se hajoaa heti koeajossa.