IT Industrija
🔥 Najčitanije
🔥 Najčitanije
U jednom od prethodnih blog postova sam naveo stav da je komunikacija veoma važna za programere, da je možda čak od suštinske važnosti za uspešne timove. (Ovo, naravno, nije ograničeno samo na programere i programiranje, ali ću se zadržati na njemu budući da tu imam najviše profesionalnog iskustva.) U ovom članku bih hteo da dodatno
U jednom od prethodnih blog postova sam naveo stav da je komunikacija veoma važna za programere, da je možda čak od suštinske važnosti za uspešne timove. (Ovo, naravno, nije ograničeno samo na programere i programiranje, ali ću se zadržati na njemu budući da tu imam najviše profesionalnog iskustva.)
U ovom članku bih hteo da dodatno pojasnim taj stav dodajući mu sledeću smernicu: dve glave su pametnije od jedne. Drugim rečima, dve osobe će verovatno zajedno rešiti problem brže i bolje od samo jedne.
Da stavimo ovo u kontekst realnog radnog dana jednog programera: pokušavate da rešite neki problem, ne možete da pronađete dovoljno dobro rešenje ili da odlučite koju varijantu rešenja da izaberete ili kako da organizujete kod, niste sigurni da li će postojeće tehnološke osnove izazvati probleme…
Možete da se potrudite da se maksimalno fokusirate, možete da guglate rešenje ceo dan, možete da čupate kosu dok pokušavate da sabijete sve te informacije u svoju glavu odjednom…
Ili možete prosto da zamolite osobu pored vas da vam pomogne.
Često je dovoljno da pokušate da objasnite neki problem drugoj osobi pa da sami uvidite gde ste pogrešili. Ako ovo ne uspe, vaš kolega već ima tu prednost nad vama što će posmatrati problem koji rešavate iz drugog ugla.
Može se desiti da vaš kolega ima više iskustva sa takvim problemom ili da je upravo on napisao originalni deo koda. Možda je već rešio taj problem, možda je čitao nešto o tome po netu, ili možda zna da neko drugi u timu zna rešenje. Može se desiti i da je prosto pametniji od vas, što je opet sjajna stvar pošto je važno da se problem reši bez puno stajanja u mestu i da ste nešto naučili.
Ako sve navedene prednosti komuniciranja sa osobom pored vas ne reše problem u prva dva minuta, kolega i vi imate na raspolaganju moć brejnstorminga, kojim možete da razmotrite sva moguća rešenja koja imate na raspolaganju.
Fora sa programiranjem je ta da je ono veoma kompleksno, i da ako neki problem nije rešen 100% onda uopšte nije rešen. Ne možete reći mušteriji “Mogu da vam izvučem podatke koje tražite ali ne i da ih vam prikažem, da li možete da mi platite pola?”
Ponekad rešite 95% problema za par minuta, a onda se možete mučiti da rešite preostalih 5% danima. Možda vaš kolega ima 50% rešenja, koji u sebi sadrže i tih 5%.
Druga sjajna stvar u vezi sa ovim principom je što motiviše ljude da dele svoje probleme. Pored prednosti kolektivnog rešavanja problema, sjajan je kao način informisanja drugih o stanju projekta i deljenju znanja po problem -> rešenje šablonu. Ovako, neki programeri će se manje zaglavljivati rešavajući problem koji je neko drugi već rešio.
Pre par godina moj prijatelj Aleksandar Mirilović mi je dao sledeći savet — “Bez obzira na to koliko je projekat mali ili lak, nikada ne radi sam.” Na početku mi se ova ideja nije sviđala ali danas za mene predstavlja apsolutnu istinu.
U međuvremenu sam tokom dve godine radio na održavaju velikog projekta. Tokom ovog vremena sam naučio da ponekad tvoj kolega može da reši problem na kome radiš, gde bi bez te pomoći radio na njemu ceo dan.
Možda zbog našeg ega, zato što volimo izazove, ili zato što se plašimo da ne ispadnemo glupi.
A ipak, pravi izazov je da obavimo svoj zadatak na najjednostavniji način, najbrže što možemo i koristeći sve dostupne resurse, a kolega koji sedi do vas je najbliži i najprijateljskiji resurs koji ćete ikada imati. “Iskoristite” svog kolegu, i ne brinite, uskoro će i on deliti svoje avanture sa vama.
Programiranje je dovoljno teško, nemojte otežavati sami sebi, koristite svu pomoć koju možete dobiti.
Vukoje je ovaj post originalno objavio na engleskom ovde.
Objavio/la članak.
sreda, 3. Decembar, 2014.
Toma
sreda, 3. Decembar, 2014.
Rad u paru nije samo opcija vec treba da bude obaveza. Na taj nacin se rapidno ubrzava transfer tehnickog znanja i smanjuje gep u produktivnosti programera u jednom timu koji ne retko iznosi 1:10 pa cak i 1:20. Takodje rad u paru ce onemoguciti situaciju da samo jedan developer zna za odredjenu funkcionalnost ili deo koda. Za optimalan rezultat, rad u paru treba kombinovati sa jos nekoliko podjednako bitnih aspekata: 1. Definisanje obavezne strucne literature za sve clanove tima podeljenih po nivoima(novice, senior, expert) 2. Coding standard dogovoren i prihvacen od _svih_ clanova tima 3. Formalna inspekcija koda kako produkcionog tako i testova 4. Gajenje kulture pisanja testova koji pokrivaju sve kriticne delove koda Kako se prepoznaju firme koje ne sprovode ovo gore: 1. Uvek imaju bar jednog programera bez koga ne mogu 2. Cesto dolaze u situaciju da niko drugi osim "Pere" ne zna za funkcionalnost 3. Kontinurano odrzavaju gep izmedju produktivnosti programera gde oni losiji ni kroz nekoliko godina ne uspeju da stignu bolje cak ni do nivoa gde su bolji bili kada je losiji dosao u firmu 4. Programeri u timu godinama rade na proizvodu i ne znaju osnovne paterne, ne znaju sta su GRASP ili SOLID principi, ne znaju sta sta je dependency injection itd itd 5. Bugovi se vracaju, tjst. ponavljaju ... Ko je zainteresovan za detalje naci ce ih izmedju ostalog u antologijskoj knjizi Steve McConnell-a "Code Complete 2"
Dusko
sreda, 3. Decembar, 2014.
a ako nemamo kolege pri ruci/skajpu moze da posluzi i patkica :) http://en.wikipedia.org/wiki/Rubber_duck_debugging
Nikola
sreda, 3. Decembar, 2014.
Ziva istina. Lonely ranger nije uvek najbolje resenje i mnogo je lakse raditi stvari u timu ciji clanovi su voljni da pomognu jedni drugima :)