U programiranju, dve glave su pametnije od jedne

Milan Vukoje - 3. Decembar, 2014.

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…

Šta možete da uradite povodom toga?

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.

two-heads

Č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.

Ako je sve tako jednostavno, zašto onda ne radimo tako?

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.