# data[].attributes.body
Kommunikasjon er viktig gjennom hele prosessen

Ha faste møter og frister der det er obligatorisk at alle deler det de har jobbet med, erfaringer eller utfordringer.

Bli enige om hvordan man foretrekker å jobbe, slik at man får samkjørt så my esom mulig

Gjennomfør et enkelt produkt i starten, og legg utvidelser underveis. Ikke gå videre før gjeldende utvidelse er relativt ferdigstilt.

Ha en ryddig oversikt over gjennomførte oppgaver, oppgaver man holder på med og målsettinger og oppgaver som må gjøres

Smidighet er viktig, å gjennomføre endringer til det bedre krever mindre energi enn å fortsette med noe som har kurs mot helvette

# data[].attributes.body
Bakgrunn:
Har lært Python, Java, HTML5, CSS, JavaScript. Utført IT1901 som har gitt erfaring med
programvareutvikling i grupper.

Lag overordnede mål først om hva programvaren skal oppfylle, og deretter
lag mer tydelige spesefikke mål som man kan jobbe mot for å komme i mål
med de større generelle målene. Fordel arbeidsoppgaver på gruppen med tanke
på styrker og svakheter innad i gruppen men la det være rom for at man
kan hjelpe hverandre. Det er ofte bra å lage en gruppekontrakt da man får en enighet om
hvordan man vil jobbe sammen og alle kan samarbeide bedre slik. Det kan være brukbart
å velge en leader spesielt hvis man skal bruke SCRUM da det kan hende man må ha noen
til å ta vanskelige avgjørelser raskt. Vær fleksibel med andre gruppemedlemmer og
om man eventuelt er leder så må man ta innspill i betraktning.

# data[].attributes.body
1.
Råd jeg ville gitt er ferskt team som skal utvikle programvare.
- Fordel ansvarsområder godt, hva forventes det at hver enkelt jobber med og har ansvar for. Avklar også hva som er prosessen dersom ikke noen gjennomfører det de har ansvar for, og vær tidlig ute med å si ifra dersom man opplever at noen ikke gjør sitt. Da har man god tid til å endre på ddet, og man kan unngå at det blir en større konflikt.
- Bruk mye tid på å diskutere hva man vil lage i plenum. Det er fint å tidlig oppdage problemer med en plan enn etter det er gjort. I tillegg vil man da ha bedre oversikt over hva andre jobber med, slik at dersom utvikling skjer parallelt så vil det fungere godt sammen når man eventuelt syr det sammen.

2.
min erfaring baserer seg i hovedsak på fagene Objektorientert programmering og IT prosjektarbeid 1. I begge fagene jobbet jeg sammen med andre for å utvikle et program, hhv. 1 og 4 andre. Begge opplevelsene gav god innsikt i hvor nyttig det er å planlegge godt hvordan utviklingen skal gjennomføres, fordi det fungerte tidvis litt "dårlig". Mye opprydding som følge av dårlig planlegging, og i sistnevnte også e viss grad av konflikt som følge av dårlig samarbeid.
Jeg synes i seg selv det er spennende å lære om hvordan man kan sørge for godt samarbeid i grupper, fordi jeg har opplevd båded hvor godt det kan fungere og hvor frustrerende og ødeleggende det kan være dersom ikke.

# data[].attributes.body
Hold ting enkelt, skriv deklarativ kode i stedet for imperativ kode så langt det er mulig. Mindre og enklere kode = mindre ting som kan gå galt

# data[].attributes.body
- Fordele oppgaver slik at alle gjør tilnærmet like mye arbeid.
- Viktig å forstå oppgaven/kravene skikkelig
- Lag en god kontrakt
- Ikke lag det til mer jobb enn nødvendig.
- Jobb jevnt gjennom semesteret, ikke utsett.

# data[].attributes.body
Start med forventningsavklaring
Lag så rutiner for fast møtetid
Lag god kultur på at folk kan si “jeg forstår ikke dette” og “jeg er stuck med dette”, men samtidig vær klar på at man prøver å få til ting selv

# data[].attributes.body
-          Sørg for at alle er på samme side. Bruk tegninger, illustrasjoner og diskusjoner ofte. Superlett å misforstå/feiltyde.

-          Lag først en systemoversikt som viser moduler og hvordan de skal kommunisere.

-          Lag en grov tidsplan for å holde en viss fremdrift.

-          Lag en liste med oppgaver som holdes oppdatert, slik at alle vet hva som må gjøres og kan velge seg en oppgave.

-          Testbarhet er viktig

# data[].attributes.body
Fordel oppgaver slik at alle har noe å gjøre til enhver tid.

Sørg for at alle utviklerne på gruppa har nødvendige ferdigheter innenfor versjonskontroll (Git). Bli enige om en arbeidsflyt angående branching etc.

Strev etter så enkle løsninger som mulig, og dokumenter kode underveis slik at den er lett forståelig for alle i teamet.

Start med å utvikle et Minimum Viable Product, og utvid gradvis.

Skriv tester fra start, gjerne før funksjonaliteten faktisk implementeres.

# data[].attributes.body
Meg:
Har jobbet en del med programmering i forbindelse til CS utdanning. Har jobbet i ett programvare utviklingsprosjekt før IT1901.
Har noe erfaring fra utviklingsprosjekt og ledelse tidligere som ikke var IT men likevel inneholdt nyttig erfaring.

Råd:
Sett av god tid til uforutsette problemer, ting tar tid
Bruk scrum og elementer fra agil utvikling, men ikke slaving. Fjærn elementer dere føler ikke fungerer.
Organiser milepeler i sprints (2-3 uker) og ha gjevnlige møter.
Vurder bruk av versjonskontroll og produkt spessifikajsoner før start av arbeidet starter.
Tenk litt arkitektur og lag før man starter å skrive kode, men lag en funerende prototype så fort som mulig.
Prototypen kan itterativt forbedres underveis.

# data[].attributes.headline
Planlegg nøye Diskuter vanskeligheter Planere tester/hvordan produktet skal 🤬 arbeidsfordeling Forventninger og skyldigheter til gruppen 

# data[].attributes.subject
Planlegg nøye Diskuter vanskeligheter Planere tester/hvordan produktet skal 🤬 arbeidsfordeling Forventninger og skyldigheter til gruppen 

# data[].attributes.body
Bakgrunnskunnskaper:

Har programmert i Python i ca. 4 år og føler meg ganske sikker på dette.

Hovedsakelig hobbyprosjekter

Har laget et komplett programvaresystem før, med en annen

Har litt erfaring med arbeid i team fra IT1901

Har ganske god kjennskap til Java gjennom studier

Har brukt C++, TypeScript og andre objektorienterte språk

Komfortabel med å plukke opp nye teknologier

Råd til noen som skal lage programvare på 10 uker:

Kommuniser godt gjennom hele prosessen

Sørg for at alle er på samme side

Sørg for at alle skjønner hva som gjøres og hvorfor

Velg teknologi som er formålsmessig

Vær effektive og jobb jevnt gjennom hele prosessen

Få et bilde av hvor mye som må gjøres og når hva skal gjøres

Dette kan skje inkrementelt

# data[].attributes.body
Inkrementell forbedring på eksisterende løsning. Forsøk å ikke ha store bulker med kode som pushes på én gang, men heller flere små endring. Kombiner dette med CI / CD og automatisk testing ac hele tech stacken.

# data[].attributes.headline
Hvilke råd vil du gi til et ferskt team på 7 personer som skal lage et nytt programvareprodukt i løpet av 10 uker?

# data[].attributes.subject
Hvilke råd vil du gi til et ferskt team på 7 personer som skal lage et nytt programvareprodukt i løpet av 10 uker?

# data[].attributes.body
Ha en klart definert teamkontrakt, ha klare, konkrete forventninger til gruppemedlemmer. Skap et miljø der det er lov å stille spørsmål og lov å ta feil/ikke skjønne ting. Det er mye bedre å håndtere problemer/usikkerhet med en gang det dukker opp enn å vente.

Ambisjonsnivå er viktig. Det er viktigere å gjennomføre noe enkelt, enn å aldri bli ferdig med noe som er for krevende.

Jeg har fullført ITP1901 som ligner en god del på TDT4140.

# data[].attributes.body
Gjennomfør en forventningsavklaring og etablerer roller før dere starter. Ha en teamleader etablert først

# data[].attributes.body
Prøv å lage struktur --> blir rot --> fiks rot --> repeat

# data[].attributes.body
Egne erfaringer: Bachelor ØKAD, eget prosjekt startUpLab

Råd: Avklare ferdigheter, ambisjoner og forventninger. Benytte seg av relevante verktøy som eksempelvis scrum. Retrospektive møter. Scrum leder. Hva gikk bra hva gikk mindre bra, hva kan vi gjøre bedre til neste iterasjon. Bruk tid på kravspesifikasjon, da blir oppgaver mer tydelig og greiere å forholde seg til

# data[].attributes.body
Ha en klar visjon over sluttproduktet og bli kjent.

# data[].attributes.body
- Finn ut hverandres styrker, slik at du vet hvem du kan spørre om hjelp til hva.

- La alle prøve seg. Ikke bare la 'eksperten' fikse noe fordi hen kan det. Da lærer ingen noe nytt.

# data[].attributes.body
- Kommuniser tanker og ideer ofte og tydelig (bedre å fortelle for mye enn for lite)
- oppdater team på utviklingen/hvor man er i arbeidet regelmessig

# data[].attributes.headline
Få god oversikt over problemet og del problemene i delproblemer. Slik kan flere i gruppen gjøre et arbeid. Gå gjennom hver persons arbeid og få folk til å fortelle hva de har tenkt, når de har kodet problemet

# data[].attributes.subject
Få god oversikt over problemet og del problemene i delproblemer. Slik kan flere i gruppen gjøre et arbeid. Gå gjennom hver persons arbeid og få folk til å fortelle hva de har tenkt, når de har kodet problemet

# data[].attributes.body
Bakgrunn:
- Jobbet som webutvikler og data scientist ved siden av studier

Råd:
- Planlegging: Kom frem til en drøft av hvilke elementer som må bygges og diskuter frem deadlines rundt elementene.

- Finn ukentlig møtepunkt(er) der alle møtes for å oppklare problemer eller bare jobbe side om side.

- Forstå ferdighetsnivå og tildel oppgaver etter det.

- Ikke la enkeltpersoner ta for mye ansvar, da kan det være andre mister eierskap og dermed motivasjon for å jobbe med prosjektet.

# data[].attributes.body
Velg en leder: De trenger ikke ha noe mer makt enn andre medlemmer, men det lurt med en som har ansvar for å holde oversikt og passe på fremdrift i møter

Begrens omfanget fra start: Start med noe overkommelig og heller legg til senere.

Vær åpen for alle meninger: Innenfor rimelighetens genser bør alle komme til ordet. Så lenge det fortsatt er produktivt bør alle få sin mening eller sitt forslag hørt.

# data[].attributes.body
Jobb jevnt og trutt, ikke slit deg ut med sene kvelder
Etabler gode arbeidsvaner tidlig.
Hold god oversikt over progresjon og delmål
Diskuter ofte med resten av teamet

# data[].attributes.body
Et gruppemedlem er møteløder, som kan føre ordet.
Ha regelmessig møter.
Vær åpen og ærlig om problemer som oppstår.
Hjelp hverandre.
Invester like mye tid som resten av gruppa.

# data[].attributes.body
Start med det grunnleggende og gjerne så enkelt som overhode mulig for så å videreutvikle denne ideen etterhvert som det grunnleggende er på plass. Bruk god tid på gruppekontrakten for å finne ut hvor de forskjellige gruppemedlemmene står og hvilke forventninger man stiller til hverandre. Ha god dialog underveis (gjerne benytte scrum) på hvilke valg man tar, hva man har gjort og hva som gjenstår slik at man har kontroll på framgangen i gruppa og for å unngå urettferdighet mtp. arbeidsfordeling.

# data[].attributes.body
- Iterativ prosess

- Vurdere scrum, eller kanban

- Vurdere brukerhistorier

- Oppnå MVP raskt

# data[].attributes.headline
- Fokuser å få et fungerende MVP; iterer derifra med resterende tid.- Automatisk testing.- God kommunikasjon og statusoppdateringer. Sørg for at hele teamet har all nødvendig informasjon til enhver tid.

# data[].attributes.subject
- Fokuser å få et fungerende MVP; iterer derifra med resterende tid.- Automatisk testing.- God kommunikasjon og statusoppdateringer. Sørg for at hele teamet har all nødvendig informasjon til enhver tid.

# data[].attributes.body
Jeg går andreåret informatikk og har lest litt om temaet programvareutvikling av egen interesse. Råd som jeg ville gitt er at god kommunikasjon mellom teammedlemmer er viktig. Bruk tid på å forstå problemet, så lag konseptuelle modeller som kan brukes til å lage klasser.

# data[].attributes.body
Hvilke råd ville du gitt til et ferskt team på syv personer som skal lage et nytt programvareprodukt i løpet av 10 uker?

Sett regler for gruppa, skriv kontrakten nøye

Bruk av straffesystem som legger opp til trivsel (for eksempel at hvis man kommer sent må man kjøpe noe godt til resten

Ha faste møte/arbeidstidspunkter for å lage faste vaner i gruppa

# data[].attributes.body
Retrospektive møter er undervurdert viktige

# data[].attributes.body
Bygge kjennskap.

Smidig utvikling.

Ha gode kommunikasjonskanaler.

Gjør rede for inneværende kompetanse.

Respektere hverandre.

Samarbeidskontrakt.

Kontinuerlig dialog med produkteier.

Retrospektiv.

Hindre Hedgehog syndrome

# data[].attributes.body
Det enkleste er ofte det beste. Fokuser på å møte alle kravene, og ikke bli opphengt i små detaljer.

# data[].attributes.body
Spill på ens egne styrker så godt det lar seg gjøre. Hvis man er kjent med en stack, og klient er komfortabel med hva sluttproduktet ville blitt, gå for den stacken.

# data[].attributes.body
Velg enkle løsninger så langt det er mulig.

Ikke fokuser på optimalisering før det er nødvendig.

Man kan alltid forbedre ting senere, ikke vær redd, be agile.

# data[].attributes.body
Lag et notat som viser:
1. din egen bakgrunnskunnskap om programvareutvikling
2. råd du ville gitt til prosjektteamet