Git za solo developere: zašto ga trebaš koristiti i kada radiš sam

Kroz godine rada i razvoja više desetaka softverskih proizvoda često sam se susretao s otporom prema korištenju Git-a kod, solo, developera.

Pod solo developerom smatram osobu koja je sama odgovorna za neki softverski proizvod, neovisno radi li se o freelanceru ili zaposleniku tvrtke.

Izgovor je gotovo uvijek isti: „Radim sam, znam što radim. Git mi ne treba. Git je gubljenje vremena.“

I mogu to razumjeti, barem kratkoročno. Ako si jedini developer, nema konflikata, nema pull requestova i nema potrebe za koordinacijom. Sve odluke donosiš sam.

Osim toga, i bez Git-a, previše je alata koje je tijekom razvoja potrebno koristiti da nije neobično neki od njih preskočiti. Ipak, gubljenje vremena, češće pogreške, ne zna se gdje je zadnja verzija i sl. problemi su koji bespotrebno nastaju takvim načinom rada.

Ali što se događa kada dođe do zaborava, brzopletih odluka ili problema koji se ne vide odmah? Tu Git prestaje biti “alat za timove” i postaje rješenje.

Git kao sigurnosna mreža

Ako ne koristiš Git, vrlo brzo se nađeš u poznatoj situaciji:

“Samo ću malo refaktorirati ovaj dio…”
“Ma zapamtit ću kako je bilo prije.”

Naravno da nećeš. I onda se nađeš u panici kako ručno vratiti ispravnu verziju.

Git ti daje mogućnost da u svakom trenutku kažeš: ovo je stanje s kojim sam zadovoljan. Commit je checkpoint. Ako nešto pođe po zlu, povratak traje nekoliko sekundi. Bez kopiranja foldera, bez ZIP arhiva i bez kreativnih naziva tipa projekt_zadnja_verzija_v3.

Pamćenje je nepouzdano

Danas znaš zašto si nešto napravio. Za tjedan dana još možda. Za nekoliko mjeseci vrlo vjerojatno ne.

Tu Git postaje više od alata za verzioniranje. Postaje dnevnik odluka. Dobra commit poruka ne bilježi samo što je promijenjeno, nego zašto. Nema nagađanja i gubitka vremena.

Razlika je ogromna:

Loše:

zadnja verzija

Bolje:

fix: popravak API endpointa za na login formi

Druga poruka ti i nakon pola godine daje kontekst koji iz koda više nije očit.

Primjeri commit poruka

Ne treba si nametati nikakav strogi standard. Dovoljna je jednostavna struktura u obliku:

<tip>: kratki opis promjene

Nekoliko tipova:

  • feat – kad se dodaje nešto novo feat: dodana autentikacija korisnika
  • fix – kad se popravlja bug fix: ispravljen krivi izračun ukupne cijene
  • refactor – kad se čistim kod bez promjene ponašanja refactor: pojednostavljena logika validacije
  • chore – tehničke i pomoćne promjene chore: update dependency-ja

Poanta nije u pravilima, nego u tome da se kasnije možete brzo snaći u povijesti projekta bez pogađanja.

Korištenje commit poruka kao što je “zadnja verzija” ne govori ništa, nema smisla i poništava svrhu Git-a jer on nije mjesto za backup.

Lakše održavanje i rješavanje bugova

Kad se bug pojavi, a pojavit će se, Git povijest ti omogućuje da vidiš kada je problem uveden, što se točno promijenilo i u kojem kontekstu je odluka donesena.

Čak i git blame prestane biti neprijatelj. Istina, često pokaže prstom u tebe samog iz prošlosti, ali barem znaš gdje tražiti rješenje.

Jednostavan Git workflow za solo developera

Kad radiš sam, ne treba ti ništa komplicirano. Ovo mi se pokazalo sasvim dovoljnim:

  • main – stabilna verzija projekta
  • feature branch-evi po potrebi

Primjer:

main
 └── feature/login
 └── feature/payment

Flow je jednostavan: napraviš branch, radiš promjene, commit-aš male cjeline, merge-aš u main i obrišeš branch.
Čak i kad si sam, branch-evi ti daju slobodu da eksperimentiraš bez straha da ćeš razbiti stabilnu verziju.

Priprema za budućnost (i timski rad)

Možda danas radiš sam. Ali sutra se stvari mogu promijeniti kada projekt naraste, dođe novi developer ili klijent želi uvid u povijest rada.

Projekt s jasnom Git poviješću lakše je razumjeti, lakše održavati i djeluje profesionalnije. A čak i ako se ništa od toga ne dogodi za šest mjeseci si već “drugi developer”.

Git kao profesionalna navika

Git je industrijski standard. Korištenjem Git-a i na solo projektima gradiš disciplinu, olakšavaš si kasniji rad u timu, a tvoji projekti izgledaju zrelije i promišljenije.

Repozitorij bez povijesti izgleda kao gotov proizvod bez konteksta. Repo s dobrom poviješću pokazuje proces i način razmišljanja.

Zaključak


Ako želiš biti ozbiljan developer, Git nije opcija on je standard. Git je alat koji ti omogućuje da radiš opuštenije, sigurnije i dugoročno pametnije.

Napravi git init, piši smislene commit poruke i tretiraj Git kao svog najpouzdanijeg suradnika.

Dev Talks: Git Happens – Release Management best practices

U četvrtak, 19.12.2019. u 18h u Caffe Bar Pepermint održalo se CodeCAMP predavanje na temu Git Happens – Release Management.

Release management je koordinacija svih aktivnosti potrebnih za uspješnu isporuku softvera kupcima/klijentima. Kako bi se čitav proces automatizirao potrebno je koristiti Version Control.

Version Control omogućava:
– stvaranje/pokretanje/testiranje bilo koje ranije verzije softvera
– paralelni razvoj
– kontinuirano praćenje promjena u programskom kodu (tko ih je i kada napravio)
– jednostavnije prepoznavanje i ispravljanje grešaka

Dev Talks: Git Happens – Release Management best practices
Izvor: Tomislav Bilić, Inchoo

Version Control sustavi: Git, Visual Studio Team System TFVC, CVS, Subversion SVN, IBM Rational Clearcase, Mercurial, Fossil,…

Git provjerava koje datoteke su promijenjene uspoređujući glavni Git repozitorij s lokalnom kopijom tj. radnim direktorijom koji se nalazi na računalu developera. Služi kao “sigurnosna mreža” tijekom razvoja jer se u svakom trenutku moguće vratiti na posljednju verziju koja je funkcionalna.

Nema ozbiljnog developmenta bez korištenja Gita

ZIP-anje projekata i ručno kopiranje nisu ništa drugo nego guranje glave u pijesak. U svakom ozbiljnom developmentu potrebno je koristiti Git.

push i pull nisu Git, ali su dobar početak. Ne moraju svi developeri i sve tvrtke odmah krenuti kao grlom u jagode kako bi u roku odmah iskoristiti sve što Git nudi i više je nego dobro uopće krenuti s njegovom upotrebom.

Osobno, to mi je jedan od boljih načina za upoznavanje novih developera s praksom korištenja Gita jer nakon što probaju push-pull ne prođe dugo dok sami ne uvide koje su sve prednosti toga i onda već sami krenu istraživati i predlagati rješenja kako bi optimizirali svoje radno okruženje. To sve pod uvjetom da zaista žele napredovati kao developeri.

Bernardin je spomenuo svoje iskustvo prilikom zapošljavanja gdje se developer prijavio za senior poziciju, a bez znanja korištenja Gita. To definitivno nije smjer kojim bi developer trebao ići ako želi biti ili ostati, senior, developer.

Dev Talks: Git Happens
Izvor: Osijek Software City Facebook page

Vlatko radi na agencijski način s više projekata paralelno dok Bernardin razvija vlastita rješenja. Prema tome i Git koriste na različite načine. Zaključak bi bio da svaka tvrtka treba pronaći svoj način korištenja jer nisu sve tvrtke i developeri jednaki, a bome niti projekti.

Dev Talks: Git Happens
Izvor: Osijek Software City Facebook page

Službena najava predavanja:

U četvrtak, 19.12.2019. u 18h u Caffe Bar Pepermint će se održati CodeCAMP predavanje na temu Git Happens – Release Management best practices. Predavači su šarmantni dvojac Bernard Katić i Vlatko Vlahek.

O čemu će Bernard i Vlatko pričati na predavanju?
Za razvoj svakog ozbiljnijeg sustava nužno je imati dobro razrađene prakse code branchinga/release managementa. Na ovome predavanju, predavači će govoriti o načinima kako iskoristiti Git za release management koji neće dovesti do noćnih mora, uz gomile konflikata, bugova koji iskrsnu, prepisanog koda i drugih stresnih situacija svaki puta kada treba napraviti “merge” različitih “brancheva” koda prije releasea. Usporedit će različite pristupe (Release Flow, GitHub Flow,…) i njihove prednosti, mane te podijeliti iskustva iz prakse.

Nešto više o predavačima
Bernardin se nakon uzbudljivih i zabavnih profesionalnih početaka na razvoju računalnih igara u assembleru, diplome na područuju operacijskih sustava realnog vremena te izazovnog razvoja ekspertnih sustava, zadnjih godina posvetio puno manje zabavnom, ali i dalje vrlo izazovnom dizajnu i razvoju sustava za financijsku industriju te njihovoj integraciji u enterprise okruženjima. U predahu od svakodnevnog posla vodi Ms Community. Razvoj igara ga je naučio da je svaki byte i svaki takt procesora bitan, pa mu je najveće zadovoljstvo optimizirati sustave te iskoristiti sve raspoložive resurse i postići da sustavi rade brže, bolje i kvalitetnije. Kao svaki pravi Slavonac, zaljubljenik je u skijanje, a u slobodno vrijeme nastoji poboljšati time management i provesti što više vremena s obitelji. Bernardin je nagrađen od strane Microsofta nagradom MVP – Most Valuable Professional za Visual C#/.net/Visual Studio and Development Technologies.

Vlatko je CTO/Co-Founder u tvrtki Prototyp, interface agenciji iz Osijeka. Trenutno radi kao System Architect fokusiran na JavaScript, ReactJS and .NET Core (C#, F#). Ponosni je član udruga Osijek Software City i Ms Community u Osijeku. Obožava pivo i kulen, a njegov opis je kraći od Bernardovog ne zato što ga autor najave ne voli, već zato što je poslao kratku biografiju. 🙂

Sudjelovati na predavanju mogu svi zainteresirani, potrebno je samo prijaviti se i ispuniti svoje podatke.

Vidimo se! 🙂

https://softwarecity.hr/event/git-happens-release-management-best-practices/