Julkaisuprojekti
===
:::success
Juuso Tuunanen
1601191
LTDNS16
:::
# Johdanto
## Projektin taustoja
Aloitin projektissa jo kesäkuussa 2018 harjoittelun alkaessa. Olen ollut tekemisissä koko järjestelmän kanssa. Viimeisin iso muutos järjestelmässä käynnistyi joulukuussa 2018, kun aloin jatkokehittämään FormEditorin pohjaa. Työkaverini oli tehnyt ns. "moottorin" FormEditorille, mutta minun tehtäväni oli kasata auto mootorin ympärille. Se oli ensisijainen tehtäväni joulukuussa ja onnistuinkin saamaan sen käyttöön. Tammikuusta lähtien FormEditoriin ja sen ympärille on alettu lisäämään toiminnallisuutta, jotka jatkuivat pitkälle kevääseen. Kesästä 2019 lähtien olemme tehneet vähemmän suuria muutoksia järjestelmään, mutta olemme valitettavasti joutuneet korjailemaan isoa läjää vaihtelevia bugeja.
### Käytetyt teknologiat
Projektissamme käyttöliittymä on toteutettu [Reactilla](https://reactjs.org/) ja lomakkeet on luotu [React JSON schema formilla](https://github.com/mozilla-services/react-jsonschema-form). Tietokantana meillä on Postgres ja käytämme [LoopBack 3](https://loopback.io/doc/en/lb3/) tiedon hallitsemisessa. BackEnd on rakennettu [NodeJS](https://nodejs.org) päälle. Tämän lisäksi järjestelmä on rakennettu mikropalvelu arkitehtuurin päälle, jossa käyttöliittymä ja erinäiset osa-alueet kuten käyttäjänhallinta on jaettu omiin [Docker](https://www.docker.com/) kontteihin. Versionhallintaan käytämme Gitiä ja projektinhallintaan [Atlassian Jiraa](https://www.atlassian.com/software/jira).
## Projektin tulevaisuuden näkymät
2019 vuoden taitteessa sivusto (tai järjestelmä miten sen nyt haluaa ilmaista) siirtyi staattisesta dynaamiseen suuntaan, joka luo valtavan määrän mukavia haasteita, mutta myös ongelmia. Otimme projektissa käyttöön 2018 loppuvuodesta Pull Requestit eli kooditarkastelut ennen varsinaista koodin liittämistä tuotannon koodikantaan, joka on jo tähän mennessä estänyt joitain aivopieruja pääsemästä tuotantoon asti. Se on ollut todella hyvä kehityksen suunta. Valitettavasti kevään 2019 alussa haaveilemiani automaatiotestejä emme ole saaneet vielä paikoilleen.
## Laatuajattelu
Projektin aikana keskityn muutamaan pääteemaan projektin laadun parantamisessa, joita käsittelen päivittäisellä tasolla avatessani työtehtäviäni tai viikottaisessa pohdinnassa. Tavoitteenani on parantaa kehitystyön helppoutta ja mielekkyyttä, asiakkaan vaatimuksiin vastaamisessa (ei toistuvia bugeja) sekä loppukäyttäjän käyttökokemusta ajatellen. Projektin salassapidon vuoksi en valitettavasti voi jakaa koodia, pöytäkirjoja tai työnseurannan (JIRAN) yksityiskohtia. Pyrin kuvailemaan asiat käytännöllisestä näkökulmasta, kumminkaan paljastamatta liiallisia yksityiskohtia.
### Asiakasvaatimuksiin vastaaminen
Projektissamme on palaveri viikottain asiakkaan kanssa. Useimmiten käsittelemme ajankohtaisia aiheita, kuten juuri valmistuneita ja seuraavaksi työn alle tulevia tikettejä, mutta myös suurempaa suuntaa projektistamme. Kuvailen blogissani näitä asiakasvaatimuksiin perustuvia tickettejä tarkemmin, avaten mikä on ollut ongelma ja miten olen mahdollisesti ratkaissut sen.
### Viestintä
En raportoi blogissani kovinkaan yksityiskohtaisesti meidän sisäisestä tai ulkoisesta viestinnästä, mutta tuon esille mahdollisia ongelmakohtia ilmi sekä omia kehitysideoita aiheeseen liittyen.
---
# Heinäkuu
## Viikko 27
### Maanantai 01.07.
Kesäkuu meni lomaillessa, joten ensimmäinen työpäivä loman jälkeen alkoi seuraamalla mitä projektissa on tapahtunut. Tämän jälkeen hyppäsinkin suoraan työntekoon. Projektissamme on kahdenlaisia lomakkeita: staattisesti ja dynaamisesti luotuja. Pääosin lomakkeet ovat dynaamisesti luotuja meidän tekemällä FormEditorilla, mutta niin kutsutut alkuperäiset lomakkeet ovat vielä staattisia joita on noin 15 kpl järjestelmässä. Ensimmäinen työtehtäväni liittyikin tällaisen vanhan lomakkeen korjaamiseen.
Tämän jälkeen vaihdoin työkonetta. Nykyinen läppärini oli jo suht tehoton. Järjestelmän pyörittäminen lokaalisti vaatii paljon tehoja, sillä järjestelmä koostuu useasta docker-kontissa toimivasta mikropalvelu arkkitehtuuriin perustuvasta yksiköstä. Pitkällä tähtäimellä hitaan tietokoneen vaihtamatta jättäminen hidastaa turhan paljon työtahtia.
### Tiistai 02.07.
Järjestelmässä pystyy luomaan jokaisesta lomakkeesta pdf-version. Tämän nimi koostuu usein organisaation ja sen yksikön nimestä. Kävi kuitenkin ilmi, että toisinaan nämä nimet voivat sisältää ns. laittomia kirjaimia tiedoston nimeämisen näkökulmasta. Korjailinkin koko järjestelmästä nimeämiseen liittyviä ongelmia luomalla regexpiin perustuvan suodattimen. Testasin sen toimivuutta luomalla parhaani mukaan lomakkeille tiedoston nimiä, jotka voisivat kaataa prosessin.
Tämän lisäksi korjailin yhtä CSS ongelmaa. Muu työpäivä menikin uuden koneen säätämisessä ja asennuksessa ilmenneiden ongelmien ratkonnan parissa.
### Keskiviikko 03.07.
Päivä alkoi eilen ilmenneiden työkoneen ongelmien kanssa, jotka vihdoin ja viimein sain ratkottua. Tämän jälkeen meillä oli viikottain palaveri asiakkaan kanssa jossa kävimme läpi ajankohtaisia ongelmia ja tavoitteita. Sain myös lisäpalautetta maanantaina korjaamasti lomakkeesta ja tein palautteen mukaiset korjaukset.
### Torstai 04.07.
Järjestelmässä ei oletusarvoisesti saanut luotua kuin yhden kutakin lomaketta per yksikkö. Tämä kuitenkin voi olla ongelmallista, mikäli useita samankaltaisia lomakkeita tarvittaisiin kuten "Tulityösuunnitelmia". Lisäsin FormEditoriin uuden checkboxin, jossa lomakkeen rakentamisen yhteydessä voidaan päättää onko lomake kelvollinen useampaan kertaan monistettavaksi samaan yksikköön.
Jatkoin tähän liittyvän ongelman ratkaisemisella. Toisinaan lomakkeissa on tarve nähdä listausnäkymässä aliotsikko. Esimerkiksi "Työnopastus" lomakkeissa voi olla tarve nähdä, mitä työtehtävää varten lomake on luotu. Tähän asti järjestelmässä oli vain muutama hassu lomake jotka vaativat alaotsikon, joten siihen oli luotu tietty jäykkä rakenne miten aliotsikko määritetään. Kuitenkin tämä tapa ei toimi pitkässä juoksussa. Siispä ratkaisin ongelmaa lisäämällä FormEditoriin pudotusvalikon, joka päivittyy lomakkeen rakentumisen yhteydessä. Tästä pudotusvalikosta lomakkeen luoja voi valita minkä syötekentän haluaa näkyvän alaotsikkona.
### Perjantai 05.07.
Jatkoin "dynaamisen alaotsikon" parissa. Viimeistelin myös pari kauneusvirhettä torstain aiemmasta työtehtävästä, jotka olivat jääneet huomaamatta. Onneksi käytössämme on pull requestit eli koodin katselmointi ennen tuotantokoodiin liittämistä, joissa nämä virheet ilmenivät.
### Viikon mietteitä
Viikko alkoi mukavan pehmeällä laskulla. Olen myös iloinen uudesta työkoneesta, vaikkakin asentamisessa menikin muutama tovi liikaa. Edellinen kone nosti kehitysympäristössä järjestelmän suht hitaasti ylös, mikä teki erityisesti backendiä koskevien muutosten tekemisestä hyvinkin hidasta ja puuduttavaa.
[Tässä viikon 27 tuntiraportti](https://drive.google.com/open?id=1FszsIrN7UOsjWu8G41ypZwfBJAmTR1RZ)
## Viikko 28
### Maanantai 09.07.
Aloitin viikon korjaamalla CSS ongelmia. Vaikkakin meillä on käytössä melko yleisiä sääntöä lomakkeiden tyylien suhteen, meillä on valitettavasti kolme erilaista näkymää lomakkeiden täyttämiselle. Yhdestä näistä otsikot hyppivät hieman liian sivuille. Mikä pahinta, tämä kyseinen ongelma aiheutui viime viikolla omasta tekemästä CSS muutoksesta. Valitettavasti meillä ei ole minkäänlaista testausmekanismia paikalla, joka ottaisi tämän kaltaiset virheet kiinni.
Viikonlopun aikana tuli myös palautetta "alaotsikko" ominaisuudesta. Asiakas halusi siihen vielä hieman lisää toiminnallisuutta, joten jatkoin sen jatkokehittämistä.
### Tiistai 09.07.
Jatkoin alaotsikko ominaisuuden kehittämistä. Työtehtävä osoittautui melko laajaksi alkuperäisen aavistukseni sijaan.
Tein työpäivän päätteeksi korjauksia viime viikolla tekemääni tiedostonnimeämis-funktioon. Siihen oli jäänyt vielä muutamia asioita huomioimatta. Tässäkin tapauksessa olisi hyvin tärkeää olla yksikkötestejä näiden ongelmien kiinni saamiseksi, joita meidän projektissa ei valitettavasti ole.
### Keskiviikko 10.07.
Aloitin työpäivän alaotsikko ominaisuuden parissa. Ounastelen sen olevan nyt valmis, mutta pitänee vielä odottaa palautetta.
Muutoin päivä menikin palavereissa. Viikkopalaverissa asiakkaan kanssa käytiin viimeisimpiä muutoksia läpi ja kuunneltin häneltä polttavimmat huolenaiheet, jotta osaamme priorisoida työtehtävät sen mukaan. Meillä oli myös firman sisäinen viikkopalaveri, jossa käydään nopeasti läpi jokainen firman projekti, jotta kaikki työntekijät pysyvät ajantasalla. Tosin heinäkuu on hiljaisin kuukausi lomien takia.
### Torstai 11.07.
Alaotsikko ominaisuuden moottorista eli sen takana olevasta funktiosta löytyi vielä muutamia hiomattomia kulmia. Monimutkaisten funktioiden tekeminen on vaikeaa ja niihin todellakin pitäisi kirjoittaa yksikkötestejä, jotta niiden mahdollinen muuttaminen ja toiminnan varmistaminen saataisiin paremmalla tolalle.
Muita ongelmia korjatessa törmäsin omituiseen bugiin, jossa käyttöliittymä ei toimi kuten sen pitäisi. Kun yritin lisätä henkilölle lomakkeen A, niin sinne ilmestyikin lomake B. Pinnan alta paljastuikin ongelmia tavassa joten painikkeet saivat datansa.
### Perjantai 12.07.
Viimeistelin sekä lomakkeenlisäys-ongelmaan ratkaisun sekä tein viimeisen päivityksen alaotsikkoa pyörittävään funktioon.
### Viikon mietteitä
Tällä viikolla alkoi automaatiotestauksen poissaolo komeasti nostamaan valitettavan vanhaa ongelmaa. Järjestelmä on tässä vaiheessa niin laaja, ettei aina voi olla täysin tietoinen miten jotkut muutokset rikkovat muita toimintoja. Tämä on varsin iso ongelma erityisesti funktioissa, joita monet ominaisuudet käyttää sekä CSS muotoiluissa. Tähän kaikkeen tulisi kipeästi saada enemmän (eli ylipäätään) automaatiotestausta, ottamaan kiinni turhia ongelmia. Pelkät yksinkertaiset savutestitkin auttaisivat jo asiaa.
[Tässä viikon 28 tuntiraportti](https://drive.google.com/open?id=1Vs4JaWvLJCoKd_lQt0mC3n6Za3pZf817)
## Viikko 29
### Maanantai 15.07.
Viikko alkoi korjaamalla dynaamisen järjestelmän huonoja puolia. Vaikkakin FormEditor on ollut enemmän kuin hyödyllinen menneiden kuukausien aikana, tulee siinä ongelmia jos sitä ei käytä täysin ohjeiden mukaan. Korjasin ongelman, joka vuoti väärin nimettyjä lomakkeita paikkoihin, joihin käyttäjillä ei ole oikeutta. Ilman FormEditoria lomakkeiden määrä olisi huomattavasti pienempi, mutta toisaalta lomakkeiden tekemiseen menisi kaikilta osapuolilta mielenterveys. Pitää vain lisätä tiukempia suodatuksia ja ehtoja järjestelmään vuotojen estämiseksi.
Muutoin korjasin pari pientä bugia. Toinen bugi jätti lomakkeiden nimet näyttämättä käyttöliittymässä oikein ja toinen esti julkisten lomakkeiden aukaisemisen, koska funktiolle ei oltu annettu oikeita parametreja. Kuitenkin hyvin nopeita työtehtäviä suorittaa.
### Tiistai 16.07.
Tänään meillä oli pitkähkö sisäinen palaveri projektin työnkulusta. Kävimme läpi JIRA tikettejä ja pohdimme asioiden tärkeysjärjestystä. Korjasin myös päivän päätteeksi pienen bugin uusien luotujen lomakkeiden nimeämiseen liittyvissä ongelmissa.
### Viikon mietteitä
Tällä viikolla työtunteja ei kertynyt pahemmin kun keskityin muuhun kuin työntekoon. Kevyet viikot ovat toisinaan hyviä ja auttavat muistamaan, ettei kaikki projektissa aina ole huonosti. Järjestelmässä kuitenkin on huomattava määrä ominaisuuksia ja pienet bugit siellä täällä ei ole niin vakavia.
Seuraavina viikkoina en tee töitä, koska keskityn pääasiassa kouluun.
[Tässä viikon 29 tuntiraportti](https://drive.google.com/open?id=14w-niuY5iH86D0Di3ZawLsU_5MNYV2Xc)
# Elokuu
## Viikko 32
### Tiistai 06.08.
Vaikkakin viime viikot olin poissa töissä, niin tälle viikolle tuli pikaisesti tarve sijoittaa omia resursseja takaisin projektiin. Korjailinkin koko päivän pienehköjä ongelmia. Näitä olivat mm. allekirjoitus lomakemoduulin tyylittelyt, undefined virheen korjaus backend kutsusta sekä lomakkeen virheellisen validointi virheen korjaus. Näiden lisäksi autoin harjoittelijaa työtehtävän kanssa.
Korjasin myös yhden React-komponentin tilanhallinta ongelman. Oon sitä mieltä, että on hyvä olla tarpeeksi pitkään projektissa, jotta omat virheet kävelee vastaan, sillä sitä tämän bugin korjaaminen oli; omien virheiden korjausta. Kyseessä oli listausnäkymä, jossa useat komponentit käyttivät samaa pop-up komponenttia. Olin kuitenkin virheellisesti luonut tilankäsittelyn pop-up komponentille, josta aiheutui omituista käytöstä, jossa pop-up kohdisti toiminnon väärään komponenttiin. Tulipahan jälleen opittua olemaan tarkempi Reactin tilan hallinnan kanssa.
### Keskiviikko 07.08.
Korjasin päivämäärä widgetistä oletuspäivämäärä ongelman. Aiemmin se käytti "tänään" -painiketta, jolla päivämäärän kykeni asettamaan. Tultiin kuitenkin siihen lopputulokseen, että sen tulisi oletusarvoisesti laittaa tämä päivä oletuspäivämääräksi. Tämä on erityisesti käyttäjäkokemusta parantava ominaisuus kun täyttää pidempiä lomakkeita.
Piilotin myös käyttöliittymästä yhden kentän puuttuvan datan. Toisinaan tässä kentässä ei ole dataa, joten se näyttää todella omituisen arvon.
Viikottaisessa asiakaspalaverissa käytiin läpi ajankohtaisimmat ongelmat ja priorisoitiin työtehtäviä sen mukaan. Firman viikottaisessa palaverissa käytiin jokainen projekti pikaisesti läpi. Kirjoittelin myös jonkun verran Jiraan tikettejä.
### Torstai 08.08.
Aloitin päivän viimeistelemällä "datan piillottamisen" käyttöliittymstä, jonka laitoin eilen vireille.
Jatkoin työskentelemällä refaktoroinnin parissa. Järjestelmän isoissa muutoksissa on se huono puoli, että se toisinaan vaatii paljon refaktorointia. Muutimme allekirjoituskentät hieman erilaiseen muotoon ja yhdenmukaistimme niiden lisäämistä lomakkeisiin lisäämällä "palikan" FormEditoriin. Käytinkin muutaman tunnin käydessä läpi lomakkeita useammsta paikasta, jossa vanhoja allekirjoituksia käytettiin. Kirjottelin myös skriptin, joka päivittää tietokantakirjauksia.
Päivän päätteeksi korjasin CSS-tyyliongelman pdf:n taulukosta. Arvot menivät pykälän väärään kohtaan, jos sarakkeessa ei ollut arvoa. Joten lisäsin sinne default arvon käyttäen CSS:ää, jotta arvot pysyisivät omissa sarakkeissaan.
### Perjantai 09.08.
Tein muutaman tunnin töitä ja naputtelin kolme lyhyttä bugia kuntoon. Kaikki liittyivät pääasiassa CSS käyttöön.
### Viikon mietteitä
Vaikkakin viime viikot ovatkin olleet muuta kuin työntekoa, niin oli mukava tehdä tällä viikolla töitä. Työn teossa on hyvänä puolena selkeän edistymisen havaitseminen. Usein myös tiketit ovat melko pieniä, joten omaa työntekoa on helpompaa rytmittää.
Seuraavat viikot meneekin taas muissa kuin koodaustyön parissa.
[Tässä viikon 32 tuntiraportti](https://drive.google.com/open?id=1i96TFmNmJWdMi3fCli-XFP_ur298ZzgG)
# Syyskuu
## Viikko 37
### Maanantai 09.09.
Viikko alkoi liitetiedoston tallentamisongelman parissa. Tietylle lomakkeelle ei voinut tallentaa liitetiedostoa lainkaan, vaan se kaatui. Onneksi ongelmasta selvittiin muutamassa tunnissa.
Päivän päätteksi aloin käymään läpi funktiota, joka rakentaa dataa käyttöliittymää varten. Ongelmana oli se, että osa tiedosta suodattui pois, mikäli se ei sisältänyt yhtä vapaaehtoista kenttää.
### Keskiviikko 11.09.
Viimeistelin maanantaina aloittamani funktion. Sitten siirryinkin melko pitkäkestoiseen tikettiin. Menneiden viikkojen aikana kun olin poissa, järjestelmään oli tullut uusi ominaisuus, jossa lomakkeille kykeni lisämään "palikan", jonka avulla sen sisältö kyetään otsikoimaan dynaamisesti. Ongelmia kuitenkin ilmeni kun tätä pyrittiin käyttämään PDF muodostamisessa. Minun tehtäväkseni muodostuikin parsintafunktion koodaaminen.
Muutoin tänään oli firman sisäinen viikkopalaveri, jossa käytiin nopea läpileikkaus kaikista projekteista.
### Torstai 12.09.
Tänään oli asiakkaan kanssa palveri, missä käytiin läpi projektin nykyistä tilaa. Muutoin jatkoin parsinta funktion parissa.
### Perjantai 13.09.
Jatkoin parsintafunktion parissa.
### Viikon mietteitä
Vaikkakin olen dynaamisen järjestelmän kannalla, niin toisinaan "ylättäen" tulevat ominaisuudet ovat hieman ärsyttäviä. Minuakin paljon työllistänyt parsintafunktio on hyvä esimerkki siitä miten "pienet muutokset" voivat aiheuttaa ennakoitua enemmän töitä. Periaatteessa ongelma mitä korjaan on aivan erillinen ongelma, kuin mitä uusi ominaisuus pyrki ratkaisemaan. Toisinaan onkin vaikeaa nähdä miten uudet ominaisuudet voivat työllistää yllättävillä tavoilla. Tähän lienee olisi vastalääkkeenä huolellisempi suunnittelu ja ennakkoon asioiden miettiminen. Kuitenkin nopeassa kehityssyklissä helposti luvataan asiakkaalle ominaisuuksia, jotka voivat aiheuttaa huomattavan määrän lisätyötä.
[Tässä viikon 37 tuntiraportti](https://drive.google.com/open?id=1uuJvU7odglFqx3I6ZeTwhQivky1Iv5X2)
## Viikko 38
### Tiistai 17.09. - Torstai 19.09.
Jatkoin parsintafunktion parissa. Keskiviikkona oli perinteinen firman sisäinen palaveri, jossa käytiin läpi koko firmaan koskevaa tilannekatsausta.
### Viikon mietteitä
Parsintafunktion koodaaminen osoittautui haastavammaksi kun osasin odottaa. Suurin syy tähän on funktion rekursiivisuus. Sen lisäksi lomakkeissa on mahdollista olla muutamia erilaisten kenttätyyppien yhdistelmiä, jotka tulee ottaa huomioon. Tosin haasteen positiivinen puoli on se, että se kehittää koodaajana eteenpäin.
[Tässä viikon 38 tuntiraportti](https://drive.google.com/open?id=1zx_MvYfWpc0-knP2IdEIaE2hG2oSIF4U)
## Viikko 39
### Maanantai 23.09.
Jatkoin parsintafunktion parissa.
### Tiistai 24.09.
Vihdoin ja viimein sain parsintafunktion valmiiksi. Työaikaa kului huomattava määrä myös asteittain haastavempien syötteiden kehittelyssä. Lopulta funkio taklasi kaikki mahdolliset yhdistelmät.
Kävimme projektitiimillä tulevan "sprintin" (meillä löyhä käsite) suunnittelua läpi.
Päivän päätteeksi sipistelin CSS sekä "staattiset lomakkeet" kuntoon [08.08. tekemäni muutoksen jäljiltä](https://hackmd.io/2NhQpImkQZeJ09J81ISJIQ?view#Torstai-0808). Jälleen kerran todiste siitä, miten isot ja laajat muutokset voivat pitkään viipyä järjestelmässä.
### Keskiviikko 25.09.
Järjestelmämme on ollut pitkään vain suomenkielinen. Meillä on ollut teoreettinen tuki englannille, mutta käytännön tasolla sitä ei oltu vielä laajasti toteutettu. Käyttöliittymän yläpalkissa oli painike, jolla kielen kykenee vaihtamaan. Kuitenkin kielenvaihdon onnistunut muutos vaati useamman kerran eri kielten välillä klikkailua. Yritin selvittää mistä ongelma johtui, mutta valitettavasti seinä nousi pystyyn. Vaihdoimmekin työkaverin kanssa tikettejä päikseen, sillä hän oli ollut kirjoittamassa monikielisuus toiminnallisuutta. Joka tapauksessa ongelma aiheutuu jonkilaisesta tilanhallinta virheestä.
### Torstai 26.09.
Aloitin tänään selvittämään järjestelmämme oikeusmäärittelyihin liittyviä ongelmia. Yksittäisellä käyttäjällä oikeudet on sidottu yksiköittäin eli mikäli organisaatiossa on useamassa tasossa yksikköjä, niin käyttäjällä voi olla jokaisessa eri rooli. Kuitenkin tämä toiminnallisuus ei toimi kuten pitäisi, vaan vahvemmat oikeudet vuotavat ylöspäin.
### Perjantai 27.09.
Jatkoin oikeusmäärittelyn parissa. Aloitin myös päivän päätteeksi hieman kiireellisemmän ongelman parissa, jossa päivämäärät eivät tulostuneet oikein pdf:lle. Tämä liittyi päivämäärien oletusarvoihin, joita [käsittelin 07.08.](https://hackmd.io/2NhQpImkQZeJ09J81ISJIQ?view#Keskiviikko-0708).
### Viikon mietteitä
Tällä viikolla oli piristävää saada massiivinen tiketti valmiiksi. Aluksi se tuntui huojentavalta, mutta sitten sain usemman tiketin peräjälkeen, jotka olivat itselleni haastavia, sillä en täysin hahmota järjestelmää näiltä osin. Onneksi työkavereilta saa apua.
Tämä viikko on myös siitä ollut erikoinen, että kaksi aiemmin tekemääni muutosta kävelivät vastaan, jotka nekin olivat samalta viikolta. Onneksi en sentään ollut kylvänyt uuseja bugeja, vaan kyse oli aiemmin huomaamatta jäänneistä bugeista. Tosin, herää kysymys, miten monesti tämänkin kaltaiset bugit jäisivät kiinni, jos meillä olisi käytössä mittava automaatiotestaus.
[Tässä viikon 39 tuntiraportti](https://drive.google.com/open?id=1FHrJfIkpEGuP4JUXi7RNNQS2zdetefpm)
# Lokakuu
## Viikko 40
### Maanantai 30.09.
Tänään sain viimeisteltyä päivämäärä ongelman PDF:llä sekä moniroolisuus ongelmat. Valitettavasti pitkään työstämästäni parsintafunktiosta löytyi puutteita, joten täytyi palata sen pariin.
### Tiistai 01.10.
Tänään oli tuottoisin päivä pitkään aikaan. Sain uskomattoman flow tilan päälle ja sain sen turvin selätettyä liudan bugeja. Päivä lähti käyntiin nyt viimeistellyn parsintafunktion parissa jonka jälkeen siirryin kuuden pikkubugin kimppuun. Bugit olivat osittain käyttöliittymä muutoksia, mutta myös backendin toiminnallisuutta. Tänään korostuu selkeä etu mikä tulee pitkään samassa projektissa työskentelyn tuloksena. Kykenin korjaaman monet bugit pikaisesti, koska luettuani ongelman kuvauksen tiesin lähes suoraan mistä ongelma juontaa juurensa. Tuntui hyvältä.
### Keskiviikko 02.10.
Alotin päivän käymällä läpi JIRAa ja sähköposteja. Pidin huolta, etteivät asiakkalta tulleet sähköpostit sisältäneet tietoa, joka puuttui meiltä backlogista.
Tämän jälkeen olin asiakkaan kanssa palaverissa, jossa kävimme projektin nykytilaa läpi.
Loppupäivästä selätin jälleen läjän pikkubugeja, jotka oli pääasiassa yksittäisten lomakkeiden korjailua. Tämän jälkeen siirryin hieman työllämpään bugiin, jossa widgetit olivat menneet sekaisin. Tämä johtui siitä, että react-jsonschema-form sisältää useampia eri tyyppisiä syötekenttiä, mutta niille voi myös määritellä omia widgettejä. Tässä kyseissä lomakkeessa oli käytössä oma custom toteutus tietyntyylisille kentille, mutta se valitettavasti ajoi yli kaikki sen tyypin widgetit samalla. Pitikin hioa logiikkaa paikoilleen tämän estämiseksi.
### Torstai 03.10.
Päivä alkoi pitkäkestoisen ongelman parissa. Yli vuoden ajan olemme koittaneet löytää ratkaisua ongelmaan, jossa teksti katkeaa kesken kaiken PDF raporteissa. Syy tälle on vielä epäselvä. Tästä tulee lienee pitkä tiketti.
### Perjantai 04.10.
Jatkoin kirjaisimen katkeilun parissa ja koitan paikallistaa ongelmaa.
### Viikon mietteitä
Vaikkakin viikko oli melko bugikorjausvoittoinen, on syytä iloon. Valehtilisin jos väittäisin kokevani muuta kuin leveää hymyä siitä, että kykenin ratkaisemaan tiistaina ja keskiviikkona läjän pikkubugeja niin pikaisesti. Olen toisaalta ollut projektissa mukana kesäkuusta 2018 ja ollut koodaamassa monia keskeisiä toiminnallisuuksia, joten ei ihme, että tunnen järjestelmän niin hyvin. Vähän jännittää miten PDF-raporttien kanssa tulee käymään.
[Tässä viikon 40 tuntiraportti](https://drive.google.com/open?id=1pC5NlZ7u7yQXyVRlXuHEKWrRIRqFO7wg)
## Viikko 41
### Maanantai 07.10. - Perjantai 11.10.
Työskentelin viikon PDF-raporttien katkeilevien kirjaisimien parissa. Syy vihdoin löytyi, kun aloin pohtimaan ongelmaa laatikon ulkopuolelta. Pitkään ajattelin ongelman piilevän CSS muotoilussa ja erityisesti `page-break-inside: avoid` säännössä, jonka pitäisi estää elementin katkeamista kesken sivun. Lopulta vastaus löytyikin HTML elementistä `fieldset`. Yksittäinen fieldset ei muodostuisi ongelmaksi, mutta lomakkeet sisältivät lukuisia sisäisiä fieldsettejä, jonka takia ennen pitkään tulee tilanne, jolloin kirjaisin katkeaa vääjäämättä väärästä kohdasta. Syy tähän löytyy siitä, että PDF muodostamisessa ei kyetä havaitsemaan kuin uloin fieldset kirjaisimien katkeilun ehkäisyssä. Ratkaisuna korvasin fieldsetit diveillä meidän PDF-luomisfunktiossa.
Tämän toiminnallisuuden ongelman ratkaisussa tarvitsin todella automaatiotestausta. Onneksi työkaveri oli aiemmin ollut vastaanvanlaisen ongelman kimpussa, jossa testattiin lukuisten PDF-lomakkeiden tulosteiden vertailua. Lukuisilla tarkoitan 200+ lomaketta. Näiden läpi käyti käsipelin olisi sulaa hulluutta, joten automaatiotestin avulla kykenin vertailemaan luotuja PDF jokaisen CSS muutoksen jälkeen. Automaatiotestin avulla siis kykenin tekemään tarvittavat muutokset CSS, jotka aiheutuivat HTML elementin muuttamisesta.
Muutoin tällä viikolla korjasin yhden pienen bugin sekä osallistuin kahteen viikottaiseen palaveriin.
### Viikon mietteitä
Tällä viikolla sain ensikädessä kokea automaatiotestin hyötyjä. Toivoisin projektissamme olevan enemmänkin automaatiotestejä, mutta toivottavasti teemme niitä lähitulevaisuudessa lisää. Mutta se jäänee nähtäväksi, sillä on kyse liiketoiminnasta ja on vielä hieman epäselvää mikä projektin pitkän tähtäimen tilanne on.
[Tässä viikon 41 tuntiraportti](https://drive.google.com/open?id=1tX8JYil69twawRZxxpu233z2M30bsz0f)
## Viikko 42
### Maanantai 14.10.
Päätin saattaa tänään kirjaisin ongelmista aiheutuvat CSS muutokset loppuun. Olin valmistautunut tekemään todella pitkää päivää, mutta onneksi selvisin normaalilla työpäivällä. Tuntuu hyvältä saada laaja tiketti pois hartioilta.
### Tiistai 15.10. ja keskiviikko 16.10.
Tein molempina päivinä töitä oikeusmäärittelyjen parissa. Useimmiten kaikki kehitystyö tehdään järjestelmässä admin oikeuksilla, joten oikeushierarkia tuppaa jäämään huomaamatta. Kuitenkin yksittäisissä testeissä paljastui, että oikeusmäärittelyt eivät olleet tarpeeksi tiukat ja käyttäjä näki enemmän kuin olisi pitänyt.
### Viikon mietteitä
Kun saman tiketin parissa on työskennellyt useita päiviä (ei välttämättä useita työtunteja), alkaa työnteko tuntua nihkeältä. Siispä päätin alkuviikosta saada tiketin harteiltani, jotta se ei enää vaivaisi eikä potentiaalisesti estäisi muiden työntekoa. Toisinaan pitkään roikkuvat työtehtävät aiheuttavat alituista stressiä, jota en tällä hetkellä kaipaa yhtään lisää.
[Tässä viikon 42 tuntiraportti](https://drive.google.com/open?id=1tdY1cn_Y-354zk7SrEnhAXxISLk4gygw)
## Viikko 44
### Maanantai 28.10.
Aloitin viikon korjaamalla oikeusmäärittely ongelmaa. Tällä kertaa ongelmana oli, ettei henkilö nähnyt lomakkeita, joita hänen olisi tullut nähdä.
Koitin myös uudelleen toistaa ongelmaa joka oli määritelty tiketissä, mutta en onnistunut siinä. Jäädään siis odottamaan milloin tikettiin tulee lisätietoa.
Pyysin myös työkaverilta apua regexp määrittelyyn. Piti lisätä puhelinnumerokenttään validointi, joka herjaa jos numero ei ole oikeassa muodossa. Se mikä siitä teki itselleni haastavan oli se, että puhelinnumero voi sisältää numeroiden lisäksi alussa + () merkkejä.
Näiden jälkeen valitettavasti sain jälleen ison tiketin purtavaksi. Huomasimme, että react-jsonschema-form ei hävitä ehdollisista kentistä dataa valinnan muuttuessa. Toisin sanoen, jos lomakkeessa on esim. kyllä-ei valinta ja niiden alla tulee lisätietoa, nämä lisätiedot eivät häviä mikäli valintaa muutetaan. Tämä aiheutti meille päänvaivaa niissä lomakeissa joissa dataa kootaan yhteen ja tuodaan käyttäjälle ilmi. Aloinkin koodaamaan funktiota, joka suodattaa ns. käyttämätöntä dataa pois lomakkeesta. Jälleen kerran suht monimutkainen ongelma, erityisesti kun on kyse rekursiosta.
### Tiistai 29.10.
Korjasin päivän aluksi muutamia tekstejä FormEditorin "palikoista", joita voidaan käyttää lomakkeen luonnin yhteydessä. Näiden avulla lomakkeisiin voidaan helposti lisätä monimutkaisia kokonaisuuksia muutamalla klikkauksella. Tosin, aika oli jättänyt osasta palikasta ohjetekstit hieman jälkeen ja ne piti viilata kuntoon.
Meillä on myös tulevaisuudessa mahdollisesti tulossa muutamia isoja muutoksia. Valmistumme näihin mahdollisiin muutoksiin lisäämällä jo tässä vaiheessa kevyitä ominaisuuksia. Nämä ominaisuudet keräävät oleellista tietoa näitä mahdollisia isoja muutoksia varten.
Loppupäivän käytinkin datan siistimisfunktion parissa, jonka aloitin eilen.
### Keskiviikko 30.10.
Viimeistelin maanantaina aloittamani funktion. Meillä oli myös firman sisäinen palaveri, jossa käytiin hieman tulevaisuuteen liittyviä asioita läpi. Kävin poikkeuksellisesti illasta asiakkaan luona työkaverini kanssa, käyden läpi projektin nykytilaa ja puhuimme mahdollisista uusista ominaisuuksista.
### Perjantai 01.11.
Aloitin tiketin, joka liittyi monikielisyyden tukeen. Kuten aiemmin tuli todettua, niin monesta osasta järjestelmää puuttui käytännön tuki kielen vaihdolle. Tiketti jäi kumminkin hieman kesken puuttuvien tietojen vuoksi.
### Viikon mietteitä
Tämä viikko oli siitä mielenkiintoinen, että keskiviikkona oli monta tuntia palavereita joissa käytiin myös läpi tulevaisuuden näkymiä. Mikäli projektimme jatkuu hamaan tulevaisuuteen asti, on syytä käydä palavereita läpi jossa pohdimme automaatiotestauksen tulevaisuutta ja kannattavuutta. Mutta mikäli projekti laajenee yhtään, tarvitsemme sitä suojaverkkoa toden teolla.
[Tässä viikon 44 tuntiraportti](https://drive.google.com/open?id=1Szmp3lfIFD5IEpWuITKGPcxvPOrzFRLW)
# Marraskuu
## Viikko 45
### Maanantai 04.11.
Aloitin viikon korjaamalla itse luotua ongelmaa. Kirjoittelin viime viikolla datan siistimisfunktion, mutta se palauttikin yhdessä tapauksessa tiedon väärin. Siispä viilasin funktiota hieman.
Aloitin työstämään palkkausprosessiin liittyvien ongelmien parissa. Se on hieman moniulotteisempi ongelma, joka on osittain oikeusmäärittelyistä, mutta myös muista aiemmin tehdyistä muutoksista kiinni. Tätä ominaisuutta ei ole aikoihin testattu/käytetty, sillä se ei ole vielä loppukäyttäjille käytettävissä. Kuitenkin näitä on tiedossa, joten ongelmat ilmeni ominaisuutta testatessa.
### Tiistai 05.11.
Sain lisätietoa perjantaina aloittamaani käännösongelmaan ja tein tiketin loppuun asti. Jatkoin myös palkkausprosessin parissa.
### Keskiviikko 06.11.
Viimeistelin palkkausprosessin ongelmat. Osallistuin myös viikottaiseen firman palaveriin, jossa kävimme pintapuolisesti kaikki firman projektit läpi.
### Torstai 07.11.
Palkkausprosessia korjatessa kävi myös ilmi, että henkilön luomisessa järjestelmään oli vanhoja jäänteitä ajalta ennen tiukempia oikeusmäärityksiä. Aloinkin siis hiomaan henkilön lisäämistä nykyjärjestelmään sopivaksi.
Asiakaspalaverissa kävimme läpi akuutteja ongelmia, kuten tätä palkkaus- sekä henkilönluomisprosessia läpi.
### Perjantai 08.11.
Viimeistelin henkilön luomiseen liittyvien ongelmien ratkonnan.
### Viikon mietteitä
Tällä viikolla tuli hyvä muistutus siitä, miten joskus kehitetyt mutta sittemmin hyllylle jääneet ominaisuudet voivat alkaa homehtua. Tosin, näitäkin ongelmia saisi kiinni mikäli paikoillaan olisi automaatiotestausta. Tässä vaiheessa on jo liian ilmeistä, että olemme todella kipeästi automaatiotestauksen tarpeessa.
[Tässä viikon 45 tuntiraportti](https://drive.google.com/open?id=1ScKPhQad3LQ1KzYp_FIN56Y85py35o94)
## Viikko 46
### Maanantai 11.11.
Vaikkakin sain palkkausprosessin korjattua viime viikolla, ilmeni sieltä vielä yksi ongelma joka jäi huomaamatta. Palkkausprosessissa oleville kiinnostaville henkilöille voi lähettää suoraan järjestelmästä sähköpostia. Tässä toiminnallisuudessa olikin sitten asioita rikki, jotka vaativat korjausta.
Loin myös uuden mikropalvelun meille tulevaa toiminnallisuutta varten. Toistaiseksi palvelu ei sisällä muuta kuin rungon, mutta piakkoin siihen on tulossa lisää tavaraa.
Tämän lisäksi meillä oli myös projektiin liittyviä palavereita.
### Tiistai 12.11.
Meille tuli uusi ulottuvuus oikeusmäärittelyihin. Sen lisäksi, että käyttäjät voivat saada tietyt oikeudet, niitä joudutaan rajoittamaan myös suhteessa muihin käyttäjiin. Esimerkiksi esimiehet eivät saisi nähdä järjestelmän kautta toistensa lomakkeita. Lisäsin tämän toteutuksen oikeusmäärityksiin.
### Keskiviikko 13.11.
Osallistuin viikottaisiin palavereihin, jotta pysyn ajantasalla, mutta muutoin käytin päivän muihin asioihin.
### Torstai 14.11.
Ei suoranaisesti liittynyt projektiin, mutta välillisesti kuitenkin. Kaikki työntekijät osallistuivat Scrum koulutukseen. Sovimme myös parin viikon päähän meidän projektiin retropalaverin. Uskonkin tämän osoittautuvan hyödylliseksi pitkässä juoksussa.
### Viikon mietteitä
Olen iloinen siitä, että ennakoimme tulevia asioita jo hyvissä ajoin. Viimeisen parin viikon aikana on tullut työstettyä erilaisten oikeusmäärittelyjen parissa ja täytyy myöntää, että niiden sisäistämiseen on kulunut paljolti aikaa. Onneksi niistä pääsee paremmin kärryille ajan kanssa.
[Tässä viikon 46 tuntiraportti](https://drive.google.com/open?id=1b7UJyDyY6FzwdY4bZUtIhy2k0DRWgeVM)
---
# Loppusanat
Kun projektimme kehityskaarta miettii vuoden 2018 lopusta kesään 2019 ja kesästä 2019 syksyyn 2019, on havaittavissa selkeitä trendejä. Viime talven syklissä lisäsimme isoja muutoksia järjestelmään, pääasiassa FormEditorin ja siihen liittyviä ominaisuuksia. Kuitenkin kesästä 2019 lähtien olemme korjanneet toistuvasti ongelmia, joita nämä "dynaamisempaan aikaan" siirtymiseen vaaditut ominaisuudet ovat aiheuttaneet.
Meillä oli alustavasti puhetta jo viime talvena, että alkaisimme kirjoittamaan testejä keväällä 2019, mutta sitä ei kuitenkaan koskaan tapahtunut. Olenkin melko vakuuttunut siitä, että liialliset bugikorjaukset aiheutuvat suoraan testien puutteesta. Onneksi sentään lisäsimme kehitysprosessiimme "pull requestit", jotka ovat jo tähän asti estäneet pahempien virheiden sulauttamista järjestelmään. Toinen melko tuore lisäys kehitysprosessiimme on retrot, joista ensimmäinen koittaa viikolla 48.
Tästä huolimatta, meidän tuotteen laatua nakertavat tarkkojen vaatimusmääritelmien / tiketin kuvausten puuttuminen sekä paljon tässä blogissanikin puhuttu automaatiotestien puuttuminen. Ongelma juontuu pääasiassa osaavien henkilöiden puuttumisesta tai ajankäytön rajallisuudesta. Esimerkiksi oma osa-aikaisuus estää lisäämästä laadullisesti lisäarvoa projektiin, sillä en kykene sitoutumaan ajallisesti pitkäjänteisen laadun varmistamiseksi.
Olenkin toiveikas sen suhteen, että retrot aloittavat ohjelmistokehityksen laadun parantamista, sillä voimme helposti peilata mistä ongelmat ovat viime aikoina johtuneet ja mikä siihen olisi ratkaisu. Tulevassa retrossa aionkin tuoda testauksen tärkeyden esille.
[Tuntiraportti ajalta 1.7. - 17.11.2019](https://drive.google.com/open?id=1Y9mJV8HJn5HMfnaHuswHcAz3JrSyMvZq)
---
# Yksilöarviointi
## Työpanos ja sitoutuminen projektiin
- [x] **TASO 1:** Omaa työpanosta ja sitoutumista on kuvattu. (**Tässä blogissa**)
- [ ] **TASO 3:** Omaa työpanosta ja sitoutumista on seurattu ja tarkasteltu/arvioitu.
- [ ] **TASO 5:** Omaa työpanosta ja sitoutumista on pyritty kehittämään tarkastelun/arvioinnin perusteella.
## Oman työn seuranta ja kehittäminen
- [x] **TASO 1**: Oman työn seurantaa ja kehittämistä on kuvattu. (**Tässä blogissa**)
- [ ] **TASO 3:** Oman työn seurantaa ja kehittämistä on seurattu ja tarkasteltu/arvioitu.
- [ ] **TASO 5:** Oman työn seurantaa ja kehittämistä on pyritty kehittämään tarkastelun/arvioinnin perusteella.
## Reflektio- ja itseohjautuvuusosaaminen
- [x] **TASO 1:** Omaa reflektio- ja itseohjautuvuusosaamista on kuvattu. (**Tässä blogissa**)
- [ ] **TASO 3:** Omaa reflektio- ja itseohjautuvuusosaamista on seurattu ja tarkasteltu/arvioitu.
- [ ] **TASO 5:** Omaa reflektio- ja itseohjautuvuusosaamista on pyritty kehittämään tarkastelun/arvioinnin perusteella.
## Omien työtehtävien hallinta
- [x] **TASO 1:** Omien työtehtävien hallintaa on kuvattu. (**Tässä blogissa**)
- [ ] **TASO 3:** Omien työtehtävien hallintaa on seurattu ja tarkasteltu/arvioitu.
- [ ] **TASO 5:** Omien työtehtävien hallintaa on pyritty kehittämään tarkastelun/arvioinnin perusteella.
## Oma viestintä
- [x] **TASO 1:** Omaa viestintää on kuvattu. (**Tässä blogissa**)
- [ ] **TASO 3:** Omaa viestintää on seurattu ja tarkasteltu/arvioitu.
- [ ] **TASO 5:** Omaa viestintää on pyritty kehittämään tarkastelun/arvioinnin perusteella.
---
# Ryhmätason arviointi
## Projektin vaiheistus, tavoitteisiin pääsemisen varmistus.
Tässä osiossa keskitytään arvioimaan ryhmän projektin etenemisen tarkastelua.
#### TASO 1
- [x] Ryhmän toiminta on suunnitelmallista (**JIRA**)
- [x] Ryhmä on dokumentoinut keskeiset prosessit ja inkrementtien tuloksen (**JIRA**)
- [x] Ryhmän käyttämät työkalut tukevat toimintaa (**Käytämme vain tarpeellisia työkaluja**)
- [x] Inkrementeille on asetettu laadulliset vaatimukset (**JIRA**)
- [x] Iteraatiojako määritelty (**JIRA**)
- [x] Yhteistyötapa on määritetty (**Ennalta määritelty**)
- [x] Työkalujen hyödyntäminen on määritelty (**Käytämme vain tarpeellisia työkaluja**)
- [x] Tehtävien hallinta on määritelty (**JIRA**)
#### TASO 3
- [x] Ryhmän toimintaa on mitattu ja analysoitu säännöllisesti (**JIRA**)
- [ ] Ryhmän toimintaprosessit on dokumentoitu
- [x] Ryhmän käyttämät työkalut tukevat toimintaa todistetusti (**Käytämme vain tarpeellisia työkaluja**)
- [x] Inkrementtien laatua seurataan säännöllisesti (**JIRA**)
- [ ] Ryhmä on osallistunut laatuauditointiin
- [x] Iteraatiojaon toimivuutta on mitattu ja arvioitu. (**JIRA**)
- [ ] Työkalujen hyödyntämistä on mitattu ja arvioitu.
- [ ] Tehtävien hallinnan laatua on mitattu ja arvioitu.
#### TASO 5
- [ ] Ryhmän toiminnan tehokkuutta on mitattu ja arvioitu suhteessa muihin projektiryhmiin (benchmarkkaus 1-X projektin kanssa)
- [ ] Ryhmän käyttämät työkalut tehostavat ryhmän toimintaa erityisen hyvin (yhtenevät työkalut, hajautettu kehitys huomioitu)
- [ ] Inkrementtien toteutumista seurataan lähes reaaliajassa (automatisoitu testaus, CI/CD)
- [ ] Ryhmän toimintaa on kehitetty ja puutteita korjattu järjestelmällisesti (nouseva trendi läpi projektin)
- [ ] Ryhmä on läpäissyt laatuauditoinnin (ulkopuolinen auditointi: opettajat tai toinen projektiryhmä)
- [ ] Iteraatiojakoa on pyritty parantamaan todettujen tulosten perusteella.
- [ ] Työkalujen hyödyntämistä on pyritty parantamaan todettujen tulosten perusteella.
- [ ] Tehtävien hallinta on pyritty tekemään tehty järjestelmällisesti ja hyvillä työkaluilla.
------
## Tehtävien jakaminen ja roolitus
Tässä osiossa keskitytään arvioimaan ryhmän keskinäisen työnjaon toteutumista iteraatioittain. Lisäksi arvioidaan ryhmän kykyä tunnistaa muutostarpeita ja reagoida niihin. Ryhmä toimii mittauksen ja arvioinnin suhteen itsenäisesti.
#### TASO 1
- [x] Roolit ja roolituksen toimivuus on määritelty. (**Suullisesti**)
- [x] Tehtäväjako on määritelty. (**Suullisesti**)
#### TASO 3
- [ ] Roolituksen toimivuutta on mitattu ja arvioitu.
- [ ] Tehtävien toteutumista on mitattu ja arvioitu.
#### TASO 5
- [ ] Tehtävien toteutumista on pyritty parantamaan todettujen tulosten perusteella.
- [ ] Roolitusta on pyritty parantamaan todettujen tulosten perusteella.
------
## Saadut tulokset / toimeksiannon toteuttamisesta varmistuminen
Tässä osiossa keskitytään arvioimaan ominaisuuksien toteutumista iteraatioittain.
#### TASO 1
- [x] Laatutavoitteet on määritelty tuotteelle. (**JIRA**)
- [x] Laatutavoitteet on määritelty työskentelylle
#### TASO 3
- [x] Tuotteen laatua on mitattu ja arvioitu. (**Palaverit asiakkaan kanssa**)
- [ ] Työskentelyn laatua on mitattu ja arvioitu
#### TASO 5
- [ ] Tuotteen laatua on pyritty parantamaan todettujen tulosten perusteella.
- [ ] Työskentelyn laatua pyritty parantamaan todettujen tulosten perusteella.
------
## Asiakasvaatimusten hallinta
Tässä osiossa keskitytään arvioimaan vaatimusten hallintaa projektissa kokonaisuutena alusta loppuun saakka.
- [x] **TASO 1:** Asiakkaan vaatimustenhallinta on määritelty.
- [x] **TASO 3:** Asiakkaan vaatimustenhallintaa on mitattu ja arvioitu. (**Suullisesti**)
- [x] **TASO 5:** Asiakkaan vaatimustenhallintaa on pyritty parantamaan todettujen tulosten perusteella. (**Asiakas lähettää pääasiassa sähköpostia, mistä kehitystiimi on yksimielisesti toista mieltä. Kuitenkaan muutosta ei ole tapahtunut kuluneen vuoden aikana.**)
------
## Kehitysmenetelmä
Tässä osiossa keskitytään työskentelyn arviointiin menetelmän näkökulmasta.
- [x] **TASO 1:** Kehitysmenetelmän käyttö on määritelty. (**Scrum** löyhästi)
- [x] **TASO 3:** Kehitysmenetelmän käyttöä on mitattu ja arvioitu (**JIRA**)
- [x] **TASO 5:** Kehitysmenetelmän käyttöä on pyritty parantamaan todettujen tulosten perusteella. **(Palavereita ja kommunikaatiota lisätty tarvittaessa**)
------
## Testaus
Tässä osiossa keskitytään arvioimaan projektin kehitystyöhön liittyviä testauksen menettelytapoja.
- [ ] **TASO 1:** Testaus on määritelty (esim. yksikkö-, integrointi- ja järjestelmätason testaus).
- [ ] **TASO 3:** Testauksen kattavuutta on mitattu ja arvioitu.
- [ ] **TASO 5:** Testausta on pyritty parantamaan todettujen tulosten perusteella.
------
## Projektin tekniset valinnat
Tässä keskitytään arvioimaan työkaluja ja ympäristöjä joita hyödynnetään projektin tekemisessä.
- [x] **TASO 1:** Keskeisimmät käytettävät projektinhallinta-, viestintä- ja kehitystyökalut on määritelty. (**Slack, Jira**)
- [x] **TASO 3:** Käytettävien työkalujen toimivuutta on mitattu ja arvioitu.
- [x] **TASO 5:** Käytettäviä työkaluja on pyritty parantamaan todettujen tulosten perusteella (**Aina kokeillaan uutta kun parempaa löytyy**)
------
## Hajautettu kehitystyö
Tässä osiossa keskitytään arvioimaan miten ryhmä on huomioinut ja varautunut hajautetun kehitysmallin erityispiirteisiin.
- [x] **TASO 1:** Hajautetun kehitystyön keskeiset työvaiheet ja -menetelmät on määritelty. (**Suullisesti**)
- [x] **TASO 3:** Hajautettua kehitystyötä on mitattu ja arvioitu (**JIRA**)
- [x] **TASO 5:** Hajautettua kehitystyötä on pyritty parantamaan todettujen tulosten perusteella (**Sisäisissä palavereissa puitu asiaa avoimesti**)
------
## Projektiryhmän tiedonkulku
Tässä osiossa keskitytään arvioimaan projektiryhmän työskentelyyn liittyvää tiedonkulkua. Tiedonkulkua arvioidaan ryhmän sisäisen viestinnän sekä toimeksiantajan ja ohjaavien opettajien kanssa tapahtuvan tiedonkulun kannalta.
- [x] **TASO 1:** Tiedonkulku ja viestintä on määritelty. (**Suullisesti/sanomattomat käytänteet**)
- [x] **TASO 3:** Tiedonkulkua ja viestintää on mitattu ja arvioitu (**Statiikkaa kerätty ja puiti viikottain ongelmia läpi**)
- [ ] **TASO 5:** Tiedonkulkua ja viestintää on pyritty parantamaan todettujen tulosten perusteella.
------
## Projektiryhmän ongelmienratkaisu
Tässä osiossa keskitytään arvioimaan projektiryhmän käytänteitä työskentelyyn liittyvien ongelmien huomioinnissa, vaikutusten arvioinnissa ja kehitystoimissa.
- [x] **TASO 1:** Projektityön ongelmien ratkaisu on määritelty. (**JIRA**)
- [x] **TASO 3:** Projektityön ongelmien ratkaisua on mitattu ja arvioitu. (**JIRA**)
- [x] **TASO 5:** Projektityön ongelmien ratkaisua on pyritty parantamaan todettujen tulosten perusteella. (**JIRA**)