Timesheets - näppärää tuntikirjausta ja opiskelijayhteistyötä

13.05.2021

Kesä alkaa lähestyä ja saimme koko lukuvuoden kestäneen yhteistyöprojektin Aalto-yliopiston ohjelmistoprojekti-kurssille kunniakkaasti päätökseen. Oon tuossa aikaisemmissa postauksissa lupaillut kertoa projektista enemmän ja nyt olisi sen aika. Lyödään heti ensi kättelyssä tiivistetyt faktat tiskiin: kurssi meni erinomaisesti! Saimme kurssin aikana työskennellä loistavan ryhmän kanssa ja lopputuloksena on lähes tuotantovalmis open source tuntikirjausjärjestelmä. Kutsumme tätä järjestelmää innovatiivisesti nimellä Timesheets. Sokerina pohjalla rautainen opiskelijaryhmämme pokkasi myös kurssilla vuosittain Accenturen toimesta jaettavan laatupalkinnon. Kova työ palkittiin ja täytyy kyllä näin vanhempana ohjelmoitsijana todeta, että monilla ammattilaistiimeilläkin tulisi hiki pyrkiessä samanlaiseen työmoraaliin ja praktiikoihin.

Kurssi

Lyhyet sanoitukset itse kurssista. Kyseessä oli siis Aalto-yliopiston tietotekniikan koulutusohjelman ohjelmistoprojekti-kurssi. Oppilaille tuo kurssi tarkoittaa 10:n opintopisteen (n. 275h) edestä yhteistyötä aidossa projektiympäristössä, aidoille asiakkaille. Asiakkaille tuo taas tarkoittaa ryhmällistä 2-3:nnen vuosikurssin opiskelijoita, sekä yksi maisterivaiheen opiskelija ryhmän Scrum Masterina, työskentelemässä asiakkaan määrittelemän aiheen parissa. Melko usein lopputuloksena kurssista on ollut asiakkaille aitoon, jopa kaupalliseen, käyttöön sujahtavaa softaa. Oppimuskokemuksena kurssi lienee yksi Aalto-yliopiston parhaista, ainakin tietotekniikan opiskelijoille. Tämän puolesta puhuvat myös vuosittain kerättävät kurssipalautteet.

Itselläni on ollut ilo nähdä tuo kurssi “monen hatun” kautta. Kertaalleen itse oppilaana, 2016 vuodesta lähtien kurssin työntekijänä Agile Coachina mentoroimassa ryhmiä sekä nyt viimeisimpänä kokemuksena asiakkaan roolissa. Ensimmäinen kerta asiakkaan roolissa oli erityisen antoisa ja täydensi kurssikokemuksen pyhään kolminaisuuteen. Pidin myös muutamat luennot tämän vuoden kurssin aikana ylläpidettävästä koodista sekä automaatiotestauksesta, eli kokonaisuudessaan kurssi on tullut tutuksi varsin laaja-alaisesti.

Timesheets

Kurssin aikana rakentui tuote, Timesheets. Meillä oli täällä Bytecraftilla tarve näppärälle & kuukausimaksuttomalle tuntikirjaukselle. Tuota vasten olimme evaluoineet useitakin tuotteita, mutta yksikään niistä ei täyttänyt kaikkia tarpeitamme. Tällä hetkellä käytämme Quidloa, mutta se on vallan kankea peruskonsultin kirjauksille, jossa tarpeen on usein syöttää vaikka koko kuukaudenkin verran tunteja kerralla. Tarpeen lähtökohtana oli siis syöttää isoissa batcheissa tunteja mahdollisimman helposti. Tämän ympärille rakentui tuntikirjausnäkymä, jonka edessä poweruserit ylistävät ratkaisua. Kirjausnäkymää voi kätevästi komentaa pelkältä näppäimistöltä, ja esimerkiksi ne yhden kuukauden tunnit sujahtavat paikoilleen kiitettävällä tahdilla. No mess, no fuss, no hassle - kädet näppäimistöllä ja hiirelle lepotauko.


Tuntikirjausta
Tuntikirjausta


Kokonaisuutena valmiiksi asti ominaisuuksia syntyi:

  • Manageri / työntekijä roolit
  • Roolien vaihto (impersonointi)
  • Projektien lisäys + niihin käyttäjien hallinnointi
  • Tuntikirjaus
  • Erilaiset raportit

Näillä ominaisuuksilla ollaan jo tosi lähellä sitä pistettä, että pääsemme itse käyttämään tätä oikeasti ja heittämään Quidlon mäelle. Jatkotarpeiksi jäivät ainakin vielä lisää ominaisuuksia asiakkeiden hallintaan, sekä varsinaiseen käyttäjien hallintaan. Näiden suhteen saimme onneksi houkuteltua matkaamme oppilasryhmästä Eliaksen, joka aloittaa meillä piakkoin kesätöissä. Onkin siis todennäköistä, että meillä tulee olemaan tämän vuoden aikana Timesheets oikeasti käytössä.

Timesheetsiä pääsee myös koestamaan livenä täältä. Testiserveri pyörii Herokun ilmaisten instanssien päällä, joten tuossa saattaa hetki kestää ennenkun palvelu on kokonaisuudessaan käyttövalmis. Jos satutte sovellusta koestamaan, naiivisti pyydän internetiltä siistiä kielenkäyttöä tuon testipalvelun syötteiden parissa :))


Projektit
Projektit

Raportit
Raportit


Open source & Tekniikat

Meillä on Bytecraftilla kavalkaadi pitkän linjan konsultteja. On nähty erilaisia firmoja, erilaisia tapoja. Yksi asia on ollut aika vakio paikasta riippumatta: tarve kirjata tunteja. Tähän ei ole ollut nähtävillä mitään vakioratkaisua, joten siksi päädyttiin kurssiyhteistönä lähteä tavoittelemaan omaa järjestelmää. Mutta koska tarve on jopa universaali, päätimme julkaista tuotokset open sourcena MIT-lisenssin alaisena. Meillä ei ole intressiä koittaa tätä kaupallistaa, ja jos omalta osaltamme voimme auttaa siihen, että joku muu saattaisi hyötyä tälläisesti ratkaisusta, sehän olisi vain hyvä. Tuotokset löytyvät githubista:

Opiskelijoilla oli meidän puolelta projektissa vapaus valita itse tekniikat. Bäkkäriin he valitsivat Scala Playn ja frontti on Create React App:in avulla luotu TypeScript React-projekti.

Ryhmä ja yhteistyö

Viimeinen vuosi on ollut kaikkialla koronan myötä etämoodissa ja sama tilanne oli myös tämän projektin parissa. Saamme kiittää meidän oma-alotteista ja aktiivista ryhmää siitä, että lopputuloksesta tuli niin hyvä kuin tulikin. He todella ymmärsivät kommunikaation tärkeyden niin sisäisesti tiiminä, kuin asiakkaankin suuntaan. Kävimme tiiviissä yhteistyössä projektin kaikkia osa-alueita läpi vuoden varrella. Syylliset tähän sujuvaan työskentelyyn olivat Aija, Elias, Esa, Felipe, Jouni ja Niko - eli Team Codeflow.

Alkuasetelma oli tuo aiemmin kurssi-kohdassa kuvailtu ryhmä 2-3:nnen vuosikurssin oppilaita yhdellä maisterivaiheen oppilaalla höystettynä. Tekninen lähtötaso vaihteli ryhmän sisällä ja isolla osalla ei ollut entuudestaan vielä koulun kursseja enempää koodauskokemusta. Olimme jo ryhmän hakuvaiheessa korostaneet toivomaltamme ryhmältä motivaatiota oppia projektin aikana hyville softakehityksen käytännöille ja se toive täyttyi heittämällä.

Ryhmä teki suuren määrän työtä, jopa enemmän kuin kurssi olisi velvoittanut - erinomaisen lopputuloksen suurin mahdollistaja oli erityisen motivoitunut ryhmä. Projektin aikana pyrimme parhaamme mukaan auttamaan ryhmäläisiä esimerkiksi QA-käytäntöjen ja softan designin parissa olemalla läsnä koodikatselmoinneissa. Samalla pyrimme auttamaan ja antamaan aikaa myös refaktorointiin ja korostamaan sen tärkeyttä lopputulokselle. Itseäni viisaampien lausujien mukaan: 1. build the right thing, mutta erityisesti 2. build the thing right. Kaiken kaikkiaan varsin laajoja alueita, mutta ryhmä tarttui näihin oppeihin innolla. Omalta osalta oli ilo ja kunnia mentoroida näin vakuuttavalla työmoraalilla varustettuja junior-devaajia. Kokonaisuudessaan sitä oikeastaan unohti monin paikoin, että kyseessä oli rajallisella ajalla varustetuista oppilasryhmästä, eikä aidosta konsulttitiimistä.

Kysyimme ryhmältä kurssin loputtua myös palautetta ja tässä muutamia kysymyksiä ja vastauksia tiivistettyinä:

  • Todennäköisesti tärkeimpiä projektin oppeja?
    • Kommunikaatio, automaatiotestit, Scrum, refaktorointi, itseään dokumentoiva koodi, rajapinnat sekä yhdessä tiimissä tekemisen taito
  • Mikä oli projektissa parasta?
    • Monipuolinen oppi
    • Oman työpanoksen merkitys tuotteen kehitykseen
    • Hyvien käytäntöjen oppiminen mukavassa porukassa hyödyllistä tuotetta tehden
    • Ongelmien ratkaisusta syntyvä tunne
    • Asiakkaalta saatu tuki
  • Mikä oli projektissa huonointa?
    • Ajanpuute
    • Projektin työmäärän tasapainoitus muihin töihin nähden
    • Ei aikaa tehdä alussa toteutettuja toiminnallisuuksia koodin puolesta vielä paremmin
  • Millainen fiilis Bytecraftista jäi projektin jälkeen?
    • Kannustava ilmapiiri ja runsaasti hyödyllistä palautetta
    • Bytecraftin ohjelmistokäsityöläisyysideologia ja ammatillinen yhteisöllisyys tulivat tässä projektissa todistetuiksi vailla epäilyksen häivää
    • Kaikin puolin positiivinen. Erityisesti konkreettinen projektia edistänyt tuki kuten koodin katselmointi ja muu apu olivat tärkeitä projektin menestykselle
    • Aivan loistava! Niin yhteistyökumppanina kuin opettajana/mentorina tukea saatiin aina kun tarvittiin ja oli helppoa kommunikoida suuntaan jos toiseen

Ensi vuoteen

Näillä eväillä on hyvä lyödä tämän vuoden ohjelmistoprojekti kansiin. Tämä vuosi ja erinomainen tiimimme jätti myös näin asiakkaan roolissa positiivisen kuvan tulevista ohjelmistoalan ammattilaisista. Samalla meillä Bytecraftilla on tärkeää aidoilla teoilla myös itse vaikuttaa siihen, millä eväillä tulevat ammattilaiset saavat startata työuralleen. Siksi toivottavasti myös ensi vuonna löydämme halukkaan ryhmän rakentamaan seuraavaa ideaamme. Laitetaan tähän loppuun vielä lobbausta ensi vuoden ryhmälle meidän kanssa työskentelystä. Suositukset tulevat aika vakuuttavalta jengiltä, eli tämän vuoden laatupalkituilta:

NPS
NPS