# Projektiblogi - LTD6049-LTB20M1 ICT-toimeksiantoprojekti
**Mika Marjomaa**
**1804189**
### Omat kurssin tavoitteet
Oma tavoite kurssille lyhyesti on tehdä ne asiat, jotka minulle on annettu ryhmässämme. Tämä pitää sisällään myös mahdollisten uusien asioiden itseopiskelun ja muut vastaavat haasteet, jotka kurssin aikana voivat nousta. Lisäksi hoidan oman osuuteni kommunikaatiosta ryhmän sisällä, joka käytännössä tarkoittaa sitä, että pidän kiinni ryhmämme viestintä käytänteistä. Tulen aktiivisesti arvioimaan kurssin aikana omaa panostani projektiamme kohtaan, jolla varmistan sen, että projektimme pääsee eteenpäin omalta osaltani. Oma ajatus on tehdä asioita pikkuhiljaa, jolla vältän sen, että muutaman viikon puurtamisen jälkeen loput kurssista menee sormia pyörittelemällä (hyvin vähällä työmäärällä). Onnistuuko projektin eteenpäin vienti rauhallisesti jää ainoastaan nähtäväksi, sillä toimeksianto itsessään omasta mielestäni on mielenkiintoinen toteutustasolla.
## Sprintti #1 - March 29 - April 5
#### Sprintin kulku
Aloitin sprintin todella rennosti osallistumalla ainoastaan ryhmämme tapaamisiin, luennoille ja toimeksiantajan tapaamiseen. Ryhmämme ensimmäiset palaverit olivat hieman kankeita, sillä kukaan ei näyttänyt ottavan puheenjohtajan roolia, jonka myötä palaverit venyivät. Oma roolini ensimmäisen sprintin palavereissa oli lähinnä kuuntelemista ja kysyttäessä vastaan.
Sprintin loppupuolella aloin tutustumaan sovittuihin työkahaluihin, joilla toteutamme projektimme. Tämä piti sisällään hieman demoilua ThreeJS:stä ja todella nopean mieleenpalauttelun Reactista.
Sprintin lopussa alustimme käyttöliittymän Janin kanssa, joka piti sisällään React appin luomisen, MUI:n käyttöönoton ja ThreeJS:n upottamisen projektiimme. Suoritimme projektin alustuksen yhdessä, jonka myötä vaihdoimme ajatuksia/ tietoa Reactista, ThreeJS:stä, webkehityksestä ja muista toteutustavoista, jotka liittyvät projektiimme.
#### Committeja
- [Projektin alustus](https://dev.azure.com/tiko-toimeksiantoprojekti2021/R3/_git/R3/commit/5cc3c02893420a221fbc0cc15cf73e51412631bd?refName=refs%2Fheads%2Ffeature%2Fthreejs)
- [ThreeJS Reactiin](https://dev.azure.com/tiko-toimeksiantoprojekti2021/R3/_git/R3/commit/61cb407dc23a606c3ff56633a21a50a6081d485a?refName=refs%2Fheads%2Ffeature%2Fthreejs)
#### Pohdintaa/ Ajatuksia
Kurssin alun ottaminen rennosti oli mielestäni hyvä ratkaisu, sillä ainoa "työ", jota tein oli toimeksiannon sulattelemista, ryhmäytymistä ja toteutustapojen pohdintaa. Näin sain pidettyä mielenkiintoni projektia kohtaan suhteellisen korkealla. Vastakohta tälle olisi ollut alkaa protoilemaan projektin toteutusta aamusta iltaan sprintin alusta loppuun, jonka seurauksena loppuaika projektista olisi mennyt hyvin pitkälti tekemättä juurikaan mitään.
Positiivinen yllätys ryhmästämme oli se, että ryhmästämme löytyi useita jäseniä, joilta löytyi taitoa ja halua tehdä/ oppia asioita. Näin ollen saimme ensimmäisissä palavereissa sovittua työkaluista, joilla toteutamme projektin. Päädyin ryhmässämme käyttöliittymä puolelle omieni taitojeni takia. Nämä taidot/ tiedot olivat lähinnä Reactin käyttämisen taito. Ryhmästä myös löytyi muita, joilta Reactin käyttö onnistuu, joten valitsimme käyttöliittymän tekemiseen Reactin ja ThreeJS:n. ThreeJS itselleni oli uusi asia, joten ThreeJS:ää tuli sprintin lopussa opiskeltua. Työkalusta sain irti nopeasti sen, kuinka sitä käytettään ja osuudet, mitä projektimme tarvitsee. Tämä johtui todennäköisesti siitä, että 3D asioiden ymmärtäminen oli huomattavasti helpompaa pelipuolen kurssien ansiosta.
Kommunikaatio mielestäni onnistui sprintin aikana hyvin, sillä opin uusia asiota toisilta sekä pidin kiinni ryhmämme viestintäkäytänteistä. Projektia alustaessa Jani toi esiin js:n deconstructin, jonka käyttämisessä koodin laatu paranee huomattavasti esim. oletusarvojen käyttäminen.
Hyvin karkeasti ilman testaamista/ toimivuuden tarkistamista kirjoitettu esimerkki. Mutta idean pitäisi näkyä.
```javascript=
function Foo(props) {
// deconstruct
const { age: 30, name: "maici" } = props;
// if sekaannus
// esimerkin kirjoittaminen kesken,
// ajatus kumminkin tehdä asiat yhdellä rivillä vs. if elsejen
// käyttö ja muu turha säätäminen
let age;
if (!props.age) {
age = 30;
} else {
age = props.age;
}
console.log(age); // 25
console.log(name); // maici
}
Foo({
age: 25,
})
```
Tässä taas yksi hyvä esimerkki toisten kuuntelemisesta ja tiedon keräämisestä muilta.
Viestinnässä olen vastannut ryhmämme kysymyksiin Discordissa nopealla tahdilla. Ajatus tällä kurssilla itselläni oli jättää turha säätäminen omalta osaltani ryhmän viestinnässä kokonaan pois, jonka myötä jäljelle jää ainoastaan palavereihin ja muihin tapaamisiin osallistuminen. Palavereissa tuon omat näkemykseni esille ja kuuntelen muita sekä vastaan kysymyksiin ainoastaan, jos koen, että vastaukseni vie projektiamme eteenpäin.
Oman tekemiseni osalta pyrin varmistamaan sen, että käyttöliittymä tulee edistymään sprinttien aikana yhdessä käyttöliittymäryhmäni kanssa. Tämän hetkinen ajatukseni olisi tehdä vähintään projektissamme vähimmäisvaatimukset kunnolla, jonka jälkeen, jos aikaa jää niin siirtyä tekemään muita toiminnallisuuksia. Päätavoite on pyrkiä tekemään selkeää koodia, jota pystyisi lukemaan muut ryhmämme jäsenet. Tämän myötä asioiden edistyminen saattaa hidastua, mutta vastineeksi projektimme mahdollinen jatkokehittäminen muiden osalta onnistuisi huomattavasti helmpommin, jos koodi on luettavaa.
Jatkan oman tekemiseni analysointia ja pyrin näkemään ne asiat, jotka onnistuvat omalta kohdaltani ja vähintään jatkamaan niiden tekemistä. Mikäli mahdollista pyrin myös parantamaan kyseisiä tekemiäni asioita maksimoidakseni arvoni projektissamme. Lisäksi arvioin myös asioita, jotka eivät onnistu tai eivät toimi, jolloin näihin asioihin pyrin löytämään niiden syyn sekä parantamaan omaa toimintaani.
## Sprintti #2 - April 6 - April 19
#### sprintin kulku
Kehitystyö lähti hyvin liikkeelle, sillä suunnittelimme sprintin katsomalla tehtäviä jokaiselle kehitystiimistä. Tämän jälkeen front ja backend tiimit lähtivät viemään projektiamme eteenpäin molemmat omalla palaverilla. Frontend puolen palaverissa Janin kanssa kävimme läpi hieman toteutustapoja, lähinnä threejsää, reactia ja muuta webkehitykseen liittyvää. Palaverissa sovimme, että minä keskityn enemmän 3d maailman luontiin ja Jani toteuttaisi perinteiset webelementit (painikkeet, teksialueet ja jne). Tämän jälkeen aloitimme molemmat sprintin omien tehtävien parissa ja kommunikoimme Discoridin välityksellä sprintin alusta loppuun.
#### Oman tekemisen demo linkkejä (jaettu tiimin kesken sekä toimeksiantajalle)
- [threejs aloitus](https://www.youtube.com/watch?v=FpNf8panPEQ)
- [logot](https://www.youtube.com/watch?v=bYeealqTfB0)
- [vuodenajat](https://www.youtube.com/watch?v=4qwuXYi7KAM)
---
#### Azure devops linkkejä
- [task 763](https://dev.azure.com/tiko-toimeksiantoprojekti2021/R3/_workitems/edit/763)
- [task 764](https://dev.azure.com/tiko-toimeksiantoprojekti2021/R3/_workitems/edit/764)
- [task 815](https://dev.azure.com/tiko-toimeksiantoprojekti2021/R3/_workitems/edit/815)
- [pull request](https://dev.azure.com/tiko-toimeksiantoprojekti2021/R3/_git/R3/pullrequest/32)
- [seasons branch](https://dev.azure.com/tiko-toimeksiantoprojekti2021/R3/_git/R3?version=GBfeature%2Fseasons)
Omia työtehtäviäni sprintin aikana olivat ThreeJS:än käyttöön otto ja 3d maailman alustaminen pyörivän kuution kanssa. Skyboxin rakentaminen 3d maailmaan sekä klikattavien logojen asettaminen kameran ympärille. Sprintin lopussa työn puutteen takia tein hieman kokeiluja vuoden aikojen vaihtelumekaniikan parissa.
Osallistuin jokaiseen palaveriin/ tapaamiseen, joita ryhmämme oli sopinut keskenämme ja toimeksiantajan kanssa.
#### Pohdintaa & ajatuksia
Tässä sprintissä aloin olemaan aktiivisempi omalta osaltani palavereissamme ja toin samalla omia ajatuksiani useammin esille muille. Vastailin/ kommentoin myös useammin yleisesti esitettyihin kysymyksiin j ajatuksiin. Tämän myötä omalta kohdaltani aloin tuntemaan, että olemme tekemässä yhdessä projektia eteenpäin. Lisäksi, kun tähän yhdistää tiedon ja taidon määrän, jota ryhmästämme löytyy, olemme ryhmänä lähestulkoon "oikea" kehitystiimi. Tulevien sprinttien aikana oma tarkoitukseni olisi vielä osallistua enemmän palavereissa käytäviin keskusteluihin ja jakaa omat ideani ja kuunnella toisten ajatukset/ ideat.
Tehdessäni tämän sprintin tehtäviäni huomasin jokaisessa vaiheessa sen, kuinka paljon aiempien kurssien sisältö auttoi minua ymmärtämään ja tekemään asioita. Esimerkiksi logojen asetteleminen ympyrän kehälle tasaisesti olisi ollut lähestulkoon mahdoton tehtävä itselleni noin puoli vuotta sitten.
Projektimme on edennyt mielestäni hyvällä vauhdilla eteenpäin. Tämä perustuu kuunnellessani backend tiimin tekemisiä dailyissä sekä frontend tiimin tekemisien/ oman tekemiseni jatkuvan tarkkailun perusteella ja tiedon/ tehtyjen asioiden jakamiseen. Projektimme tilanne tällä hetkellä näyttäisi olevan hyvin lähellä täyttämään minivaatimuksia, jonka myötä jatkokehitykseen tuntuisi jäävän hyvin aikaa.
### Pelikehityksen (ja muiden) kursseilta tullut tieto/ taito & *ongelmat kehitykessä*
- skyboxin tekemisessä idea oli selvä, jonka myötä tiedon haku ja skyboxin toteuttaminen onnistui todella helposti
- toteutin skybox cubemapista, jonka jälkeen ilmeni ongelma: toimeksianjahan kuvat ovat panorama kuvia.
- Tähän nopean googlauksen avulla löytyi konverttori, jolla muunsin kuvat sopiviksi
- !!! Tämän olisi ja todennäköisesti tulen vielä muuttamaan siten, että skybox käyttää panorama kuvia.
- [panorama to cubemap](https://jaxry.github.io/panorama-to-cubemap/)
- suuri "ongelma" ilmeni, kun kuvien laataaminen React+ThreeJS appissa tuotti ongelma, sillä kuvat onnistui "importaamalla", mutta syystä tai toisesta ThreeJS ei pystynyt käyttämään niitä.
- tämän kanssa painittuani jonkin aikaa aloin käyttämään base64 konverttoiria, joka muuttaa kuvat stringiksi, jonka avulla sain lokaalit kuvat ThreeJS:än käyttöön.
- Nukuttuani yön yli ja selvitettyäni pääni ongelman olisi voinut ratkaista helposti siirtämällä kuvat public kansioon Reactissa, jonka jälkeen
- [base64](https://www.base64-image.de/)
- logojen asettaminen ympyrän kehälle tasavälisesti
- Suuri apu tähän ongelmaan tuli matematiikkaa ohjelmoijille kurseille, jonka myötä ajatus ratkaisusta oli nopeasti päässä.
- Ongelma oikeastaan ratkaisi itse itsensä, sillä oikeiden hakusanojen avulla sain nopeasti haltuuni algoritmin, joka antoi oikeat koordinantit logoille
```javascript
for (let i = 0; i < nPoints; i++) {
let currentAngle = i * radius / nPoints;
let x = (centerX + r * Math.cos(currentAngle));
let y = (centerY + r * Math.sin(currentAngle));
pointArray.push([x.toFixed(2), y.toFixed(2)]);
}
```
- 3d maailma
- pelikehityksen ja matematiikan kursseilta vektorit ja 3d avaruus auttoivat huomattavasti ymmärtämään, mitä olin tekemässä (kamerat, sijannit ja jne).
- vaihtuvan vuoden ajan toteuttaminen
- luettuani ThreeJS:än dokumentaatio läpi ei ratkaisua tähän oikeastaan tuntunut löytyvän suoraan, joten aloin itse kokeilemaan. Lopputuloksena sain tehtyä halutun efektin sovellukseemme käyttämällä kahta canvaasia, joista päälimmäinen häivytettään hitaasti pois näkymästä. Vuoden aikojen kierron toteuttaminen vaatii hieman koodin puukottamista, mutta jos aikaa jää ylimääräiseksi projektissamme, niin en näe estettä sille, ettenkö pystyisi toteuttamaan sitä.
- Tämä on vielä hyvin alkuvaiheessa ja tarvitsee vielä hieno säätöä tulevaisuudessa, jotta toiminnallisuus toimisi ongelmitta.
-
- Asioiden toteuttaminen
- tällä hetkellä näyttäisi siltä, että oma tekeminen on taas hieman sotkuista, jonka seurauksena koodi on hieman sekavanoloinen.
- Tämä on oikeastaan ainut ongelma, joka on tällä hetkellä riivamassa itseäni.
# Sprintti #3 - April 19 - May 3
#### 26.04.2021
Tässä nyt taas havahtuneena siihen tosiasiaan, että projektiblogin kirjoittaminen ei onnistu sprintin lopussa, sillä asioita ei muista enää/ menevät sekaisin toisten sprinttien kanssa. Näin ollen tarkoituksena olisi alkaa taas kerran kirjoittamaan päivä kerrallaan ja katsoa mihin päästään tällä kertaa.
Nopea katsaus siihen, mitä muistan sprintin alusta:
- pidimme sprintin suunnittelu palaverin
- pidimme sprintin retron
*Ja näin alkaa päivä blogin kirjottaminen...* Päivä alkoi daily scrumilla, jossa kävimme taas asiat, joita jokainen on tehnyt ja tulee tekemään jatkossa. Tämän jälkeen pidimme palaverin käyttöliittymä puolen kanssa ja katsoimme jokaiselle tekemistä sprintin loppuajaksi.
- Itse työskentelen chatbotin parissa
- Jani tekee yritysten popup ikkunaa (nimi, kuvaus, linkit jne)
- Teemu hoitaa lokalisaatiota
Palavereiden jälkeen katsoin hieman tekemisiäni ja tulin siihen lopputulokseen, että asialle pitää tehdä jotain jossain vaiheessa. Eli koodin siivoamista 3d maailman osalta täytyy jonkin verran tehdä, jotta se on edes jotenkin luettava.
[seasons branch](https://dev.azure.com/tiko-toimeksiantoprojekti2021/R3/_git/R3/pushes/955)
Katsellessani koodia kiinnitin huomioni vuodenaikojen vaihtelun toteutukseen. Käytännössä tein hieman kokeiluja/ tutkimusta siitä, kuinka skyboxin kuvaa voitaisiin vaihdella sulavasti automaattisesti. Tämän ratkaisin pienen kokeilun ja pohdinnan jälkeen päässäni. Sinänsä koodissa toteutus ei suoranaisesti näy/ toimi, mutta ajatus toteutuksesta on päässäni ja tulen sen tekemään, kun muita töitä itselläni ei ole/ olen tehnyt minulle määrätyt työtehtävät.
##### skyboxin vuoden aikojen toteutusidea nopeasti (saattaa muuttua)
Eli tarkoituksena on saada skyboxin kuvat vaihtumaan automaattisesti hitaasti häivyttäen
- Sivulla on kaksi canvaasia, joista alemmassa on kuva 1 ja päälimmäisessä kuva 2
- Seuraavaksi aloitetaan häivyttäminen hitaasti päälimmäisen kanvaasin osalta, jolloin kuva 2 häviää hitaasti pois ja sen alka ilmenee kuva 1
- Kun kuva 2 on kokonaan hälventynyt vaihdetaan ylempään canvaasiin kuva 3
- Tämän jälkeen aletaan tuomaan esille hitaasti päälimmäistä canvaasia, jolloin kuva 2 vaihtuu kuva 3:ksi.
Tästä oli vielä toinen idea mielessä, mutta sen esittäminen vaatisi paperille piirtämistä, sillä se on mielessä selkeämpi, mutta sen esille tuonti on vaikeampi. Tämä tosiaan tulee toteutettua, mikäli aikaa jää.
##### Chatbotin teko
Ymmärrykseni siitä, mitä asiakas haluaa on FAQ tyylinen chatti, jossa käyttäjä voi selata FAQ kysymyksiä chatti muodossa. (Asiakas esitteli neste.fi chattiä)
Tämän asian toteuttaminen tuntuisi olevan hyvin suoraviivainen homma, sillä alustava toteutusidea on hyvin mielessä, jolloin toteutus odottaa vain tekoa. (tämä on asia, jota tulen seuraavaksi tekemään)
---
Frontend palaveri mielestäni meni hyvin, sillä saimme jaettua tehtäviä jokaiselle taidon/ tiedon mukaan, jolloin jokaiselle löytyi hommaa. Lisäksi töiden määrä/ vaatimus jakautui kaikille kolmelle tasaisesti, jolloin yksi ei tee kaikkea.
# Sprintti #4 - ######
#### 08.05.2021
Hieman taas jäänyt projektiblogin kirjoittaminen jalkoihin.
#### 09.05.2021
Hieman alustusta tämän sprintin alkuvaiheista.
Tässä sprintissä itselleni on tullut vastaan useita "haasteita"/ asioita, joiden oivaltaminen on niin sanotusti avannut silmäni ohjelmistokehittämistä kohtaan. Osa näistä asioista oli jo entuudestaan tuttuja/ käytössä, mutta käytännön epäonnistumisien/ tekemisen avulla niiden merkitys osana ohjelmistokehitys ja tiimi työskentelyä on auttanut ymmärtämään niitä paremmin. Näiden asioiden käyttämättä jättäminen tekisi ohjelmistokehittämisestä vain turhaan haastavampaa, kuin sen pitäisi olla.
Isoin asia tälläkin viikolla tehdessäni asioita oli, kun kävimme keskustelua Janin kanssa toteutustavoista/ JS:stä, kuinka paljon tietoa/ taitoa saa jo sillä, kun vain kuuntelee toista.
[uusi opittu asia](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining)
Toin esille keskustelussamme, kuinka hyödyllinen objektin destruktointi on ja miten sen käyttäminen vaatii vähemmän koodirivejä kuin elseif sekä kuinka se tekee koodista selkeämpää omasta mielestäni. Tähän kommenttina/ protippinä sain yllä olevan linkin asiaan liittyvän esimerkin Janilta. Asiaa hieman tutkittuani tämäkin asia oli sellainen, jota olen tehnyt aikaisemmin "vaikeamman" kaavan mukaan.
Seuraava asia omassa toiminnassani on branchien käyttö ja oikeastaan oma tekeminen kokonaisuudessa. Oma tekeminen tässä projektissa on tuntunut ainakin omasta mielestäni hyvin protomaiselta työskentelyltä, eli en ole niinkään kiinnittänyt huomiota, mitä teen kunhan saan asian toimimaan. Pidän itse tästä toimintatavasta, sillä asioita saa paljon aikaiseksi suhteessa "pieneen" panokseen. Mikäli mielenkiintoani riittäisi tai/ ja kyseessä olisi "oikea" projekti, niin kaiken, jonka olen tähän mennessä tehnyt tulisi tehdä uudestaan ajatuksen kanssa.
Takaisin brancheihin. Kehitystä on tullut tehtyä miten sattuu ja selkeys puuttuu läheskokonaan omasta toiminnasta, sillä olen sohinut koodia, miten sattuu eri brancheissa, jolloin lopputulos on käytännössä sen kaltainen, että olisin käyttänyt yhtä branchia koko kehityksen ajan. Tähän nopea fixi olisi tieto siitä, mitä teen. Eli jos projektin alussa ThreeJS olisi ollut itselläni hallussa, niin silloin kokeiluversioita ei olisi tarvinnut tehdä, jolloin olisin voinut periaatteessa suunnitella asiat kunnolla ja toteuttaa ne kunnolla ensimmäisellä kerralla.
Tuotteenomistajan rooli kehityksessä. Teemu on toiminut mielestäni todella hyvin roolissaan. Tästä taitaa olla itselläni kolme kokomusta aikaisemmilta projekteilta, joista taisin olla itse kaksi kertaa tuotteenomistajana. Asia, joka erottuu selkeästi Teemun toiminnasta ja minun aikaisemmasta sähläämisestä on se, että Teemulla tuntuu olevan selkeä kuva siitä, mitä olemme tekemässä. Eli hän on jakanut asiakkaan toiminnallisuudet selkeästi, jonka myötä sprinttien suunnittelussa ainakin itse koen, että rakennamme jotain pala kerrallaan. Nopeasti tähän tuon omat tuotteenomistaja kokemukset, joissa idea tuotteesta oli itselläni mielessä jotenkin, mutta nyt taaksepäin katsellessani tuntuu siltä, että en koskaan tuonut sitä hyvin esille muille sannallisesti/ paperille.
Seuraava asia on yhteiset kehitysmenetelmät. Eli mitä tarkoitan tällä on se, että jokainen käyttäisi samoja käytänteitä koko projektissa, jolloin projektin koko koodi näyttäisi samalta ja toisen tekemä koodi olisi lähestulkoon mahdotonta erottaa toisen koodista.
Joitain esimerkkejä, jotka muista nyt/ ovat tulleet vastaan projektissamme. Eli täydellisessä maailmassa näistä sovittaisiin ennen projektin alkua ja jokainen noudattaisi niitä kuuliaasti.
- 'msg' vs "msg"
- branchien nimeämiset (tästä taisi olla puhetta vain Janin kanssa. Jani toi esille, kuinka hän oli tehnyt asioita työharjoittelussa)

- ajan mittaaminen järkevämmin (Tähän mennessä projektiin käyttämääni aikaa olen ylläpitänyt hyvin karkeasti "koodin tutkailua" tagilla. Eli käytännössä vain kulunut aika on ylhäällä. Tätä pyrin parantamaan loppu kurssia kohtaan käyttämällä task ideetä Azuresta)

- Selkeämpää koodia omalta osaltani ja sen puskeminen masteriin vain, kun se on tehty huolella.
- asioiden tekeminen pala palalta (oma asia). Eli taskien paloittaminen vielä pienempiin kokonaisuuksiin olisi mahdollisesti ollut parempi käytäntö.
**Daily scrumit, planningit ja retrot** ovat menneet mielestäni ihan ok. Eli tästä nyt ei niinkään mitään ole sanottavaa muuta kuin se, että pidämme ne samaan aikaan joka viikko. Valerialla tuntuisi olevan scrum master asiat hallussa. Tosin tähän on vaikeata ottaa kantaa, sillä omasta mielestäni scrum master on ollut hyvin paljon piilossa. Johtuuko tämä siitä, että en kiinnitä asiaan huomioita vai/ tai asiat tapahtuvat "piilossa", jolloin niitä en tule koskaan huomamaan.
Ehkä suurin asia tässä on palavereissa esitetty kysymys "onko ollut ongelmia". Tätä olen miettinyt nyt hieman tarkemmin viime ajat ja varsinaisia ongelmia en pystyisi varmaan edes keksimään päästäni, joita mahdollisesti voisi ilmetä omassa tekemisessäni.
**--- jatka joskus ---**
**demoa chatista LIVE & FAQ**
https://www.youtube.com/watch?v=Cavhpgm-8Y0
### 2.6.2021
viikonloppuna tarkoitus naputella loppuun blogi. Työajan seurannan lisäys. mietteitä projektista/ kurssista ja muuta.
### 7.6.2021
pieni muutos aikatauluun -> blogi valmistuu tänään -> huomenna 00:00 viimeiset lisäykset kirjoitettu.
eilisen yllättävän tennis treenien takia naputtelen blogin töiden jälkeen toivottavasti valmiiksi.

Kurssilla käyttämäni aika tuli taltioitua suurimmalta osin, joten "pimeää" työtä en usko, että kauhean paljoa kertyi.
Projektin alussa asioita tuli kellotettua hyvin abstraktilla tasolla esim. itseopiskelua/ repon tutkailua jne. Tässä ideana oli oikeastaan se, että näissä sessioissa tuli tehtyä laidasta laitaan asioita, jolloin yhtä selkeää otsikkoa näille ei olisi voinut antaa. Toisaalta tässä olisi voinut katsoa yhtä asiaa ja sen jälkeen vaihtaa kellosta nimikkeen ja katsoa toista asiaa.
Projektin puolessa välissä aloin tarkemmin kellottamaan omaa tekemistäni käyttämällä azuresta löytyviä task ideitä clockifyissa.


Ryhmän toiminta onnistui omasta mielestäni suhteellisen hyvin, tosin olisimme voineet käydä läpi yhdessä tavat, kuinka toimimme, jotta tekeminen näyttäisi yhtenäiseltä. Tästä johtuen osa tiimistä puski suoraan asioita masteriin, jonka tuloksena loppu kurssin aikana master branch meni rikki.
Asioita, joita olisimme voineet käydä läpi olisivat olleet: repon käyttö, pull requestien käyttö, branchien nimeämiskäytäntö jne.
Toinen asia työskentelyssämme oli frontin ja backendin kommunikoinnin vähyys. Tästä koitui ongelmia lähinnä tiedon hakemisen yhteydessä ja sen käytössä sovelluksessa. Eli vähäisen kommunikaation seurauksena frontendissä tuli käytettyä placeholdereina, mitä sattuu. Tästä seurasi se ongelma, että palvelimen valmistuttua loppukurssista asioita piti alkaa tekemään uudestaan ja tietoa prosessoimaan, että se olisi käytettävissä. Ratkaisu tähän tuli vasta, kun oli liian myöhä, joka olisi ratkennut käyttämällä json serveriä fakedatan siirtelyssä. Tähän olisi saanut tietorakenteet backend puolelta ja sen käyttö olisi ollut suhteellisen helppoa frontendiä kehittäessä. Näin ollen lopussa frontin ja backendin yhdistäminen olisi käynyt todella näppärästi kohdistamalla käyttöliittymä osoittamaan haut palvelimelle.
Kolmas epäonnistuminen omalta osaltani oli oikeastaan suunnittelemisen vähyys ja sen kyllä huomaa toteutuksesta kauas. Suurinta osaa asioita, joita työstin alussa ei tullut kauheasti miettittyä. Näin ollen toteutus on sekava ja sen ylläpitäminen/ jatkokehittäminen on lähestulkoon mahdoton tehtävä. Tämäkin oli yksi asia johon panostin noin keskellä kurssia ja aloin hieman pohtimaan asioita ennen koodin naputtelua. Ks. skyboxin toteutus (huono) & chatbotin toteutus on jonkin verran siistimpi, mutta toisaalta sekin loppujen lopuksi on siinä ja siinä pystyykö koodia katsomaan ilman tuskanhikeä.
Ajallisesti omasta mielestäni aikaa tuli käytettyä kurssilla kehitykseen ainakin kurssin alussa huomattava määrä, mutta tämä oikeastaan pieneni kurssin loppua kohden ja lopulta työharjoittelun alettua jäi oma tekemiseni aika vajaaksi. Viimeisessä sprintissä oli tarkoitukseni tehdä kehitystyötä, mutta tähän tuli stoppi, koska viimeisin versio projektistamme oli rikottu suoraan masteriin puskemisen takia. Näin ollen kiinnostukseni projektiin hävisi kokonaan ja toisten rikkomisten korjaaminen oli asialistalla todella alhaalla.
Mielenkiintoisin tapahtuma/t kurssilla olivat hollantilaiselle projektin esitykset. Tähän olin positiivisesti yllättyn, että sain pidettyä ne lukematta suoraan asioita paperista aka. semi-imporivisoinnilla. Toki jossain vaiheessa etenkin ensimmäisessä esityksessä lauseet katkeilivat ja olivat sekavia, mutta toinen esitys oli mielestäni suhteellisen rento ja jännityskin oli lähestulkoon olematon. Tosin en väitä, etteikö esitykset olisi voinut tehdä paremmin.
Lisäyksenä tähän kansainvälistymishommeliin: Olisi ollut mielenkiintoinen kokemus, jos kurssi olisi ollut pari tai pienryhmässä tehtävä pienehkö projekti, jossa ryhmä olisi koostunut hollantilaisista ja suomalaisopiskelijoista, jolloin kokemusta olisi oikeasti tullut kainsainvälistymisestä. Toisaalta, jos ryhmä on suhteellisen pieni (2- 4) opiskelijaa, niin tässä olisi voinut koitua se, ettei kovinkaan moni olisi voinut osallistua kehityskeen taitojen puutteessa. Toisaalta pidin kovasti hollantilaisparini projektista ja sen teko olisi ollut todennäköisemmin "mielenkiintoisempaa", kuin tämän kurssin projekti. Lisätäkseni tähän vielä, että ymmärtääkseni hän työskentelee yksin kyseisen projektin parissa, joten jos olisin ollut hänen kanssaan "kehittäjäpari", niin työvoima olisi tuplaantunut. Toisaalta toteutusta tälläisessä järjestelyssä olisi varmaan pitänyt pohtia huomattavasti enemmän.
Yksi asia, joka ainakin oli mielestäni onnistuminen omalta osaltani kurssilla oli uusien asioiden oppiminen. Näitä tuli oikeastaan opittua itsenäisessä työskentelyssä, mutta eritoten toisten asioiden katsomisessa ja kuuntelemalla. Haluaisin tässäkin mainita suunnittelun tärkeyden ennen asioiden tekemistä, mutta tässä vaiheessa tuntuu siltä, että lähestyn ongelmia enemmän protomielessä, jossa alan katsomaan kepillä jäätä kestääkö jää. Ideana todennäköisesti aina on se, että katson pystynkö/ osaanko tehdä tarvittavia asioita ja samalla kehittäen ymmärrystäni/ tietämystäni tekemistä asioista. Tämä oikeastaan näkyy todella hyvin skybokin toteutuksessa, joka sinänsä ei ole huono, mutta sen olisi voinut tehdä paremminkin ja joka todennäköisesti oli jossain vaiheessa tarkoitus tehdäkkin, mutta taisin "tyytyä" "tarpeeksi hyvään toteutukseen", joka tässä tapauksessa oli aihan alitus. Chatbotin ja livechatin teossa sentään tein hieman suunnitelmia, ennen toteutuksen aloittamista.
Oma roolini kurssilla oli kehitystiimin jäsen ja tässä tehtävässä on varmaan aika vaikea epäonnistua totaalisesti, toisaalta lieneekö oma suoritus, kuinka kaukana kyseisestä rajasta, niin sitä en tiedä. Palavereissa toin esille aina omat asiani ja kommentoin silloin tällöin kysymyksiä, joita nousi palavereissa. Kommunikaatiota harrastin enemmän frontend kehitystiimin jäsenten kanssa, joka sinänsä oli ihan hyvä suoritus, mutta tässä olisi ollut järkevämpi myös kommunikoida koko kehitystiimin kanssa tiivimmin.
Kaiken kaikkiaan ihan ok kurssi omalta osaltani kai.
---
---
---
---
---
---
---
---
---
---
---
---
---
---
---
---
---
---
---
---
end