Koodarin viikko

Syksyn kiertueella on tullut muutamaan kertaan kyselyä millaista ohjelmoijan työ on käytännössä. Ohjelmointitöitä ja ohjelmoijia on toki monenlaisia, mutta voin kertoa yhden version koodarin työviikosta.

Ohjelmistoja kehitetään monella eri tavalla. Meillä työ on jaksotettu kahden viikon sykleihin.  Ensimmäisenä päivänä pidetään koko tiimin (tai ainakin kynnelle kykenevien) suunnittelukokous. Yksi ihminen edustaa asiakkaan näkökulmaa. Hän päättää mitkä asiat tehdään ja missä  järjestyksessä ja lopputiimi auttaa häntä päätöksien tekemisessä kertomalla kuinka paljon töitä minkäkin tehtävän tekeminen vaatisi.

Monet asiat lähtevät ensimmäisenä graafiselle suunnittelijalle, joka miettii tarkemmin miltä
mikäkin osa ohjelmassa näyttää. Valmiit suunnitelmat ovat jonossa, josta jokainen koodari ottaa päällimäisen tehtävän saatuaan edellisen tehtyä. Välillä toki jotkin hommat ovat jo etukäteen korvamerkittyjä, esimerkiksi jos joku tietää asiasta muita enemmän, eikä siis joudu aloittamaan uuden opettelemisesta.

Hyvän koodarin on pakko osata…

  • Lukea sujuvasti englantia – suomeksi käännettyjä ohjeita on tarjolla hyvin vähän.
  • Lukea muiden kirjoittamaa, joskus aika epäselvääkin koodia.
  • Kirjoittaa koodia, jota muiden on helppo ymmärtää.

mutta olisi hyödyksi myös…

  • Puhua ja ymmärtää puhuttua englantia, myös eri aksentteja.
  • Kirjoittaa sujuvasti ja selkeästi myös ihmiskielillä.
  • Osata useita ohjelmointikieliä. Kokemuksen tulisi olla sen verran laajaa, että uusien kielilen opettelu tarpeen vaatiessa ei enää vaadi paljoa, koska kielissä on niin paljon samankaltaisuuksia.
  • Tuntea Linux. On mahdollista tehdä koodata pelkästään Windowsilla, mutta koodausta sivuavat tehtävät vaativat nykyisin usein Linuxin käyttöä. Meidän tiimissämme on kolme Linux- neljä Mac- ja yksi Windows-käyttäjä, mutta kaikki palvelimet ovat Linuxeja.
  • Tietää jotain algoritmeista. Usein koodaaminen ei vaadi oikeastaan lainkaan algoritmien käyttöä, vaan nämä sisältyvät valmiisiin kirjastoihin. Välillä tulee kuitenkin vastaan tilanteita, missä olisi hyvä pystyä ainakin etsimään nopeasti lisätietoa.
  • Käyttää erilaisia koodarin työkaluja: versionhallintaa, tekstieditoreja, paketinhallintaa, vianetsintää, testausta ja monia muita. Koodarit ovat vahvasti automatisoineet tehtäviään ja tehneet itselleen apuohjelmia. Työkaluja tulee jatkuvasti lisää ja vanhat jäävät pois, mutta ilman niitä ei oikein pysty tekemään töitä niin tehokkaasti, kuin niiden kanssa.
  • Ymmärtää miten tietokoneet, verkot, verkkosivut, tietokannat yms. toimivat.

Tehtävää tehdessä tulee usein vastaan ongelmia, joihin ei tunne voivansa vastata riittävän hyvin yksin. Tällöin asiaa kysytään joko avoimesti työhuoneessa tai sitten suoraan joltakulta aiemmin saman ongelman parissa painineelta. Välillä saattaa käydä niinkin, ettei kysymys aukea pienellä keskustelulla. Silloin koodausta voi jatkaa parin kanssa saman koneen äärellä.

Koodin kirjoittamisen jälkeen tulee katselmointi: joku muu tiimin jäsen katsoo koodin läpi ja miettii onko siinä ongelmia, tai voisiko sitä parantaa merkittävästi pienellä vaivalla. Enemmän työtä vaativat parannukset merkataan muistiin seuraavan syklin suunnitelua varten. Jos katselmoinnissa ei löydy suurempia ongelmakohtia, koodi siirretään testipalvelimelle. Sieltä asiakkaan edustaja voi katsoa näyttääkö lopputulos siltä, mitä hän oli alunperin halunnut.

Aina ongelman ratkaiseminen ei vaadi kovinkaan paljon uutta koodia. Mutta täsmälleen oikeiden koodisanojen ja niiden paikan selvittämisessä voi kulua jopa useampi päivä. Joskus haluamme muihin ohjelmiin uusia toimintoja, joita kukaan muu ei pidä tärkeänä, tai löydämme bugin, joka ei vaikuta muihin käyttäjiin. Näistä on kohteliasta vähintäänkin kertoa toisen projektin jäsenille,
mutta joskus pidämme muutoksia niin kiireellisinä, että koodaamme ne itse. Vieraaseen koodiin tutustuminen vie kuitenkin aina aikansa, koska uuden koodin lukeminen on aina hitaampaa kuin tutun. Siksi useimmin jäämme odottamaan josko asia ratkeaisi kuin itsestään ohjelman seuraavassa versiossa. Joissakin tehtävissä uutta koodia ei tarvita lainkaan.
Tehtävä saattaa olla johonkin uuteen teknologiaan tutustumista, dokumentaation (tai vaikka blogin) kirjoittamista, tai jonkin järjestelmän pystyttämistä.

Parin viikon sykli loppuu demotilaisuuteen, jonne saattaa tulla ihmisiä myös projektin ulkopuolelta katsomaan mitä uutta olemme saaneet kahdessa viikossa aikaan.

Harvemmin työnkuvaan kuuluu myös erilaisia esitelmiä, välillä kotikaupungissa ja joskus  ulkomailla. Tarkoituksena on kertoa omista kokemuksistamme ja ottaa opiksi toisilta.
Tapahtumien aiheet saattavat olla esimeriksi tietyn ohjelmointikielen tai käyttötarkoituksen (esimerkiksi meidän projektissamme joukkoliikenteen) ympäriltä.

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s