• No results found

BILAGA 15 – ERFARENHETSSAMMANFATTNING, AXEL JOHANSSON 102

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.