Szakmázzunk: milyen gyakran fagyasszunk kódot

Fúúú Nina, kellett Neked ilyen kedveset írni, most megtáltosodtam Na persze ez nem annyira szórakoztató post, de majd igyekszem.Szóval a kérdés: milyen gyakran fagyasszunk a Nagy Közösbe, ha sokan dolgozunk ugyanazon a kódon.KIváncsi vagyok ki mit mond. Mi most a cégnél az "agile" munkamódszert alkalmazzuk, ami azt írja, hogy minél gyakrabban, legjobb óránként. Én ezzel abszolút nem értek egyet: akkor fagyasztok, ha az adott feladat teljesen készen van, tesztelve, cakumpakk.Persze ehhez az is kell, hogy ne 2 hónapos legyen a feladat, mert akkor sokat kell mergelni - jó esetben. Rossz esetben meg már teljesen másképp néz ki a bent lévő kód.Vegyünk egy ellenpéldát (agile ellen): van egy 8 órás requiremented, mert annyinak kell lennie egy JÓ REQUIREMENT-nek (nálam már itt megbukik a dolog,mert nem mindent tudok felosztani 1 napos részekre). 1 óra múlva fagyasztok valamit. 2. óra elteltével rájövök, hogy de barom voltam... törölném, de szomszédom Töhötöm már felhasználta és beleírt valamit. Ha észreveszem,akkor szólok neki, aki ha jóindulatú, csak mosolyog, "nem baj, átírom szívesen a sajátomat" felszólalással, magába meg a "hüjjje p****, egy nő sem tud programozni" gondolattal kiszedi a kódját. Vagy észre sem veszem, hogy ő is hozzáírt, mert több sorral lejjebb van, vagy magát a függvényt hívta meg amibe én beletúrtam stb. Szóval kettőnk munkáját tettem tönkre vele.

2 comments:

  1. Nem bánom, táltosodj csak nyugodtan :D ;)

    ReplyDelete
  2. Szerintem komplett baromság óránként fagyasztani. Nem szabad, hogy időtől függjön az, hogy mikor teszed bele a sajátodat a közösbe. Csak értelmes, kerek egész dolgokat célszerű fagyasztani. A többi programozónak általában semmi kedve más szemetét nézegetni. Ha kész van, akkor lehet fagyasztani. Ha valaki félkész cuccot tesz be, azzal más munkáját nehezíti meg, esetleg lehetetlenné teszi akár az egész project tesztelését is, hiszen hibásan működik, vagy talán le sem fordul az, amit fagyasztott.

    Ez az "értelmes, kerek egész dolog" lehet akár egy apró hibajavítás, valami célszerű refaktorálás, az ikon színének búzavirágkékre ;-) változtatása, vagy egy nagyobb feature megvalósítása.

    Az agile módszerrel a szoftvert rövid időtartamú iterációkban fejlesztik. Minden iteráció végén egy működő termék keletkezik, amit a következő iteráció során továbbfejlesztenek. Arról azonban sehol nem olvastam, hogy óránként kéne commitolni/becsekkolni/fagyasztani az aktuális source control repository-ba (meg is lepődnék, ha valaki ilyet leírna). Mivel agile-ról van szó, az egyes imlementátorok által megvalósítandó feature-ök szükségszerűen picik, ezért valószínűleg nem fog egy hétig tartani, mire valaki fagyaszt egyet. Inkább pár óra, maximum egy-két nap. Ha mégsem sikerül ezen idő alatt fagyasztani, akkor arra természetesen nem az a megoldás, hogy szétkúrjuk a repository-t, mert "hát lejárt az idő, jaj istenem, mi lesz most?!". Nem. Hanem igyekszünk befejezni minél hamarabb, ha készen vagyunk fagyasztunk, és utána elgondolkozunk, hogy legközelebb hogyan lehetne ennél kisebb egységekre felosztani az elvégzendő munkát.

    Ha az a legfőbb érv az óránkénti fagyasztás mellett, hogy többen is dolgoznak ugyanazon a kódon, akkor erre azt tudnám mondani, hogy talán nem kéne nekik. Vagy ha már minden áron ugyanazon a kódon kell dolgozniuk, akkor indítsanak külön branch-et maguknak (amit, ha végeztek, bele-merge-ölnek a main branch-be), és ott nézegethetik egymás szemetét, ha ehhez van kedvük, de semmiképpen ne a main branch-et szemeteljék tele.

    Itt még esetleg előjöhet a kis apró bugfix-ek problémája. Valaki éppen benne van nyakig egy kódban (pl. egy új feature-t tesz bele, nevezzük featurist-nek), miközben egy apró bug-ot fixál meg valaki (nevezzük bugfixer-nek) ugyanabban a kódban. Ez esetben a bugfixer nyilván fagyaszt egyet a fixálás után, hiszen ő készen van. A featurist pedig időnként lekéri a legfrissebb változatot a repository-ból (na ezt viszont lehet sűrűn, akár óránként is ;-)), így a lehető leg-up-to-date-ebb marad. Ha conflict van, akkor természetesen a featurist dolga a conflict-ok feloldása, és majd ha készen van mindennel (feature + conflict-ok feloldása), csak akkor fagyaszt.

    Szerintem.

    ReplyDelete

Szia,
Itt hagyhatsz nekem üzenetet, dicséretet, leszúrást, szeretgethetsz virtuálisan, utálhatsz is :D
boci