Puolivälin retrospektiivi
Tags: devlive, retrospective
Published: 2020-04-20 07:44:50

Viimeaikoina koronaa pakoillessa on ollut liiankin paljon aikaa miettiä mennyttä ja tulevaa. Tämä johti myös havaintoon, että omaa uraa on sellainen 20 vuotta takana ja vähintään samanlainen pätkä olisi jäljellä. Riippuen mikä se eläkeikä joskus tuleekaan olemaan. Uran ensimmäinen pätkä on livahtanut luvattoman nopeasti, mutta paljon senkin aikana on ehtinyt tapahtua. Eli tässä vaiheessa lienee syytä yrittää tiivistää sen aikana opittua.

# Olet ongelmanratkaisija

2000-luvun taitteessa nuori, innokas ja tuuheatukkainen (ainakin haluan näin muistaa) Petri aloitteli kehittäjän uraansa. Olin jo aiemmin huomannut, että koodaaminen tuntui itselle helpolta, kun taas suurimmalle osalle opiskelukavereista se oli tylsää ja tästä syystä myös vaikeaa. Maailma koodauksessa oli vielä tähän aikaan erilainen, eli sitä ei voinut tehdä täysin google tai stackoverflow lähtöisesti. Esimerkiksi Symbianista ei internet tuntunut paljoa tietävän, ainakaan hämäristä segment virheistä joihin oli itsensä ajanut. Parhaana apuna toimi ennen kaikkea kirjat ja koululta saadut koodausprujut sekä esimerkit. Ongelmatilanteet piti ratkaista itse, vähintään kiertämällä, jos ydinsyytä ei osannut paikallistaa.

**Uran alkuaikoina mielessä saattoi pyöriä harhaluulo, että joskus sitä olisi valmis kehittäjä.**

En tiedä olisiko nuori Petri päässyt siitä yli, että 20 vuotta myöhemminkin kehittäminen on pitkälti ongelmien ratkaisemista. Ongelma voi olla toiminnallinen, teoreettinen tai tekninen, mutta kehittäjän se tulee jotenkin ratkaista ja pukea toimivan ohjelmiston muotoon. 

# Vaatii jatkuvaa oppimista

Nykyään kehittäjän ongelmana ei ole enää netistä löytyvien ohjeiden tai oppaiden vähyys, vaan niiden paljous ja ristiriitaisuus. Kaikille löytyy niin kannattavia kuin vastustavia mielipiteitä ja vastakkainasettelu on välillä hyvinkin jyrkkää. Milloin ohjelmointikieli X ratkaisee kaiken tai milloin frameworkilla Y asiat voi tehdä viidellä rivillä koodia, kun taas Z vie 15. Ja tämä on tietenkin maailmanloppu kaikille niille Z:taa käyttäville. 

Itse olen huomannut, että millään tällaisilla asioilla ei ole loppujen lopuksi väliä. Kehittäjän pitää pystyä oppimaan kokoajan uutta, suodattamaan eri teknologioista ne itselle toimivat asiat ja jättää kikkailulta tuntuvat asiat rauhaan. Välillä tämä voi tarkoittaa, että pitää purra hammasta ja tehdä jotain sellaista hommaakin, joka ei olekkaan uusinta uutta. Välillä taas joudut painimaan jonkin uuden asian kanssa, johon ei ole saatavilla edes dokumentaatiota. 

Mutta mikä se pointti oli? No se, että kummassakin tapauksessa olet joutunut uutta oppimaan. Vanhan ratkaisun haltuun ottaminen on jopa vaikeampaa kuin uuden rakentaminen. Vanhassa joudut ottamaan haltuun monesti useiden kehitysvuosien kokoisen hankkeen. On vaikeaa yrittää keksiä, että miksiköhän tällainen asia on aikoinaan tehty näin. 

**Varsinkin, jos haltuun otettava koodi on omaa koodia muutaman vuoden takaa.**

# Opit monia eri toimialoja

Tekniset asiat on kuitenkin aina opittavissa, jos ei muuten, niin toiston kautta. Kaikkein vaikeinta on kuitenkin ollut aina oppia se toiminnallinen alue, jonne ohjelmistoa ollaan tekemässä. Mitkä on sen termistöt ja prosessit, sekä mitä ylipäätään ollaan ratkaisemassa. 

Projektin aikataulut eivät varmasti tule kärsimään siitä, että vaatiiko framework Z Rest-rajapinnan tekemiseen 5 vai 15 riviä koodia, vaan siitä, oltiinko toiminnallinen ongelma ymmärretty oikein ja ratkaistaanko asiaa käyttäjälle oikein. 

# Valitse työkalusi oikein

Toki on kärjistettyä väittää, että tekniset asiat eivät olisi tärkeitä. Nehän niitä hauskoja asioita on ja niillä voidaan nitistää vaikka ne viimeiset millisekunnit vasteajoista. Teknologiat tulee kuitenkin valita perustellusti sen mukaan mitä ollaan ratkaisemassa. Ympyrän muotoisella palikalla ei voida ratkaista neliön muotoista ongelmaa. Tai voidaan, jos ympyrää pienentää ja laittaa vähän tiivistettä nurkkiin. Ja kieltämättä näin jotkin ratkaisut näyttääkin olevan tehty. 

**Tuntematta ympäristöä ei synny edes sitä tietoa, että ongelma yleensäkkin on ympyrän muotoinen.**

Teknologioita ei voi lähteä valitsemaan vain sillä perusteella, mikä on tällä hetkellä kuuminta ja mistä kirjoitetaan eniten. Kun tiedetään mitä ollaan tekemässä ja mitä osaamista hankkeen tiimillä on, niin teknologiavalinnatkin rajautuu yleensä muutamiin vaihtoehtoihin ja niistä tulee osin itsestään selvyyksiä. 

# Älä häpeile osaamistasi

Aina löytyy joku, jonka taitoja ihailee ja miettii yltääkö itse tälle tasolle ikinä. Miten jotkut pystyvätkin tuottamaan jatkuvasti materiaaleja, tekemään hienoja ratkaisuja ja tekemään koodia, jota ei itse edes ymmärrä. 

Tässä kohtaa on hyvä muistaa, että myös nämä ihmiset todennäköisesti tuntevat samoin. He voivat olla asiantuntijoita jollakin osa-alueella, mutta vastaavasti kahlaavat meidän kuolevaisten tavoin muissa asioissa. On hyvä muistaa myös, että osa mielikuvista on nykyään vahvasti tietoisesti henkilöbrändättyjä. Eli se maailman parhaalta näyttävä koodievankelista ei välttämättä normaaliprojektissa olisi yhtään sen parempi kuin itse.

Jokaisella on aina jotakin annettavaa. Kaiken osaavaa mestaria ei ole olemassa ja tällä alalla kukaan ei ole ikinä valmis. Alalla vuoden ollut voi olla paljon parempi esimerkiksi uusien fronttiteknologioiden saralla kuin tällainen harmaantunut jäärä edelliseltä vuosituhannelta. Se ei kuitenkaan tarkoita, etteikö jäärä pystyisi näitä taitoja opettelemaan tai juniori oppimaan niitä taitoja, joita jäärällä on. 

**Tärkeintä on uskaltaa yrittää ja osaamista syntyy sitten niin virheistä kuin onnistumisista.**

# Et voi olla mestari kaikessa

Väittäisin, että hyvän kehittäjän tunnistaa siitä, kuinka hyvin hän pystyy käsittelemään ongelmia ja uskaltaako hän kohdata niitä. Osaako kehittäjä pilkkoa ongelman pieniin palasiin, osaako hän katsoa sitä välillä laatikon ulkopuolelta, ahdistuuko hän ympäristön asettamiin paineisiin ja odotuksiin sekä ennen kaikkea osaako hän pyytää tarvittaessa myös apua ja tukea. 

Avun pyytäminen, ideoiden sparrailu ja toisten mielipiteiden hakeminen on kehittäjän arkipäivää. Kenenkään ei tulisi käpertyä ongelmien kanssa itkupussiin ja miettiä kehtaako tällaisella asialla muita edes vaivata. Päinvastoin, muut todennäköisesti kokevat ylpeyttä siitä, jos pystyvät auttamaan tai ohjaamaan ratkaisussa eteenpäin. 

Olen huomannut, että kun ongelmasta on itselle saanut jonkinlaisen tarttumapinnan niin tässä vaiheessa on hyvä läpikäydä ongelmaa jonkun toisen kanssa läpi. Joskus riittää ihan se, että esittelee asiaa rivi riviltä läpi ja ratkaisu saattaa syntyä samalla, kun asiaa joutuu ajattelemaan ääneen. Joskus taas riittää, että toinen kysyy yhden kysymyksen tai kertoo jonkin ajatuksensa, jolla itse lähtisi asiaa ratkaisemaan.

# Kohti seuraavia 20 vuotta

Oppimani menneestä voitaneen tiivistää niin, että tällä alalla ei ole ikinä valmis ja omia taitoja ei saisi häpeillä. Tästä karaistuneena päätinkin viimein tehdä myös ne ensimmäiset omat kotisivuni. Niissä ei mennyt siis kuin noin 20 vuotta.

Omia kotisivuja pidin aina sellaisena asiana, että teen ne sitten kun olen "valmis" ja niistä tuleekin sitten mahtavat. Ne toteutettaisin tyhjästä viimeisimmillä teknologioilla pitkästä tavarasta ja niissä tulee olemaan hieno käyttöliittymä animaatioineen. Niiden tekemistä olen lykännyt vuosi vuodelta eteenpäin ajatuksella, että ehkä ensi vuonna. Olisihan minun pitänyt jo aiemmin tunnistaa, että ei se oma naama ainakaan nätimmäksi vuosien varrella tule.

Joten nyt ylpeänä ja samalla häpeissäni julistankin kotisivuni osoitteessa [petrituomaala.fi](https://petrituomaala.fi). Kotisivuista tuli sitten yhden HTML-sivun kokoiset ja ne pyörivät halvimmassa mahdollisessa web-hotellissa. Vieläpä palvelimessa, joka näyttää vielä käyttävän myös Perliä. 

**Toki sen verran piti uusia teknologioita käyttää, että vahingossakaan sivut eivät toimi IE11 selaimella.**

Tarkoitukseni on myös aloittaa aktiivisempi blogien kirjoittaminen, joten olisinkin kiitollinen siitä, jos laittaisit palautetta kirjoituksesta alle. Blogin aiheet tulevat olemaan kohtuullisen teknisiä, mutta väliin mahtuu toki tällaisia paatoksiakin. 

Seuraavia 20 vuotta odotan mielenkiinnolla, jos ne jatkuu edes yhtään samanlaisina kuin menneet. Vieläkin pystyn muistelemaan niitä ilon hetkiä erinäisissä tiimeissä vuosien varrella, kun on saatu asioita tehtyä ja nähty, että pystyttiinhän tämäkin ratkaisemaan. Näitä kokemuksia ei mikään pyyhi pois ja odotan innolla seuraavien saamista.