Tilbake
8.5
Dokumentasjon og presentasjon

8.5 Dokumentasjon og presentasjon

Lær å skrive README-filer, kodekommentarer og teknisk dokumentasjon.

55 min
7 oppgaver
READMEMarkdownKodekommentarTeknisk dokumentasjon
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 7 oppgaver

Dokumentasjon og presentasjon

Kode som ingen forstår er verdilaus. Du kan ha skrive den mest elegante løysinga i verda, men dersom ingen – inkludert deg sjølv om seks månader – kan forstå kva ho gjer og korleis ho vert brukt, har du eit problem.

Dokumentasjon er det som gjer kode og prosjekt forståelege. Det handlar om å skrive ned det som ikkje er opplagt frå koden sjølv: kva prosjektet gjer, kvifor det er laga slik, korleis ein installerer og bruker det, og kva ein bør vite for å kunne jobbe vidare med det.

Presentasjon er like viktig – du må kunne formidle arbeidet ditt til andre. Anten det er læraren din, medelevar, eller ein framtidig arbeidsgjevar, må du kunne forklare kva du har laga, kva val du tok og kvifor.

I dette kapittelet lærer du å skrive gode README-filer, kommentere kode på ein nyttig måte, lage teknisk dokumentasjon, og presentere IT-prosjekt på ein overtydande måte.

Dokumentasjon
Dokumentasjon er all skriftleg informasjon som skildrar, forklarer og støttar eit programvareprosjekt. Dokumentasjon kan delast inn i fleire typar: brukardokumentasjon (for sluttbrukarar), teknisk dokumentasjon (for utviklarar), prosessdokumentasjon (skildrar utviklingsprosessen) og API-dokumentasjon (skildrar programmeringsgrensesnitt). God dokumentasjon gjer det mogleg for andre å forstå, bruke og vidareutvikle prosjektet utan å måtte kontakte den opphavlege utviklaren. Regelen er: «Kode fortel datamaskina kva ho skal gjere. Dokumentasjon fortel menneske kva koden gjer.»

README – visittkortet til prosjektet

README-fila er det aller viktigaste dokumentet i prosjektet ditt. Det er det fyrste folk ser på GitHub, og det bør gi all informasjon som trengst for å forstå og bruke prosjektet.

Kva bør ein god README innehalde?

1. Prosjektnamn og kort skildring – Kva gjer prosjektet? Éi til to setningar.

2. Skjermbilete eller demo – Vis korleis det ser ut. Eit bilete seier meir enn tusen ord.

3. Installasjon – Steg-for-steg-instruksjonar for korleis ein set opp prosjektet lokalt.

4. Bruk – Korleis bruker ein prosjektet? Eksempel er gull verdt.

5. Teknologiar – Kva språk, rammeverk og verktøy er brukte?

6. Bidragsytarar – Kven har jobba med prosjektet?

7. Lisens – Kva rettar har andre til å bruke koden?

For skuleprosjekt kan du òg inkludere:
- Læreplankompetansemål prosjektet dekkjer
- Prosessdokumentasjon (lenkje til prosjektlogg)
- Refleksjon over kva du har lært

✏️Eksempel på ein god README

Her er eit eksempel på ein README for eit skuleprosjekt:

# Vaermelding - Enkel Vaerapp

En nettside som viser vaervarselet for norske byer ved hjelp av
data fra Meterologisk institutt sitt API (Yr).

## Skjermbilde

(Her ville du lagt inn et bilde av nettsiden)

## Teknologier

- HTML5
- CSS3 (Flexbox og Grid)
- JavaScript (Fetch API)
- Yr API (api.met.no)

## Installasjon

1. Klon repositoryet:
   git clone https://github.com/brukernavn/vaermelding.git

2. Apne index.html i nettleseren

Ingen ekstra installasjon er nodvendig – prosjektet bruker
kun HTML, CSS og vanilla JavaScript.

## Bruk

1. Skriv inn navnet pa en norsk by i sokfeltet
2. Trykk "Sok" eller Enter
3. Vaervarselet for de neste 3 dagene vises

## Bidragsytere

- Ola Nordmann – Design og CSS
- Kari Nordmann – JavaScript og API-integrasjon

## Kompetansemal (IT 1)

- Utvikle nettsider ved bruk av HTML og CSS
- Bruke et API til a hente og presentere data
- Planlegge og dokumentere utviklingsprosessen

## Lisens

MIT License

Legg merke til at README-en er kort, tydeleg og gir all naudsynt informasjon for å forstå og bruke prosjektet.

Markdown – enkelt tekstformat

README-filer og mykje anna dokumentasjon vert skrivne i Markdown – eit lettvektsformateringsspråk som er laga for å vere lesbart både som rein tekst og som formatert output.

Dei viktigaste Markdown-elementa

# Overskrift nivå 1
## Overskrift nivå 2
### Overskrift nivå 3

**Fet tekst** og *kursiv tekst*

- Punktliste
- Element to
- Element tre

1. Nummerert liste
2. Element to
3. Element tre

[Lenketekst](https://www.eksempel.no)

![Bildetekst](bilde.jpg)

\`Inline kode\`

\`\`\`python
# Kodeblokk med syntaksutheving
print("Hei verden!")
\`\`\`

> Sitat eller merknad

| Kolonne 1 | Kolonne 2 |
|-----------|-----------|
| Data 1    | Data 2    |

Markdown vert brukt overalt: GitHub (README, issues, pull requests), Notion, Slack, Discord, Jupyter Notebooks og mange andre stader. Det er eit essensielt verktøy for alle som jobbar med teknologi.

Kodekommentarar – forklar kvifor, ikkje kva

Kodekommentarar er tekst i kjeldekoden som vert ignorert av datamaskina men hjelper menneske med å forstå koden. Men ikkje alle kommentarar er nyttige – dårlege kommentarar kan faktisk gjere koden vanskelegare å forstå.

Korleis skrive kommentarar i ulike språk

# Python: Enkeltlinje-kommentar med #
x = 10  # Kommentar på slutten av en linje

// JavaScript: Enkeltlinje-kommentar
/* JavaScript: Flerlinjekommentar
   som kan gå over
   flere linjer */

<!-- HTML-kommentar -->

/* CSS-kommentar */

Dårlege kommentarar

# Dårlig: Sier hva koden gjør (åpenbart fra koden selv)
x = x + 1  # Øker x med 1
navn = input("Navn: ")  # Henter input fra brukeren
liste.sort()  # Sorterer listen

Gode kommentarar

# Bra: Forklarer HVORFOR, ikke hva
x = x + 1  # Kompenserer for 0-indeksering i API-responsen

# Bra: Forklarer en ikke-opplagt beslutning
# Bruker bubblesort i stedet for quicksort fordi listen
# alltid er under 20 elementer, og bubblesort er enklere å feilsøke
sorter_manuelt(liste)

# Bra: Varsler om en begrensning
# OBS: Fungerer bare for norske postnumre (4 siffer)
def valider_postnummer(postnummer):
    return len(postnummer) == 4 and postnummer.isdigit()

Tommelfingerreglar for kommentarar

1. Forklar kvifor, ikkje kva – Koden viser kva som vert gjort; kommentaren forklarer kvifor
2. Oppdater kommentarar når koden vert endra – Utdaterte kommentarar er verre enn ingen kommentarar
3. Bruk skildrande variabelnamn i staden for å kommentere dårlege namn
4. Kommenter kompleks logikk – Algoritmar, formlar og ikkje-opplagt kode
5. Marker mellombelse løysingar med TODO-kommentarar: # TODO: Bytt til databaselagring

Teknisk dokumentasjon for utviklarar

Teknisk dokumentasjon går djupare enn README-fila og er retta mot utviklarar som skal jobbe med eller vedlikehalde koden. I eit skuleprosjekt viser teknisk dokumentasjon læraren at du forstår systemet du har bygd.

Kva bør teknisk dokumentasjon dekkje?

Systemarkitektur: Korleis er prosjektet organisert? Kva filer gjer kva? Korleis heng delane saman?

prosjekt/
├── index.html          # Forside
├── css/
│   └── style.css       # Alle stiler
├── js/
│   ├── main.js         # Hovedlogikk og event handlers
│   ├── api.js          # API-kall til Yr
│   └── utils.js        # Hjelpefunksjoner
├── images/             # Bilder og ikoner
└── README.md           # Prosjektdokumentasjon

Dataflyt: Korleis flyt data gjennom systemet? Frå inputen til brukaren til vising av resultat.

API-bruk: Kva eksterne tenester bruker prosjektet? Kva slags data vert henta og sendt?

Kjende avgrensingar: Kva fungerer ikkje enno? Kva kjende feil finst? Kva ville du forbetra med meir tid?

Installasjonskrav: Kva verktøy og versjonar trengst for å køyre prosjektet?

Prosessdokumentasjon – vis at du forstår prosessen

I IT 1 vert du ikkje berre vurdert på det ferdige produktet, men òg på prosessen. Prosessdokumentasjon viser korleis du planla, jobba og reflekterte undervegs.

Element i prosessdokumentasjon

Prosjektplan:
- Kva er målet med prosjektet?
- Kva brukarhistorier definerte vi?
- Kva er MVP-en?
- Tidsplan med milepælar

Designprosess:
- Wireframes og skisser (tidlege versjonar)
- Designval og grunngjevingar (kvifor valde vi desse fargane, denne layouten?)
- Prototypar og brukartesting (kva lærte vi?)

Utviklingslogg:
- Kva vart gjort i kvar sprint/veke?
- Kva utfordringar oppstod?
- Korleis vart dei løyste?
- Kva tok lengre tid enn venta?

Refleksjon:
- Kva fungerte bra i prosjektet?
- Kva ville du gjort annleis?
- Kva har du lært?
- Korleis fungerte samarbeidet (dersom gruppeprosjekt)?

Tips for prosessdokumentasjon

- Skriv litt undervegs i staden for alt på slutten
- Ta skjermbilete av wireframes, prototypar og viktige steg
- Ver ærleg om utfordringar – det viser refleksjonsevne
- Knyt arbeidet til kompetansemål frå læreplanen

Presentere IT-prosjekt

Å kunne presentere arbeidet ditt er ein viktig ferdigheit. I IT 1 vil du truleg presentere prosjekt for klassen eller læraren. Her er nokre prinsipp for gode presentasjonar.

Struktur for ein prosjektpresentasjon

1. Introduksjon (1-2 min): Kva er problemet? Kva har du laga? For kven?
2. Demo (3-5 min): Vis produktet i aksjon. Lat det snakke for seg sjølv.
3. Teknisk gjennomgang (2-3 min): Kva teknologiar brukte du? Korleis er koden organisert? Vis eit interessant kodeutdrag.
4. Prosess (2-3 min): Korleis planla du prosjektet? Kva utfordringar møtte du? Kva lærte du?
5. Avslutning (1 min): Kva ville du gjort med meir tid? Spørsmål?

Gode presentasjonstips

Vis, ikkje fortel: I staden for å seie «Nettsida er brukarvenleg», vis det ved å demonstrere at det er enkelt å utføre ei oppgåve.

Hald det enkelt: Ikkje vis all koden – vel ut dei mest interessante eller utfordrande delane. Publikum treng ikkje sjå 500 linjer HTML.

Førebu demo: Test alt på førehand. Ha ein backup-plan dersom noko ikkje fungerer (skjermbilete, video av demoen).

Snakk om utfordringar: Dei mest interessante delane av eit prosjekt er ofte problema du løyste. Ikkje ver redd for å dele kva som var vanskeleg.

Tilpass for publikum: Læraren vil sjå at du forstår konsepta. Medelevar vil sjå noko kult. Tilpass språkbruken etter kven du snakkar til.

Unngå å lese frå lysbilete: Lysbileta er visuell støtte, ikkje manuskriptet ditt. Bruk stikkord og bilete, ikkje lange tekstblokker.

✏️Eksempel på lysbiletestruktur

Her er ein føreslegen lysbiletestruktur for ein 10-minutters prosjektpresentasjon:

Lysbilete 1: Tittel
Prosjektnamn, namn på teammedlemmer, dato

Lysbilete 2: Problemet
Kva er problemet vi løyser? Kven er brukarane?
(Bruk eit bilete eller scenario som illustrerer problemet)

Lysbilete 3: Løysinga
Kort skildring + skjermbilete av det ferdige produktet

Lysbilete 4-5: Live demo
Vis produktet i aksjon (nettlesaren)

Lysbilete 6: Teknologi
Teknologiar brukte (HTML, CSS, JS, API-ar)
Enkel arkitekturoversikt

Lysbilete 7: Kode-høgdepunkt
Vis eit interessant kodeutdrag med forklaring
(Vel noko du er stolt av eller som var utfordrande)

Lysbilete 8: Prosessen
Wireframes -> Prototype -> Ferdig produkt
Kanban-tavle eller sprint-oversikt

Lysbilete 9: Utfordringar og lærdom
Kva var vanskeleg? Kva lærte du?

Lysbilete 10: Vegen vidare
Kva ville du gjort med meir tid?
Takk for merksemda / spørsmål?

📝Oppgave 8.5.1

Kva er hovudføremålet med ei README-fil i eit prosjekt?

📝Oppgave 8.5.2

Kva av følgjande er ein god kodekommentar?

📝Oppgave 8.5.3

Kva er Markdown, og kvar vert det brukt?

📝Oppgave 8.5.4

Kva bør du fokusere på når du presenterer eit IT-prosjekt for klassen?

📝Oppgave 8.5.5

Skriv ein komplett README.md i Markdown-format for eit tenkt IT 1-prosjekt: ei nettside for ein fiktiv kafé. README-en skal innehalde minst: prosjektnamn, skildring, teknologiar brukte, installasjonsinstruksjonar og bidragsytarar.

📝Oppgave 8.5.6

Kva er skilnaden mellom brukardokumentasjon, teknisk dokumentasjon og prosessdokumentasjon?

📝Oppgave 8.5.7

Lag ein disposisjon for ein 10-minutters presentasjon av eit IT 1-prosjekt (ei sjølvvald nettside eller app). For kvart lysbilete, skriv kva det bør innehalde og omtrent kor lang tid du vil bruke. Inkluder òg ein kort prosessdokumentasjon der du skildrar minst to utfordringar du kunne ha møtt og korleis dei ville blitt løyste.

Oppsummering

I dette kapittelet har du lært:

- Dokumentasjon: skriftleg info som forklarer eit prosjekt.
- README: visittkortet til prosjektet.
- Markdown: enkelt tekstformat for dokumentasjon.
- Kodekommentarar: forklar kvifor, ikkje kva.
- Presentasjon: strukturert munnleg og visuell formidling.

Noekkelbegreper


BegrepForklaring
DokumentasjonSkriftleg info som forklarer eit prosjekt
READMEHovuddokument som skildrar prosjektet
MarkdownEnkelt tekstformat for formatering

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.