Å skrive praksisdagbok har vært en nyttig måte å reflektere over egen utvikling og fremgang i arbeidet. Gjennom å dokumentere hva jeg har gjort hver dag, har jeg blitt mer bevisst på både hva jeg lærer og hvordan jeg jobber. Det har hjulpet meg å se sammenhengen mellom teori og praksis, og gjort det lettere å identifisere områder der jeg kan forbedre meg.
Dagbokskrivingen har også vært en god måte å bearbeide tilbakemeldinger og utfordringer på. Når jeg skriver om situasjoner der noe ikke gikk som planlagt, ser jeg ofte tydeligere hva som kan gjøres annerledes neste gang. På den måten har dagboken vært et verktøy for kontinuerlig læring og refleksjon, ikke bare en oppsummering av arbeidsoppgaver.
I tillegg har det vært motiverende å kunne se tilbake og faktisk se hvor mye jeg har lært og utviklet meg gjennom praksisperioden. Å skrive dagbok har derfor ikke bare hjulpet meg å holde oversikt, men også gitt meg en dypere forståelse av egen faglig og personlig vekst.
I dag fullførte jeg de siste delene av funksjonaliteten knyttet til håndtering av dykkere i systemet, inkludert validering av navn, DB-oppslag av person-ID, og krav om bekreftelse av siste dykkinformasjon før et dykk kan startes. Jeg fikk også fullført integrasjonen av de nye DiverRowWidget-radene og oppdatert logikken som styrer aktivering av “Start Dive”-knappen.
Etter at disse delene var på plass, testet jeg hele flyten i brukergrensesnittet og kvalitetssikret at alt fungerte slik det skal. Arbeidet ble ferdigstilt i dag, og jeg hadde også et avslutningsmøte hvor vi gikk gjennom praksisperioden, oppnådde resultater og videre planer. Dette markerer siste dag i praksisen, og jeg fikk gode tilbakemeldinger på både teknisk utvikling og samarbeid underveis.
I dag har jeg jobbet videre med utviklingen av dykkeloggsystemet, med fokus på forbedring av brukergrensesnittet og datavalidering. Jeg har implementert en løsning for å kunne identifisere dykkere entydig ved hjelp av database-ID, selv når flere personer kan ha samme navn. Dette innebærer å legge til egne informasjonsfelt i UI-et som viser hvilken person-ID som er knyttet til navnet brukeren skriver inn eller velger fra autocomplete-listen.
Jeg jobbet også med å strukturere et mellomlag (en "handler") som skal hente tidligere dykkeinformasjon basert på personens ID, slik som forrige dykk og N2-gruppe. Målet er at systemet skal kunne gi brukeren tydelige valg dersom det finnes flere personer med samme navn, og sikre riktig datakvalitet før et nytt dykk startes.
Tiden for å koble deler av UI-et til databasen er endelig kommet! Nå kan man både legge til og hente ut data fra databasen direkte i brukergrensesnittet. Dette arbeidet skal fortsette frem til jeg er ferdig med prosjektet.
Jeg hadde også et møte med Eirik og Sigurd for å avklare avslutningsprosessen. De uttrykte stor fornøydhet med arbeidet mitt, og det har vært veldig interessant å jobbe med Acolight. I tillegg godkjente Sigurd endringene jeg hadde gjort, og branchen ble deretter slått sammen (merget) med main-branchen.
Denne tiden ble brukt til å forstå kommentarene, innhente mer informasjon og skrive om koden i henhold til kravene. Dette gjorde at komponentene nå er mer tilpasningsdyktige, og kan brukes i flere systemer fremover, ettersom de enkelt kan justeres i stil, farge og størrelse.
Dagen har gått med til at Sigurd så over endringene og arbeidet mitt på UI-komponentene. Vi gjennomførte en kodegjennomgang og en fremvisning av hvordan det ser ut i selve brukergrensesnittet. Noe av koden var ikke skrevet helt på den måten han ønsket, så han la inn flere kommentarer med forslag til endringer. Dette er en viktig del av jobben, og det er viktig å huske at slike tilbakemeldinger ikke er personlige, men en del av læringsprosessen.
I dag jobbet jeg med implementasjonen av den nye skjermen. Jeg laget en meny med dialog-popups, og den er koblet til andre deler av UI-et. Skjermen er nå klar til å kobles videre mot funksjonaliteten i backend. Det føles som strukturen begynner å falle på plass, og neste steg blir å få logikken til å spille sammen med det visuelle.
I dag gjorde jeg ferdig de siste komponentene og byttet ut alle de eksisterende med de nye. Da måtte jeg sjekke at alle komponenter fungerte som før og lå på riktig sted. Etterpå gjorde jeg ferdig commiten og hadde det ukentlige statusmøtet med Sigurd.
Da vi skulle kode sammen i dag, måtte jeg lære hvordan man oppretter “feature branches”. Dette hjelper med å holde oversikt over hva hver person jobber med, og hvilke endringer de skal gjennomføre. Jeg begynner nå å bli nesten ferdig med alle knappene, labelene og andre komponenter som utgjør store deler av UI-en.
Jeg fortsatte i dag med komponenter og hadde det ukentlige møtet med Sigurd for å diskutere status. Vi planla også å ha felles koding på lørdag sammen med Eivind.
I dag ryddet jeg opp i branchen min før jeg leverte en siste commit for gjennomgang og merge. Etter det begynte jeg å restrukturere filene slik at de følger oppsettet vi hadde blitt enige om tidligere. Jeg laget deretter egne stilfiler som styrer utseendet på programmet, slik at alle elementer kan bruke standardfarger og enhetlig design. Til slutt startet jeg arbeidet med gjenbrukbare komponenter, som knapper og input-felt, slik at de kan implementeres med kun én linje i UI-skjermene.
I dag prøvde jeg å lage en controller som tar imot input og kjører backend-koden min. Selv om det bare fungerte delvis, lærte jeg utrolig mye om hvordan ting faktisk henger sammen i systemet. Det ga meg bedre oversikt over flyten mellom front end og back end, og jeg fikk en større forståelse for hva som må på plass for at ting skal fungere sømløst.
Senere hadde vi et møte med Eivind, der vi bestemte oss for å rette fokuset mer mot front end. Vi planla hvordan vi skal refaktorere brukergrensesnittet slik at det blir klart for mer funksjonalitet, og lettere kan kobles opp mot backend senere.
Siden brukergrensesnittet er skrevet i PySide6/Qt-modulen, leste jeg meg opp på hvordan det kan kobles til kalkulatoren ved hjelp av signals and slots. Dette var veldig interessant, fordi prosjektet nå begynner å ligne et produkt som faktisk kan kjøres. Dermed åpner det seg også muligheter for å utvikle all funksjonaliteten til instrumentet videre.
I dag fullførte jeg den siste refaktoreringen av kalkulasjonsfunksjonene jeg hadde laget. Nå er kalkulatoren ferdig, og jeg har skrevet mange tester for den. Jeg ble ferdig med både kalkulatoren og en samling pytester, som jeg brukte til å rette feil i både logikken og selve koden. Jeg sørget også for å slette alle gamle filer fra GitLab-versjonen, slik at prosjektet nå er mer ryddig. I tillegg lærte jeg viktigheten av å skrive mer beskrivende commit-meldinger, noe som gjør det enklere å følge utviklingen i prosjektet.
Senere hadde jeg et møte med Sigurd hvor jeg presenterte arbeidet. Vi snakket om veien videre, og spesielt om å koble backend-kalkulatoren til frontend. Vi har også avtalt å ta med en tredje person i et kommende møte for å diskutere dette videre.
Etter den code review på tirsdag måtte jeg begynne å forstå og rydde etter roten min. Jeg har ikke fulgt gode OOP-prinsipper og hadde mye kode som var tett koblet. Derfor begynte jeg med å lage et “lookup” til CSV-filen, og nå kan den klassen opprette et objekt som har alle nødvendige metoder for å slå opp riktige deler av filen. Videre har jeg laget egne dataklasser for å representere regler fra tabellen. Dette har gjort koden ryddigere og mer robust, fordi jeg tydelig definerer hva slags data som hører sammen.
Jeg har også brukt mye tid på å teste og skrive tester med pytest. Spesielt har jeg sørget for at grenseverdier fungerer riktig – at man for eksempel hopper til neste tabell dersom man treffer en eksakt terskel. I tillegg har jeg lagt til sjekk for ugyldige data, slik at systemet gir tydelige feil i stedet for å krasje senere.
Jeg ser nå tydelig hvor viktig det er å følge OOP-prinsipper som lav kobling og høy kohesjon. Når klasser har klart definerte ansvarsområder, blir koden både enklere å forstå og lettere å videreutvikle. Samtidig har jeg erfart verdien av å skrive tester tidlig. Ved å teste små deler underveis oppdager jeg feil raskere, og jeg får en trygghet på at refaktoreringene mine ikke ødelegger noe. Dette gir en mye mer strukturert og effektiv arbeidsflyt.
Etter å ha skrevet noen funksjoner og testet dem, var det tid for at Sigurd skulle se på arbeidet mitt. Vi møttes på UiA, og jeg gikk gjennom alt jeg hadde gjort. Deretter begynte vi å diskutere oppsett, kode og struktur. Det var ingen overraskelse at koden min var litt rotete, og filstrukturen kunne vært bedre.
Vi startet med en av de enklere funksjonene jeg hadde laget – en som leser fra en CSV-fil og tar imot to variabler for å regne ut en ny verdi. Etter litt refaktorering, opplæring i bedre filstruktur og bruk av Python-moduler, gikk vi også gjennom hvordan man kan utføre enhetstester med Pytest.
Nå har jeg en klarere idé om hva jeg bør lære mer om for å kunne skrive ryddigere og bedre kode.
I dag så jeg nærmere på hvordan ulike deler av arbeidet mitt henger sammen. Jeg fikk en bedre forståelse av hvordan de ulike delene samarbeider, og jeg ryddet opp i strukturen slik at alt føles mer organisert. Det var nesten som å rydde skrivebordet sitt – tilfredsstillende å få mer orden.
Jeg avsluttet med å reflektere over hvor viktig det er med tydelig ansvarsdeling, og hvordan det kan hjelpe meg å holde ting ryddige fremover.
I dag rettet jeg flere feil i databasetilknyttede spørringer, som oppstod forrige gang jeg jobbet på koden. Først fikk jeg en TypeError fordi et tidspunkt manglet i databasen, og jeg måtte både rette filtreringen og sørge for å håndtere tilfeller der verdien kan være tom. Deretter oppsto en feil om at flere rader ble returnert når bare én var forventet; jeg løste dette ved å legge inn en tydelig prioritering mellom deltakerne og, hvis nødvendig, velge den med tidligst starttid. Til slutt støtte jeg på problemer med en spørring som involverte en relasjon, og løste det ved å lage en mer presis kobling og filtrering.
Jeg passet på å teste funksjonene grundig før jeg lastet opp endringene til GitLab. Fremover vil jeg huske å skrive og teste mindre deler av gangen, slik at det ikke føles som om jeg ødelegger alt når noe går galt.
I dag ødela jeg kalkulasjonene jeg hadde bygget forrige gang da jeg forsøkte å gjøre dem om til funksjoner, slik at de kunne gjenbrukes flere ganger etter behov. Under feilsøkingen har jeg oppdaget flere feil, blant annet feilstavede variabler og feil navn på kolonner i CSV-filene. Problemet er fortsatt ikke helt løst, så jeg regner med at det vil dukke opp flere feil etter hvert.
Gjennom prosessen har jeg lært viktigheten av å være konsekvent med variabelnavn og kolonnenavn, samt å teste mindre deler av koden før jeg gjør store endringer. Jeg har også fått mer erfaring med debugging og hvordan jeg kan bruke feilmeldinger til å finne årsaken til problemer. Selv om det er frustrerende når ting ikke fungerer, merker jeg at jeg blir bedre til å forstå hvordan koden henger sammen, og jeg lærer mye av å måtte rette opp i egne feil.
Først laget jeg en CSV-fil ut fra den informasjonen jeg hadde fått oppgitt. Deretter begynte jeg på en kalkuleringsfunksjon som kan hente ut relevant data fra CSV-filen. Underveis brukte jeg ChatGPT til rubber ducking – det hjalp meg å strukturere tankene og komme videre i koden.
Alt i alt en produktiv dag hvor jeg fikk tatt et viktig steg videre i arbeidet.
I dag var kun en kort møte med Eirik og Eivind(som fokusere på databasen). Da gikk vi gjennom min arbeid og laget en plan for å jobbe videre og begynne å kode backend.
I dag oppdaterte jeg de siste delene med gammel syntaks og feilsøkte problemer knyttet til feilskrevne foreign keys og relasjoner. Jeg laget scripts for å sette inn testdata og kjøre queries mot databasen. I tillegg redigerte jeg databasediagrammet, la til nye felt og flyttet enkelte i henhold til tilbakemeldinger jeg har fått. Senere har vi en planlagt møte hos klienten.
I dag satte jeg inn data og testet databasen. Jeg laget testdata og en seed-funksjon for å fylle databasen. Før undervisningen jobbet jeg litt selvstendig. Siden jeg jobber remote gir det meg frihet, men også ansvar for å sørge for at arbeidet blir gjort. Underveis oppdaget jeg at jeg hadde brukt syntaks fra en eldre versjon, så jeg startet med å redigere dette. Etter forelesningen fortsatte jeg også å jobbe videre med oppgavene.
I dag hadde vi et kort møte på stedet kl 19 til kl 20.30. Jeg møtte Robert for første gang, og Eirik og Sigurd var også til stede. Vi gikk gjennom noen av de spesifikke elementene programmet vårt skal bruke til beregninger. Vi snakket også om hva rapportene vil kreve, og derfor er det viktig at databasen inneholder denne informasjonen, og la til Gitlab-issues for å dekke de nye funnene. Til slutt så vi på utstyret som dykkere bruker, samt en prototype. Det var nyttig å se hva jeg faktisk jobber med, og jeg fikk bedre forståelse av hvordan databasen og produktet skal samarbeide
I dag har jeg jobbet med databasen til prosjektet. Først redigerte jeg databasediagrammet igjen i henhold til tilbakemeldingene jeg har fått, og oppdaterte datatypene som skal brukes. Deretter leste jeg meg opp på et verktøy som forenkler kommunikasjonen mellom kode og databasen, for å vurdere hvordan dette kan implementeres i prosjektet. Til slutt opprettet jeg en ny branch i Git for å teste ut verktøyet og sette opp databasen uten å påvirke hovedgrenen. Da hadde jeg et møte med Sigurd hvor vi diskuterte arbeidet mitt og jeg pushet min første branch til Gitlabs. Vi har planlagt flere møter som inkluderer andre i bedriften for å lage en fremdriftsplan etter at jeg har gjennomført testing på databasen.
I dag har jeg styrt litt mer med databasen. Jeg endra diagrammet etter tilbakemelding først. Så leste jeg om hvordan man bruker SQLite sammen med Python, og begynte å lage en egen fil for å sette opp databasen. Mens jeg holdt på fant jeg ut at det finnes bedre måter å navngi id-felt på enn det jeg hadde gjort før, så jeg måtte gjøre noen endringer. På grunn av det måtte jeg også rette opp diagrammet igjen. Føler jeg skjønner litt bedre forskjellen på oppsett av database og selve backend-koden nå, og har fått et litt klarere bilde av hvordan jeg skal gå videre.
I dag har jeg brukt tid på å lese gjennom koden og gjøre meg mer kjent med hvordan den fungerer. Jeg feilsøkte problemer som oppstod ved kjøring av koden. Da koden ikke kjørte som forventet, startet jeg med å lese feilmeldingen nøye for å forstå hva som var galt. Jeg undersøkte hvilke filer og moduler som ble referert til, og sammenlignet dette med oppsettet i prosjektet. Deretter testet jeg ulike løsninger i små steg, blant annet å sjekke at riktig virtual environment (venv) var aktivert og at nødvendige pakker var installert. Etter å ha gjort disse justeringene fikk jeg programmet til å kjøre uten feil.
Etterpå gikk jeg gjennom tilbakemeldinger fra tidligere arbeid. Videre samlet jeg spørsmål jeg ønsker å ta opp i møte. Dagen ble avsluttet med et møte med Sigurd og Eirik, hvor vi diskuterte videre fremdrift og avklarte noen av de åpne spørsmålene.
I dag har jeg laget første utkast av ER-diagrammet for en mer omfattende database. Jeg la til flere tabeller med tanke på fremtidig datalagring, og sikret at relasjoner og nøkkelene var definert. Jeg delte diagrammet og venter på tilbakemelding og inspill for forbedringer.
I dag hadde jeg et introduksjonsmøte med Sigurd, som er software engineer og en av grunnleggerne i selskapet. Møtet varte fra kl. 18:00 til 19:20. Vi gikk gjennom arbeidstid, foretrukne kontaktmetoder og planlegging av fremtidige møter. Videre diskuterte vi ulike mulige arbeidsoppgaver, og ble enige om å starte med databasedelen av prosjektet. Under møtet lastet jeg ned kildekoden, satte opp Visual Studio Code og verifiserte at programmet fungerte som det skulle. Vi bestemte også at vi skulle bruke Clockify for å registrere arbeidstid og holde oversikt over hvor lang tid oppgavene tar.