torstai 28. kesäkuuta 2018

Ennätyksiä ja typeryyttä

Olen toiminut eräänlaisissa konsultoivissa tehtävissä pienessä ohjelmistoalan startup- yrityksessä nyt reilu puoli vuotta. Tehtävänkuvani oli alkuun hyvin teoreettinen, mutta vähän kerrassaan olen tehnyt enemmän varsinaista koodausta ja nyttemmin olen pari kuukautta tehnyt ihan koodia jonka on (lopulta) tarkoitus mennä ihan tuotantoon.

Työaikani on vain 8 tuntia viikossa, ja teen sitä oman toimen ohella. Eilen jouduin järkytyksekseni huomaamaan, että eräs algoritmi jota olin toteuttamassa, on väärä. En voi yksityiskohdista puhua, mutta korkealla abstraktiotasolla, kyse on olemassaolevasta melko yksinkertaisesta perusalgoritmista erään hyvin tavanomaisen ongelman ratkaisemiseksi. Ongelmassa on kuitenkin tavanomaisesta hieman poikkeavia reunaehtoja, joiden vuoksi perusalgoritmi ei sellaisenaan toimi oikein. Asia on ratkaistu kyllä, mutta kokeet toisessa yhteydessä osoittivat, että kyseinen ratkaisu ei ole kovin tehokas, ja meille suorituskyky on aivan olennainen.

Kehitin ratkaisun, joka oli elegantti ja tehokas. Ja, kuten eilen huomasin, väärä. Ratkaisu toimii oikein edelleen silloin, kun näitä tavanomaisesta poikkeavia reunaehtoja ei ole, ja useissa tapauksissa silloin, kun niitä on. Mutta on eräs harvinainen tapaus, joka liittyy ohjelman suoritusjärjestykseen, jossa tilanne ei toimi oikein, tai ainakin, pystyin lokaalisti keksimään tapauksen joka ei toimi oikein; Testausvaiheeseen ei olla vielä päästy. Olin "todistanut" algoritmin oikeaksi ylimalkaisella tasolla, ja huomasin todistuksessa käyttäneeni oletusta suoritusjärjestyksestä, joka ei ole tosiasiassa voimassa.

Tästä johtuen olin tuhrannut liki kaksi kuukautta työaikaa -- olkoonkin että tässä tapauksessa se on vain seitsemän työpäivää, mutta silti -- josta alle puolet saa pelastettua kun täytyy käyttää eri ratkaisua. Tällä tavalla kirjoitettuna moka ei tunnu suurelta, enkä aio piiskata itseäni tässä kovin voimakkaasti, mutta silti se tuo mieleeni sen, miksi kannatan sitä että pienemmissä firmoissa (ja miksei isommissakin) irtisanomissuoja olisi yksilön mokien suhteen alhainen. Jos minä pyörittäisin kyseistä firmaa omilla rahoillani, olisin kyllä aika hanakasti pistämässä kaltaiseni pellen ulos kun tällaista tulee vastaan.

Softafirmat eivät yleisesti kuitenkaan toimi näin. Osin kulttuurillisista, osin lainsäädännöllisistä syistä. Tapakulttuurissa esimerkiksi pidetään "kohtuuttomana" ja "vihamielisenä" jos mokasta "rangaistaan". Itse en kyllä ajattele aivan näin; etenkin ottaen huomioon sen, että meillä on melko kattava sosiaaliturva edelleen. Mutta ei siitä sen enempää.

Kuten lukijat tietävät, olen pyrkinyt kompensoimaan ilmeisiä kognitiivisiä puutteitani kehollisilla harjoitteilla. En ole "vahva" sanan sellaisessa merkityksessä kuin esimerkiksi vakavissaan voimanostoa tms harrastavat ovat, mutta siviiliväestöön verrattuna kuitenkin jo kohtuulliset ruumiinvoimat olen onnistunut hankkimaan. Maanantaina onnistuin parantamaan penkkipunnerrusennätystäni nostamalla 110kg. Kuten todettua, se ei ole paljon, mutta se on ns "intermediate"- tasoa. Se on nyt yli 125% omasta painostani, mitä voi pitää 3/5- tuloksena.

Yritin myös vetää maasta 160kg ns double overhand- otteella, mutta paino lipesi käsistä. Ennätykseni tällä ns normiotteella on 150kg, ja nähtävästi parannusta ei ole paljoa ainakaan tapahtunut. En juurikaan ole kokeillut ennätyksiä puristusvoimassa, vaan olen treenannut noin kerran viikkossa FatGripz:eillä kevyttä maastavetoa. Puristusvoima kehittyy hitaasti, ja minulla on muutenkin hyvin tyttömäiset käsivarret, ehkä kyse on genetiikasta.

Yllätyin kun tajusin (melkein) rikkoneeni tänä keväänä ja kesänä kaikki voimanostoennätykseni. Vedin maasta 180kg keväämmällä ja kyykkäsin 145kg sivuten vanhaa ennätystä. Nyt siis penkistä 110kg. En tosin usko että "kisatyylillä" saisin yhteistulokseksi paljoa yli 400 kiloa, siis, jos pitäisi tehdä puhtaita nostoja ja nostaa kaikki kolme nostoa samanpäivän aikana. Kyykky jäisi todennäköisesti jonnekin 135 kilon paikkeille, penkistä saisin ehkä juuri ja juuri kunnon pysäytyksellä ja hyväksyttävällä tekniikalla 100, ja maasta nousisi ehkä 170 tai 175. En kuitenkaan edes harkitse kisaamista, sillä siinä loukkaantumisen riski on suurempi liiallisen yrittämisen vuoksi. Puhumattakaan suorituksen laadusta.  


5 kommenttia:

Veijo Ryhänen kirjoitti...

Näkisin asian niin, että jos kyseessä on työnantajan mielestä ns. hyvä tyyppi, niin silloin moka halutaan jättää huomiotta. Ja jos havaitaan että työntekijä ei ole tehtävään syystä taikka toisesta oikein sopiva, niin silloin pienikin moka halutaan tulkita koeajan lopettamisen perusteeksi (vaikka todellinen erottamisen syy olisikin esim. sopimattomuus työyhteisön jäseneksi, siis ns. henkilökemia).

Oletettavasti vähäinen irtisanomissuoja laskee työllistämisen kynnystä, ts. parantaa työllisyyttä, tai ainakin näin irtisanomisen helpottamisen kannattajat asian perustelevat.

Mikko Kallionsivu kirjoitti...

Aina kun elämä menee liikaa suorittamisen puolelle, muistan että Stahanov kuoli yksinäisenä ja alkoholisoituneena. Etenkin näin heinäkuussa hyvä muistaa.

Meikäläinen poistuu nyt Kainuuseen kalastelemaan. Take it easy man.



https://www.youtube.com/watch?v=Rfxe0KRxXWY

Mikko kirjoitti...

Tarpeetonta itseruoskintaa. Ihmiset tekevät virheitä. Softa-alalla yksi onnistumisen kriteereistä on luonteva suhtautuminen virheisiin. (Muilla aloilla varmaan myös.) Jos virheistä saa kenkää, jengi alkaa piilotella niitä ja silloin ne vasta kalliiksi tulevatkin. Sama pätee henkilökohtaisella tasolla. Jos virheitä pelkää, ei pysty näkemään omia virheitään eikä pysty oppimaan niistä. Tämä on heikkojen kehittäjien suurin kynnys sille että he kehittyvät taitaviksi kehittäjiksi. Softa-alalla on prosesseissa päällekkäisyyttä juuri siksi, että yksittäiset virheet eivät pääsisi lopulliseen tuotteeseen. Eli testausta tekevät muut ihmiset kuin kehittäjät, tehdään erilaisia auditteja jne.

Mikko kirjoitti...

Improvisaatioteatterissa juhlitaan virheitä. Enkä tarkoita teennäisessä mielessä vaan parhaimmillaan oikeasti ammennetaan niistä uutta materiaalia. Olen huomannut että se on muissakin konteksteissa hyödyllinen asenne, esimerkiksi tanssissa. Ehkä juhliminen on väärä sana, mutta lentoturvallisuus on niin järjettömän hyvä siksi että jokainen onnettomuus on otettu vakavasti ja mietitty miten prosesseja voidaan kehittää niin että vastaavat virheet voidaan välttää jatkossa.

Softankehitys ei ole yksilölaji. Se ei ole myöskään tekemisen taidonnäyte jossa valmiista speksistä tehdään koodia. Softankehitys on oppimiskokemus, jonka aikana mukana oleville syntyy yhteinen käsitys siitä mitä oikeastaan olemme tekemässä. Mitä luontevammin suhtaudumme virheisiin, sitä halvemmalla tämä oppimiskokemus tapahtuu ja sitä parempi lopputulos.

Tiedemies kirjoitti...

En ruoski itseäni siitä, että olisin tehnyt virheen työtä tehdessäni. Ruoskin itseäni siitä, että haksahdin Dunning-Kruger- tyyppiseen harhaan, kuvitelleen ymmärrykseni ja osaamiseni ongelmasta suuremmaksi kuin se oli. Ongelma ei ole siinä, että en osannut asiaa -- ymmärrän varsin hyvin, että osaamista pitää kehittää ja että oppimista tapahtuu.

En myöskään tehnyt varsinaisesti mitään virhettä, merkityksessä että koodaisin jonkin bugisen ratkaisun tms. Se, mitä tapahtui oli, että ehdotin puutteellisen tietämyksen varassa tiettyä korkean tason suunnitelmaa uskoen tietämykseni paremmaksi kuin se oli. Tätä taas ei olisi tapahtunut, jos olisin oikeasti perehtynyt ongelmaan sen sijaan että luotin intuitiooni pinnallisen analyysin perustella. Kahnemanilaisittain, käytin nopeaa ajattelua tilanteessa jossa olisi pitänyt käyttää hidasta ajattelua. Etenkin kun siihen olisi ollut aikaakin.