Vad tänka på vid flerpersons hobbyprojekt

Permalänk
Medlem

Vad tänka på vid flerpersons hobbyprojekt

Hej där!
Jag läser Kandidatprogrammet i Datavetenskap där jag är inne på mitt andra år.
Tillsammans med 3 andra i klassen så har vi planer på att skapa ett lite större projekt,
antingen en app eller något program. Vad har vi inte kommit fram till ännu.

Men vi har ännu inte riktigt lärt oss hur det fungerar i arbetslivet, eller hur man gör när man skall blanda in flertalet
personer. Hittills har vi varit antingen själva eller i par. På två personer så kan man ju dela upp så en sköter det
grafiska och en logiken t.ex. Men hur kan man dela upp någonting i 4? Hur skall vi dela med oss av alla kod mer än
att man använder sig av github? Skapar man projekt där på något särskilt sätt när man är många personer t.ex?

Ge gärna så mycket tips som du bara kan komma på!

Visa signatur

10700K | NVIDIA RTX 3080

Permalänk
99:e percentilen

Ni behöver definitivt använda versionshantering; jag föreslår Git. Ni kommer vinna mycket på att använda Git "på riktigt" (till skillnad från git add .; git commit -m "Moar changez"; git push); jag rekommenderar git diff, git add -p, git show och att generellt ha en "whitelistapproach" när ni checkar in ändringar.

Ni lär vilja ha ert repo på en molntjänst (GitHub, GitLab, Bitbucket, …) – hur de skiljer sig från varandra och om det spelar någon roll för er vet jag inte riktigt. Jag har egentligen bara erfarenhet av GitHub och Azure DevOps, och för mig funkar det utmärkt att ha mina projekt på GitHub. Att arbeta tillsammans där är inte svårare än att skapa ett repo som man ger alla i gruppen rättigheter att pusha till.

Jag rekommenderar att ha någon typ av policy som hindrar er från att merge:a in åtminstone uppenbart dåliga ändringar (tänk syntaxfel, statiska typfel etc) i master, annars kommer ni garanterat råka göra det förr eller senare. Detta har GitHub utmärkt stöd för genom GitHub Actions – till exempel ser den här filen, tillsammans med en policy jag har satt i GitHubs GUI, till att all kod måste lintas, testas och byggas innan den kan merge:as. Rent praktiskt måste man – även jag! – skapa en branch, pusha den, skapa en PR baserad på den och vänta tills valideringsbygget gått igenom. Först därefter kan PR:en accepteras och merge:as.

Det kan även vara lämpligt att kräva att minst en annan person i gruppen godkänner varje ändring innan den kan merge:as. Att granska varandras ändringsförslag noggrant och seriöst tenderar att minska mängden dåliga ändringar som slinker in på master avsevärt.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem
Skrivet av kwame:

Hej där!
Jag läser Kandidatprogrammet i Datavetenskap där jag är inne på mitt andra år.
Tillsammans med 3 andra i klassen så har vi planer på att skapa ett lite större projekt,
antingen en app eller något program. Vad har vi inte kommit fram till ännu.

Men vi har ännu inte riktigt lärt oss hur det fungerar i arbetslivet, eller hur man gör när man skall blanda in flertalet
personer. Hittills har vi varit antingen själva eller i par. På två personer så kan man ju dela upp så en sköter det
grafiska och en logiken t.ex. Men hur kan man dela upp någonting i 4? Hur skall vi dela med oss av alla kod mer än
att man använder sig av github? Skapar man projekt där på något särskilt sätt när man är många personer t.ex?

Ge gärna så mycket tips som du bara kan komma på!

Beror på om ni arbetar fullstack i ett projekt eller om ni har det uppdelat. T.ex. om ni använder ett SPA som React och en backend i .NET så kan det ligga i separata repos. Krävs lite ytterligare konfiguration att komma igång med, men det kommer att underlätta då ni kan deploya kod för respektive del utan att hela applikationen behöver re-deployas.

Sen då man arbetar med git så är det vanligaste att man gör nya branches för varje feature så att man arbetar helt fristående från varandra. Sen då kraven för den lilla biten man hållit på med är färdig så gör man en pull request att man vill merga in den med dev. Då får andra utvecklare möjlighet att granska koden innan den mergas in. Det är också enklare att göra en rollback på en hel PR än att börja söka runt i en gemensam git-history log.

Det är också bra om ni skapar upp en board med tasks och krav på vad ni ska bygga. Det ger en tydligare bild på er vision och vad som faktiskt behövs för att nå dit. Kolla upp lite om Scrum, sen behöver man inte köra processen fullt ut då man labbar på hobbynivå. Men det är ett vanligt arbetssätt ute i arbetslivet, så lika bra att börja bli bekväm med det.

Skrivet av Alling:

Ni behöver definitivt använda versionshantering; jag föreslår Git. Ni kommer vinna mycket på att använda Git "på riktigt" (till skillnad från git add .; git commit -m "Moar changez"; git push); jag rekommenderar git diff, git add -p, git show och att generellt ha en "whitelistapproach" när ni checkar in ändringar.

Ni lär vilja ha ert repo på en molntjänst (GitHub, GitLab, Bitbucket, …) – hur de skiljer sig från varandra och om det spelar någon roll för er vet jag inte riktigt. Jag har egentligen bara erfarenhet av GitHub och Azure DevOps, och för mig funkar det utmärkt att ha mina projekt på GitHub. Att arbeta tillsammans där är inte svårare än att skapa ett repo som man ger alla i gruppen rättigheter att pusha till.

Jag rekommenderar att ha någon typ av policy som hindrar er från att merge:a in åtminstone uppenbart dåliga ändringar (tänk syntaxfel, statiska typfel etc) i master, annars kommer ni garanterat råka göra det förr eller senare. Detta har GitHub utmärkt stöd för genom GitHub Actions – till exempel ser den här filen, tillsammans med en policy jag har satt i GitHubs GUI, till att all kod måste lintas, testas och byggas innan den kan merge:as. Rent praktiskt måste man – även jag! – skapa en branch, pusha den, skapa en PR baserad på den och vänta tills valideringsbygget gått igenom. Först därefter kan PR:en accepteras och merge:as.

Det kan även vara lämpligt att kräva att minst en annan person i gruppen godkänner varje ändring innan den kan merge:as. Att granska varandras ändringsförslag noggrant och seriöst tenderar att minska mängden dåliga ändringar som slinker in på master avsevärt.

Utöver ovan nämnda så kan det tilläggas att sätta upp automatisera byggen och releases till en gemensam dev-miljö med en CD/CI pipeline, det underlättar mycket. Där finns t.ex. Github Actions eller Azure DevOps pipelines att kika på.
Då kan man sätta upp tasks som t.ex. att automatiserade tester ska köras varje gång någon mergar kod till dev, och att alla tester måste vara godkända för att koden ska få mergas.

Permalänk
Medlem

Vad som inte ännu rörts av svaren ovan är hur ni ska dela upp arbetet - det är inte svårt alls.

För att nämna hur vi jobbar på vårt jobb så kör vi sprintar (2 veckor). Inför varje sprint planeras in vad som ska göras och dessa delas upp i rimligt stora tasks. Sedan plockar man bara det man känner för att göra (om det inte finns vissa tasks man måste börja med för att "låsa upp" andra tasks).

Sen är det ju absolut att vissa är bättre på vissa saker eller gillar andra saker mer (exempelvis frontend) och glider då lätt över och tar dessa tasks och det kanske slutar upp lite så för er också. Men jag känner att det viktiga är att sätta er ner och planera för vad som ska göras.

Man kan börja större (User stories) och sedan dela upp det i mindre delar (tasks). Sedan är det bara att fylla på med idéer till backlogen. Så länge alla vet vad de jobbar på mha en board.

Jag använder Azure DevOps dagligen och det fungerar fint. Sitter jag hemma själv i något mindre projekt kör jag oftast Trello.

Hur ni exakt vill jobba kommer ni säkert fram till men det viktiga enligt mig är att ha ett gemensamt mål med planering samt använda en board så alla vet vad de andra jobbar med just nu.

Lycka till!

Permalänk
Medlem
Skrivet av Forsgren:

Vad som inte ännu rörts av svaren ovan är hur ni ska dela upp arbetet - det är inte svårt alls.

För att nämna hur vi jobbar på vårt jobb så kör vi sprintar (2 veckor). Inför varje sprint planeras in vad som ska göras och dessa delas upp i rimligt stora tasks. Sedan plockar man bara det man känner för att göra (om det inte finns vissa tasks man måste börja med för att "låsa upp" andra tasks).

Skrivet av zaibuf:

Det är också bra om ni skapar upp en board med tasks och krav på vad ni ska bygga. Det ger en tydligare bild på er vision och vad som faktiskt behövs för att nå dit. Kolla upp lite om Scrum, sen behöver man inte köra processen fullt ut då man labbar på hobbynivå. Men det är ett vanligt arbetssätt ute i arbetslivet, så lika bra att börja bli bekväm med det.

Jag förklarade det bara inte djupgående utan hänvisade till att läsa på om scrum.

Permalänk
Medlem
Skrivet av zaibuf:

Jag förklarade det bara inte djupgående utan hänvisade till att läsa på om scrum.

Jag missade det helt! My bad.