Retrospective

31-05-2023

Proces

Her i slutningen af projektet, har jeg valgt at bruge noget tid på at se tilbage på projektet, og overveje hvad jeg skulle have gjort anderledes. Jeg kommer nok ikke til at have præcist den samme slags proces i en undervisningskontekt i fremtiden, men der er helt sikkert alligevel nogle ting jeg kan lære og har lært.

Først og fremmest er der nogle praktiske ting. I løbet af projektet har det været en udfordring, at skulle lave de her blogopslag løbende. Nogle gange har det været sjovt, fordi jeg synes det har været nogle spændende ting jeg har lært og udviklet. Dog har det også været et bøvl, fordi jeg i starten valgte at lave min portfolio hjemmeside i ASP.NET, som var det vi havde lært i det tidligere semester. Jeg lærte en del af det, men det var også et bøvl at få op og stå. Primært fordi jeg manuelt skulle style blogopslag, og at billeder ikke bare lige kunne uploades lige hurtigt. Hver gang jeg skulle lave et blogoplag, skulle hele hjemmesiden blive "published", hvilket skulle uploade alt content igen. Det tager tid, og så mister man lysten til at finpudse ting. Derudover er hvert opslag blevet skrevet i databasen direkte, hvilket betød at det skulle styles heri. Træls...

Derudover fandt jeg også ud af, at jeg havde meget mere lyst til at lave blogopslag, hvis jeg planlagde og uploadede nogle billeder på forhånd, og så løbende kunne skrive i f.eks. logbogen. Altså, lav alle logbog-opslag på forhånd, og så bare skriv i den hver dag, i stedet for at vente til slutningen af ugen, hvor alt så skulle uploades på en gang. Planlægningen gjorde også, at jeg i højere grad vidste hvad jeg skulle fokusere på.

Tidsplanerne har været en kæmpe hjælp for mig. Jeg var nok alt for streng ved mig selv i starten, og tvang mig til at lave det jeg havde planlagt, fremfor det jeg følte var vigtigt i øjeblikket eller hvad jeg havde lyst til. Jeg tilpassede derfor mine tidsplaner senere, så der var langt mere frihed i hvad jeg kunne lave. Det hjalp en del på motivation, men samtidig blev det nok lidt for løst her i slutningen (Dog kan det også være pga. udmattelse efter hele projektet).

Vi besluttede i starten af projektet, at vi gerne ville benytte SCRUM til at organisere vores arbejde (roughly). I starten af hvert sprint, lavede jeg så mine læringsmål for det kommende sprint. Det er altså et eksempel på feed up, hvor jeg så har planlagt hvad målet var for for det kommende sprint. Samtidig har jeg også lavet delmål og tidsplaner, som har været de skridt jeg skulle igennem, for at nå mine mål (feed forward). Denne viden er så baseret på de erfaringer jeg har fået fra mine tidligere sprint, hvor jeg i slutningen evaluerede mine delmål. På den måde kunne jeg se hvad der er gået godt/dårligt, og dermed kunne jeg bedre lave læringsplaner i fremtiden (feedback). Set fra et andet perspektiv, kan vi se processen igennem Kolbs læringscirkel: Erfaring -> Eftertænksomhed -> Begrebsdannelse -> Eksperiment ->. Hvor projektet kan siges at bestå af en masse små læringscirkler, som til sammen danner større læringscirkler, som til sidst danner en stor læringscirkel, som er hele projektet. De små er de daglige processer jeg går igennem. Jeg leger med noget kode, er opmærksom på hvad der sker, danner konklusioner ud fra det, og laver nye eksperimenter ud fra det. Fra et andet perspektiv: Jeg laver en læringsplan, jeg erfarer mine mange små eksperimenter, jeg evaluere hvordan processen er gået, laver konklusioner ud fra disse evalueringer, og laver nye læringsplaner.

Motivation har ærligt talt været en af de store kampe i løbet af det her projekt. Når jeg ser tilbage, er jeg lidt i tvivl om hvilke aspekter har gjort det svært: Emnerne, selvstændighed, projektet, gruppen, eksterne faktorer osv. Som jeg senere vil skrive om, så har jeg egentlig været meget glad for mine emner, også selvom de har haft deres udfordringer, hvilket er naturligt og nødvendigt, når man støder på noget nyt. Selvstændigheden har både været god og skidt, for jeg i højere grad har kunnet planlægge rundt om mit eget liv, og hvordan jeg foretrækker at arbejde. Samtidig har det krævet disciplin fra mig, når der ikke har været "eksterne krafter", som har holdt mig på linjen. Jeg synes projektet var vældig spændende og værdifuldt, så det motiverede mig til at lave videre på produktet. Vi har hygget os vældigt i gruppen, dog så har der været problemer i takt med svigtende kommunikation, og andre ting. Derudover har jeg også haft mange eksterne faktorer, som har presset mig i løbet af forløbet. F.eks. havde jeg et projekt hos en virksomhed, som skulle blive færdigt i løbet af Marts, så der gik en del energi på at få det gjort, hvilket kun gjorde mig mere udbrændt, og førte til flere mavesmerter (Et symptom på at min stress er ved at blive kritisk).

Jeg synes dog processen har været udmærket. Jeg er tilfreds med de tiltag jeg selv har stået for, som skulle holde mig på rette spor. Jeg tror ikke at jeg kunne have gjort det meget bedre, med den viden jeg havde i øjeblikket, så selvom jeg er skuffet over hvor meget jeg fik nået, så kan jeg godt forstå hvorfor.


Opgavefordeling

Når jeg ser tilbage på projektet, er jeg desværre også lidt skuffet over de ting jeg har nået. Det føles som om at jeg er blevet god til de ting jeg har læst om, og har øvet. Der er så mange små emner (nogle endda rimelig vigtige), som jeg simpelthen ikke har fået læst om, hvilket har været en skuffelse her imod slutningen. I stedet har jeg nok overfokuseret på nogle emner, som egentlig ikke har været så vigtige ift. mine læringsmål. Eksempelvis brugte jeg en del tid på databehandling. Det har været et vigtigt aspekt, da Den Frie Bibel har benyttet sig af et unik dataformat, som ikke har været så nemt at bruge i starten. Jeg har derfor været nødt til at lave et script, som kunne oversætte fra det gamle format til JSON, hvilket er langt mere universelt og kendt. Problemet har bare været, at jeg konstant har løbet ind i problemer med scriptet, med en masse småfejl, som har gjort at teksten så forkert ud. Til gengæld al den tid jeg har brugt på det, ført til en højere kvalitet ift. produktet på bekostning af min læring (Hvilket er min egen skyld!).

Lidt i samme bane, så er jeg simpelthen også bare alt for perfektionistisk. Jeg kom konstant på nye idéer og småting som kunne finpudses på hjemmeside, som ville give en bedre brugeroplevelse. Det har været nemt for mig, fordi jeg allerede læser en del i bibelen i min fritid, så jeg har kendt til de ting som kan forhindre og gavne oplevelsen. På den anden side, så har jeg bestemt brugt for meget tid på denne finpudsning. Det har igen øget kvaliteten, men taget for meget tid.


Skulle jeg have valgt noget andet end React.js?

Alt i alt, synes jeg egentlig React.js har været et rigtig godt emne. Webudvikling har i lang tid virket lidt underligt for mig, og ikke lige så "elegant" som f.eks. desktopudvikling har været. Dog så jeg på en del jobopslag, at React.js el.lign. libraries/frameworks er meget eftertragtet. Derfor virkede oplagt for mig, som aldrig rigtig har brugt tid på webudvikling, at "tvinge" mig selv igennem et sådan projekt, og det har faktisk været en god oplevelse.

React har været med til at fjerne en del af de problemer, som jeg har set i webudvikling. Når jeg har skulle lave en hjemmeside, har jeg lavet den mere eller mindre fra bunden med simpel HTML, CSS og en lille smule JavaScript, uden nogen libraries. Det har ofte været en kamp, især fordi man ikke kan genbruge HTML (på en simpel måde), så hvis man ændrede en header et sted, kunne man lige så godt finde alle .html filerne frem. React har fikset dette problem ved hjælp af de genbruglige komponenter. Med disse, har jeg altid bare skulle skrive en komponent en gang, og så kunne jeg bare importere den, hvor der har været behov. Man har bare skulle lave en app.js (eller _app.js), indsætte de nødvendige komponenter, og så har du skelettet som du kan putte kød på.

Jeg fandt dog hurtig ud af, at React.js også havde sine begrænsninger. Routing er et godt eksempel. Uden nogen libraries, er der ikke en god måde at lave "sider" på i React.js. I stedet er det som udgangspunkt en "one-page app", hvor man med conditional rendering (med ternary operators, if-statements not allowed :( ), bare kan udskifte body-indholdet løbende. Dette kan være problematisk for SEO (og sanity), så jeg skiftede hurtigt til Next.js, som har en god routing implementering. (Sidespor) I starten lærte jeg, at functional components skulle have været hurtigere end class components, men det skulle åbenbart være usandt (se litteraturliste), så jeg skulle nok have brugt mere tid på class components.

React har også været en fryd at arbejde med, når det gælder løbende ændringer til koden. Der har det altid været sådan, at man bare kunne gemme filen, og så ville man øjeblikkeligt kunne se ændringen på hjemmesiden (hvis man har den åben i browseren). I modsætning simpel HTML, som ville kræve at man hard-coded en automatisk refresh hvert x-sekund, eller ASP.NET hvor man skal slukke hele hjemmesiden og starte den op igen. Det tager jo en evighed! Derfor har React virkelig været lækker, når man har skulle lave en masse små finpudsninger og lege med layout.

Alt i alt har React været og nemt at arbejde med. Især da jeg kendte til noget basic HTML, JavaScript og CSS fra starten. :)


Skulle jeg have valgt noget andet end Node.js?

Her i slutningen af projektet, har jeg egentlig været meget glad for mit valg. De fleste af de andre som også valgte backend webudvikling, havde valgt en anden teknologi end Node.js (f.eks. Ruby-On-Rails og Python), så det begrænsede sparingsmulighederne. Dog synes jeg, at det var været meget værdifuldt at bruge JavaScript til både frontend og backend, da det begrænsede hvor meget jeg skulle lære. Et minus har været, at Node.js lader til at være en nyere backend teknologi end alternativerne, og derfor har der været lidt færre muligheder for at udrulle hjemmesiden. Langt de fleste services, tilbyder primært PHP som backend, så det har været en udfordring.

Dog lader det til at Node.js er på vej frem, og vil med tiden blive et af de mere populære backends. Derudover har jeg også set en række jobopslag, hvor de nævner Node.js (ofte i forbindelse med Express.js), så der har mit valg måske også fremtidssikret mig.

Hvis man skulle sammenligne Node.js med alternativerne. Tror jeg Node.js f.eks. er potentielt langsommere end ASP.NET, da ASP.NET kan kompileres fremfor JavaScript som bliver interpreted. Ruby-On-Rails har været på markedet i længere tid, så der er mere dokumentation og så har det haft mere tid til at modne sig. Node.js skal nok have tid til at modne sig, men det er også tydeligt at teknologien bliver trukket i mange forskellige retninger, hvilket måske også kan være en fordel, fordi det tillader mange forskellige måder at løse problemer på, og tilpasse løsninger derefter.