När kandidatprojektet började visste jag inte riktigt vad jag skulle förvänta mig och satte därför två väldigt breda personliga mål. De var att jag skulle bli bättre på webbprogrammering samt att jag skulle bli bättre på att starta projekt i tid, då många tidigare har blivit väldigt baktunga. Det ena målet, webbprogrammeringen, har jag uppnått och fått en bra överblick över hur det fungerar med kopplingar mellan front-‐end, server och databas samt några olika tekniker för hur detta kan utföras. Det andra målet, det tidsmässiga arbetet med projekt, har jag blivit bättre med. Dock skulle det kunna förbättras mer innan jag är nöjd då jag fortfarande tycker att det är segt att komma igång med projekt.
Under projektet har jag nästan endast arbetat med, för mig, nya programmeringsspråk och tekniker. Innan kunde jag i princip bara Java och hade grundläggande kunskaper inom HTML och CSS. Men under projektet har jag lärt mig hantera språket Python och en av dess moduler, flask, jQuery och SQLite3 samt tekniker som single page och AJAX.
Python var oväntat enkelt att komma in i om man utgick ifrån Java. Många av de saker som ofta orsakar fel i Java, t. ex att ”fåglarna” som omger innehållet i en loop eller funktion hamnar snett undviks elegant genom att utnyttja indenteringen. Detta är något som känns obekvämt till en början men som sedan blir väldigt smidigt att använda. En annan stor skillnad är att man inte deklarerar vilken typ av data som ska sparas i en variabel vilket har både för och nackdelar då det är svårare att hålla koll på vad som är sparat i varje variabel, men samtidigt lättare att skriva koden.
Att databasen skrevs i SQLite3 och inte i ett mer kraftfullt språk var inte meningen från början. Planen vara att skriva den i MySQL eller kanske SQLAlchemy men vi prioriterade att få igång databasen snabbt vilket ledde till att det blev SQLite3. I efterhand kan man konstatera att det fungerade förvånansvärt bra och inte orsakade några egentliga problem då många av de saker som SQLite saknar, jämfört med MySQL och SQLAlchemy, går att utföra i Pythonservern istället.
Några saker som inte fungerade så smidigt med utvecklingen som jag hade velat var främst jQuery och single page. Under sprint ett hade gruppen missförstått vad som menades med single page vilket gjorde att hela applikationen mer eller mindre behövde göras om för att den skulle bli single page. Detta för att till exempel all kommunikation mellan servern och klienten behöver ske via jQuery och AJAX istället för att hanteras via vanliga formulär. jQuery och AJAX tog därefter mycket tid att sätta sig in i och få att fungera tillfredställande.
Det tog nästan hela sprint 2 att skriva om Pralinbutiken så att den fungerade som en single page applikation. Men i gengäld så hann teamet med att utveckla många fler funktioner än planerat i sprint 1 så slutresultatet blev tillfredställande ändå, trots missen. Hade dock missförståndet inte skett kanske Pralinbutiken hade blivit ännu bättre och de sista önskvärda funktionerna kunde ha hunnit utvecklats.
Ett annat problem för mig var att jag har varit väldigt dålig kompis med GitLab då jag under hela projektets gång haft stora problem med att lägga upp min kod. Som tur är
har jag dock inte haft några problem med att hämta ner kod övriga teamet har lagt upp. Därmed har inte gruppens arbete påverkats så mycket då de funktioner jag har arbetat med har varit relativt fristående. Detta problem var dock ett stressmoment för mig och orsakade problem med vårt testkompissystem då min testkompis inte kunde testa min kod på ett enkelt sätt. Något som resulterat i att en av de få buggar vi är medvetna om finns i en funktion jag har kodat.
Processmässigt har det varit intressant att arbeta agilt enligt scrum. Något som jag verkligen uppskattar med metoden är de korta daily-‐scrummöten som hålls regelbundet och gör att hela gruppen hålls informerad om hur arbetet fortskrider samt när det uppstår några problem. En intressant sak med dessa möten är att de bör hållas stående, vilket gör att mötena blir korta och effektiva samt bidrar till en mer öppen miljö (34). Även om detta inte alltid följdes så var det en märkbar skillnad på hur kortfattade och effektiva mötena var mellan de som hölls stående och de som inte gjorde det.
Daily-‐scrummötena hjälpte också till att bibehålla motivationen hos medlemmarna då det inte är speciellt roligt att säga ”Jag har inte gjort någonting” när de andra berättar vad de har gjort sen sist. Dock komplicerades processen av att alla gruppmedlemmar inte befann sig fysiskt i Linköping då två personer var på utbytesår i Singapore. Detta försvårade möten och diskussioner då mikrofonen på datorn som användes till att hålla skypekonversationen inte var av bästa kvalité. Under de korta daily-‐scrummötena orsakade det inte några märkbara problem då det inte fördes någon ordentlig diskussion utan medlemmarna pratade en i taget. Däremot påverkades andra längre möten av ljudproblemen då just diskussioner blev haltande eller att resonemang behövde upprepas. För att lindra problemen så hölls vissa möten som skypekonferanser där alla medlemmar deltog via skype. Dessa möten skapade en god förståelse bland resten av teamet för omständigheterna och gjorde att detta fanns i åtanke vid kommande möten.
De problem teamet har stött på under projektet har givit upphov till en ökad förståelse för hur viktigt det är med kommunikation och förarbete. Dessa är saker som inte märks lika tydligt i små projekt men som blir extremt tydliga i större. Fungerar till exempel inte kommunikationen inom gruppen så påverkar det inte bara kvalitén på resultatet utan det äventyrar att det ens kan bli ett resultat.