19.1 Tekniska erfarenheter
Mitt huvudansvar inom utvecklingsprojektet har varit orderhistorik, rangordning av praliner samt design av databasen. Detta har inneburit att jag har fått arbeta med webbapplikationen på flera olika nivåer i systemet. På så sätt har jag fått god inblick i hela projektet och hur olika delar som databas, klient och server hänger ihop och kommunicerar med varandra. Jag har också lärt mig många olika programmeringsspråk på detta vis till exempel HTML, SQL, AJAX, JavaScript, Python och Bootstrap. En annan sak jag la märke till var vikten att förstå övriga teammedlemmars funktioner och lösningar. Vid flera tillfällen påverkades de funktioner som jag arbetade med av hur andra funktioner implementerats och tvärtom vilket kunde leda till extra arbete. Till exempel var funktionaliteten för att beställa en gammal order igen starkt kopplad till kundkorgen. För att undvika extra arbete på grund av detta skulle jag i framtiden tidigare fundera över vilka andra delar av webbapplikationen som kan påverka mitt arbete och aktivt sätta mig in i hur dessa fungerar.
Utvecklingen av sidan som en single page application har också varit lärorikt. Från början missuppfattade teamet vad detta innebar och sådan funktionalitet utvecklades inte. När detta uppdagades fick en stor del av arbetet planeras om och mycket tid behövde läggas på detta. Skulle vi prioriterat detta tidigare hade single page säkerligen implementerats på ett effektivare sätt. Mycket kunskap kring hur applikationen kunde blivit snabbare och smidigare gick därför förlorad. För att undvika liknande missförstånd kommer jag i framtiden lägga mer tid på att förstå samtliga krav och planera arbetet därefter. En positiv konsekvens av detta var dock att mycket tid kunde läggas på applikationens funktionalitet. Vid projektet slut är e-‐ butiken utrustad med många välfungerande funktioner något som är tillfredsställande.
Under utvecklingen har versionshanteringssystemet Git använts för att distribuera kod mellan teammedlemmarna. De tillfällen Git har fungerat har dess fördelar blivit uppenbara. Systemet framstår då som smidigt och framförallt som en försäkring då äldre versioner av applikationen alltid kan återskapas. Tyvärr har Git strulat för mig vid ett flertal tillfällen. Det har varit problem med såväl nedladdning som uppladdning av kod. Vid flera tillfällen har vi fått arbeta runt detta problem genom att skicka filer genom andra kanaler och låta någon annan i teamet ladda upp dem. Det jag kan ta med mig från dessa erfarenheter är vetskapen om att system som Git kan ha stora fördelar vid utveckling. En djupare förståelse för användandet av systemet hade dock varit önskvärt. Ofta har Git nyttjas på till synes samma vis på olika enheter men trots detta bara fungerat på vissa. Vad detta beror på kunde
teamet inte förstå.
Mina personliga tekniska mål i projektet var att utveckla min kunskap inom webbprogrammering och få en överblick kring hur en webbapplikation är uppbyggd. Detta upplever jag att jag åstadkommit, trots en del problem på vägen. Jag har verkligen fått arbeta med många olika delar i utvecklingen och arbetat med språk jag
aldrig använt tidigare. Det har också lett till ett ökat intresse i webbutveckling.
19.2 Processrelaterade erfarenheter
Genom hela projektet har utvecklingsmetodiken SCRUM tillämpats. Detta var en metod som var helt ny för mig. Inledningsvis upplevde jag den också som märklig och jag ställde mig ganska skeptisk till den. Detta berodde antagligen på att SCRUM skiljer sig mycket från de mer traditionella arbetssätt som jag stött på i tidigare projekt. En annan anledning kan vara att den inledande sprinten inte innehöll någon programmering eller utveckling utan enbart planering och rapportskrivande där den inte passar lika väl. Allteftersom projektet fortlöpte fungerade dock SCRUM smidigare och effektivare.
En av de aspekter i SCRUM som jag och övriga teammedlemmar uppskattade mest var sprintretrospektiven. Dessa ledde till många förbättringar av teamets arbetssätt. Den största fördelen med dessa var att man fick en fast punkt då teamet skulle utvärderas och förbättringsförslag tas fram. På så sätt upplevdes det aldrig som att någon framförde kritik, något som kan leda till konflikter inom gruppen. Istället blev det en plattform för bra diskussion kring vad vi gjort bra och vad som kan göras bättre. Exempelvis infördes demonstrationsmöten, skype-‐möten och en kommunikationsplan som följd av retrospektiven vilket har underlättat och effektiviserat teamets fortsatta arbete. Denna aspekt av SCRUM är något jag verkligen kommer att ta med mig till framtida projekt oavsett om de följer SCRUM eller inte.
Kommunikationsplanen som togs fram i samband med sprintretrospektiven var en annan mycket positiv erfarenhet. Tidigare har jag varit tveksam till framtagandet av en kommunikationsplan då jag har haft svårt att se dess fördelar. Detta har berott på att jag faktiskt aldrig använt mig av en i praktiken. Efter att nu ha arbetat så pass länge i ett stort projekt har jag fått omvärdera detta ställningstagande då denna underlättade kommunikation inom teamet. Eftersom vi var så pass många som arbetade i projektet samt att två av teammedlemmarna arbetade på distans från Singapore användes många olika kommunikationskanaler så som Skype, Facebook, SMS och Messenger. Detta ledde till att det blev väldigt rörigt och man fick leta efter information på flera ställen något som kostade tid och ork. Kommunikationsplanen strukturerade upp informationsflödet och ledde till att man direkt visste var man skulle leta. Dock gör kommunikationsplanen större nytta desto större projektet och projektgruppen är, en uppfattning som jag fortfarande delar (29). Min erfarenhet är att i mindre projektgrupper om 2-‐4 personer fungerar informationsflödet bra ändå.
En annan ny upplevelse var det faktum att två av teammedlemmarna arbetade på distans under hela projektet. Detta ledde till många nya utmaningar, i form av att involvera dessa i möten, diskussioner och utveckling. På det hela taget tycker jag det har fungerat väldigt bra, långt över de förväntningar jag hade inför projektet. De har varit närvarande på samtliga möten via Skype vilket har fungerat bra i de flesta fall. Ibland har det varit problem med uppkopplingen men detta har ofta varit temporärt. Att involvera dem i utvecklingsfasen har nog varit det som gått smidigast. Jag har uppfattat det som att mjukvaruutveckling är ett väl lämpat område för arbete på
distans då det är lätt att dela med sig av kod via internet och system som Git. Det som har varit den största utmaningen var att få med dem i den löpande diskussionen. Dialogen mellan de teammedlemmar som befunnit sig på plats går ofta snabbt och det är svårt att bryta in i samtalet via videolänk. Vi försökte lösa detta genom att ha flera möten där samtliga medlemmar var närvarande via Skype för att på så sätt ge alla samma förutsättningar. Detta fungerade hyffsat men ofta återgick vi till de vanliga rutinerna.
Det har varit väldigt lärorikt att under en längre tid arbeta med vissa teammedlemmar på distans och det känns som något jag kommer ha stor användning av i framtiden. Det är antagligen inte den sista gången jag hamnar i liknande situationer.
Mina processrelaterade mål var på förhand att lära mig mer om hur arbetet sköts på ett bra sätt i en större projektgrupp samt att ha ett nära samarbete inom teamet trots att vissa inte befann sig på plats. Detta har varit nya erfarenheter för mig och jag upplever att jag dragit många lärdomar av arbetet. Sammantaget skulle jag säga att arbetet fungerat över förväntan.