Kako postati bolji programer — komunikacijom?

„Programeri bi bili mnogo srećniji kada bi u izgradnju ličnosti uložili isti trud kao za učenje tehnologije.”

Stefan Alidini
19/05/2021

Tekst programera Džona Kernsa koji ovde prenosimo bavi se problemom komunikacije koji se često javlja u radu sa softverskim inženjerima. Autor pruža razloge zašto programeri treba da se bave pitanjem komunikacije, koja je poenta toga, i kakvu korist od nje mogu imati. Uz to pruža i primere iz lične prakse i nudi preporuke koje programerima mogu biti prijemčive.

***

Pravljenje softvera nije uvek lako. Sačekaću sekund dok upijete ovu veliku mudrost. Ukoliko uživate u poslu i stalo vam je do njega, imaćete prirodan impuls da sve više učite kako biste postali što bolji programer. To u stvari i nije tako teško: internet je ogromna riznica znanja sa bezbroj tutorijala, blogova, prezentacija i alata za interaktivno učenje koji se bave samo kodiranjem. Suština je sledeća: ako znate šta želite da naučite, brza pretraga na Guglu će vam skoro svaki put dati ono što vam je potrebno za početak, a sve ostalo je na vama i na trudu koji ste spremni da uložite.

Šira slika

Međutim, pojedine zajednice softverskih inženjera postale su svesne problema koji je mnogo veći od veštine programiranja. To je problem koji se često zapostavlja, teško ga je kvantifikovati, segmenti problema se teško naziru, ali je podjednako važan, ako ne i važniji za uspeh timova, projekata, i pojedinaca koji rade na softveru. To je pitanje rada s ljudima, ili jednostavno rečeno, komunikacije. Ako posedujete sposobnost rada s drugima, sposobnost da u zavisnosti od situacije predvodite ili pratite nekog drugog, i sposobnost da svoje ideje prenesete jasno i saosećajno, onda imate nešto što je kudikamo vrednije od znanja programiranja ili radnog iskustva.

Moj rezon je jednostavan. Programersko znanje je široko dostupno i lako ga je steći, dok se iskustvo stiče samo vremenom. Međutim, sposobnost da se povežete s drugim ljudima će se poboljšati samo uz svesni napor, a proces može da zahteva dosta žrtvovanja s vaše strane, a možda i promenu ličnosti. Iako ima dosta alata za razvijanje međuljudskih veština, one često nisu vezane direktno za ekosistem programiranja. Želim to da popravim, i da pokažem da su one ključne za dobrog developera.

Oduvek sam visoko vrednovao dobru komunikaciju i socijalne veštine. Povrh toga, nedavno sam počeo da čitam klasik Kako zadobiti prijatelje i uticati na ljude. Ovaj članak je inspirisan i umnogome se zasniva na toj knjizi, a sadrži i određen broj citata. Svakome bih preporučio da je pročita, jer je ovaj članak samo bledi sažetak principa koji se mogu pronaći u knjizi.

Evo 5 principa koje sam počeo da primenjujem u svom svakodnevnom životu, ali naročito kada sarađujem s drugima u svojstvu softverskog inženjera:

  1. Birajte ohrabrenje pre kritikovanja
  2. Budite skromni
  3. Stavite se na tuđe mesto
  4. Stvarajte naviku da budete pozitivni
  5. Slušajte druge

Hoću da prođem redom kroz sve tačke, ali pre toga želim da se pozabavim pitanjem koji su neki verovatno već postavili.

Koja je svrha?

Pošteno pitanje. Koja je to praktična korist od poboljšavanja veština komunikacije? Rad na veštinama programiranja daje lako vidljive rezultate, ali nije lako videti neposredan efekat rada na međuljudskim veštinama.

Svaki softverski inženjer koji je zaposlen mora da radi s ljudima. O programiranju obično razmišljamo kao o interakciji između čoveka i mašine, što je tačno. Ali krajnji softver je u potpunosti proizvod ljudi. U te ljude spadate i vi, i drugi programeri u timu, menadžeri, korisnici, klijenti i vlasnici. Džoš Saser, jedan od panelista na Ruby Rogues, kaže da je „programiranje posao s ljudima”, i time je hteo da kaže da su dobre veštine komunikacije ključ za dobro obavljanje tog posla.

Možda imate sjajne ideje kako da softver koji razvijate uspe, ali dobre ideje same po sebi nisu dovoljne. Morate biti u stanju da svoju ideju prenesete na način koji će drugima pomoći da razumeju vaše stanovište i inspirisati ih.

Možete gledati na druge ljude kao na napasti koje samo smetaju vašim programerskim veštinama, ili u njima videti vrednost koju pružaju perspektive i gledišta koja se razlikuju od vaših.

Ako hoćete da vas na poslu primete, da imate veći uticaj i da vas unaprede — budimo iskreni, to je bitan faktor — onda naučite kako da dobro sarađujete s ljudima, i pozitivno utičite na svoje okruženje. Postoji delimično opravdan stereotip, da mnogi programeri nemaju razvijene socijalne veštine, da su izolovani i nezainteresovani za sve što u sebi nema silikonski čip. Ako je to tako, siguran način da budete primećeni jeste da ne odgovarate tom stereotipu.

Verujem da svako može da poboljša način na koji se ophodi prema drugima, i da to nije područje kojim vladaju samo ekstroverti. Na primer, lično sam popriličan introvert, ali ne vidim to kao faktor koji utiče na moju sposobnost da razumem i shvatim druge. Evo (nepotpunog) spiska od nekoliko principa za koje se nadam da će vam biti od koristi pri radu s ljudima.

Svi citati su iz knjige Kako zadobiti prijatelje i uticati na ljude.

1. Birajte ohrabrenje pre kritikovanja

Lepa reč daje nam emotivni podstrek, a daje nam i podsticaj da ponavljamo ponašanje koje je dovelo do ohrabrenja. Znam nekoliko ljudi koji samo hrabre druge, i često želim da sam konstantno u njihovoj blizini — njihova pozitivnost je kao magnet. S druge strane, kritika, mada često može da bude prirodniji odgovor, apsolutno demotiviše.

Kritika je uzaludna jer tera drugu osobu da se brani i ona obično teži da se nekako opravda. Kritika je opasna, jer udara na ponos, umanjuje važnost druge osobe, i pobuđuje resantiman.

U kontekstu razvijanja softvera, kod nas u Green Gorilla Apps svaki dan pregledamo kod jedni drugima preko pull zahteva. Kao recenzent, svako bira da li će da ohrabri ili urniše drugu osobu. Ako se stalno komentarišu samo negativne stvari, pull zahtevi će postati mučan i strašan zadatak. Komentarisanje dobrih delova koda ne košta ništa, a to potencijalno može mnogo da znači osobi koja je napisala kod.

Ne kažem da povratne informacije nisu važne. U stvari, one su ključne za dobro funkcionisanje tima. Međutim, postoje načini da se povratna informacija prenese i da bude inspirativna i da ne demotiviše primaoca, što je materijal za sasvim drugi članak. Ključno je upamtiti da treba da bude više pozitivnih od negativnih komentara.

Još nisam upoznao nijednog programera koji nema neku nesigurnost oko svoje programerske veštine, i to čini pregledanje koda potencijalno napetom situacijom. Ako postanete poznati po ohrabrivanju pre nego po kritici, drugi će radije hteti da čuju vaše mišljenje i uče od vas.

Hajde da prestanemo da razmišljamo o našim dostignućima i željama, i da probamo da shvatimo dobre poente koje neko drugi ima. Zaboravite i laskanje, i pružite iskreno i pošteno razumevanje. Budite „srčani u odobravanju i izdašni u pohvalama” a ljudi će ceniti vaše reči, pamtiti ih i ponavljati ih čitavog života — čak i godinama nakon što ih vi zaboravite.

2. Budite skromni

Iako smo svi nesigurni povodom veština programiranja, paradoksalno imamo isto toliko ponosa i ega. Ponekad je teško prihvatiti kritiku i često se javlja instinkt odbrane, bez obzira na to da li je kritika na mestu. Ako stvarno želite da napredujete kao programer, morate biti u stanju da prihvatite kritiku. Čak i ako na prvu loptu pomislite da ona nije validna, iskoristite priliku da se stvarno zapitate. Ako smatrate da je vaš kod savršen, varate se: tako nešto ne postoji. Prihvatite savet, pažljivo ga razmotrite, i ako se i nakon toga ne budete slagali (i budete mogli da objasnite zašto), porazgovarajte sa osobom koja vam je uputila kritiku.

Primer sa pull zahtevima je i ovde od koristi, ali ovog puta iz perspektive onog čiji je kod. To je jako ranjiva pozicija, pokazivanje svog koda drugim ljudima. Impulsivne reakcije na negativne komentare prave napetu atmosferu i to naročito može da obeshrabri juniore. Ovo kažem iz iskustva: pokušajte da stvarno razumete gledište druge osobe kada ona pruža povratnu informaciju. Nekoliko puta sam se našao u neprijatnoj situaciji, gde sam se raspravljao sa nekim, apsolutno ubeđen da sam u pravu, da bih na kraju shvatio da mi je potpuno promaklo nešto što je druga osoba odmah primetila.

Takođe, naučite kako da prihvatate povratne informacije od programera koji imaju manje iskustva od vas. Automatsko ignorisanje drugih osoba na osnovu sposobnosti može sasvim da ih obeshrabri, a vas izlaže mogućnosti da se nađete u veoma ponižavajućim situacijama.

Kada imamo pravo, pokušajmo da pažljivo i taktično pridobijemo ljude za naš način razmišljanja, a kada nemamo pravo — a budimo iskreni, to će se događati prilično često — priznajmo greške brzo i sa entuzijazmom. Ne radi se samo o tome da će ova tehnika proizvesti sjajne rezultate, verovali ili ne, to je u datim okolnostima mnogo zabavnije od pokušaja da se opravdate. 

3. Stavite se na tuđe mesto

Kad god radimo s drugima, neizbežno ulazimo u sukobe. Različita životna iskustva vode do različitih perspektiva pa samim tim i različitih mišljenja. Jedan od načina da se „pobedi” u raspravama je da se agresivno zastupa sopstvena strana, dok se svi ostali ne povuku. Igrom slučaja, ovo je super način da se izgube prijatelji.

Alternativa ovome je da se stvari sagledaju iz perspektive drugog. Zašto je druga strana tako ostrašćena povodom te teme? Šta ih je dovelo do zaključaka? Ispitajte ih kako biste stekli širu sliku — to često može da pomogne da se razreši rasprava. Možda mislite da znate sve, ali pokušaj razumevanja stanovišta neke druge osobe može da vam ukaže da niste u pravu. A njima će pokazati da vam je stalo do njihovog mišljenja, i mirno razrešenje će biti mnogo verovatnije.

Neslaganja oko softvera su česta, jer često ima mnogo načina da se napravi funkcija ili popravi bag, a programeri će se kleti u jedan pristup ili kuditi drugi, jer su prethodni pokušaji uspeli ili propali. Umesto toga što držite svoje ideje za svetinju, budite otvoreni za mogućnost da nemate odgovor na sve. 

Umesto da osuđujemo ljude, hajde da pokušamo da ih razumemo. Pokušajmo da shvatimo zašto rade to što rade. To je mnogo svrsishodnije i intrigantnije od kritike, i stvara saosećajnost, toleranciju, i ljubaznost. „Ko zna sve, sve i prašta.” Rečima dr Džonsona: „Gospod lično, dragi gospodine, ne sudi ljudima pre svršetka njihova života.” Zašto bismo mi to činili?

4. Stvarajte naviku da budete pozitivni

Najviše volim da sam okružen ljudima koji se trude da budu optimistični. Nasuprot tome, trudim se da izbegavam ljude koji su stalno pesimistični. Negativnost iscrpljuje i zarazna je, a pozitivnost hrabri i bodri. Međutim, praktični optimizam neće slepo ponavljati „sve će to biti super” kad se suoči sa izazovima, već predstavlja sposobnost da se nastavi dalje bez gubljenja nade, i sposobnost da se drugi povedu.

Lično sam našao da biti pozitivan predstavlja izbor, i da nije u pitanju rezultat okolnosti. Kada produkcijski server padne uoči predstavljanja panelu investitora, razume se da to ne valja. Optimistični odgovor bi paniku pretvorio u pozitivno delanje i momentalni početak rada na popravci servera, dok negativni odgovor (npr. „ŠTO JE OVO SAD MORALO DA SE DESI!?”) parališe. Pozitivni stav je jedna od suštinskih odlika lidera, i usvajanje tog stava na poslu će sigurno promeniti način na koji se ljudi prema vama ophode.

Svako na svetu traži sreću — postoji siguran način da se ona pronađe. To je uspostavljanje kontrole nad mislima. Sreća ne zavisi od spoljašnjih okolnosti. Sreću ili nesreću ne određuje to šta imate, ko ste, gde ste, ili šta radite, već šta o tome mislite.

5. Slušajte druge

Svi smo se našli u ovoj situaciji: razgovaramo s grupom ljudi i neko nas preseče. Čovek tada ima izbor da nastavi da priča i tako unese zabunu u dalji razgovor, ili da se povuče uz osećaj kao da ga je neko zgazio. Jedan od najgorih osećaja je da nas niko ne sluša. Stoga, jedan od načina na koji ljudi mogu da se osete važnim i cenjenim je da ih prosto neko sasluša.

Možda kolega ima ideju kako da se pristupi novoj funkciji, predlog da se iskoristi druga tehnologija, a možda samo hoće da se požali. Saslušajte ga i nemojte da ga prekidate. Dajte svoje mišljenje tek kad on završi (a to može i da potraje), a i tad ponudite svoje mišljenje samo ako je neophodno. Ponekad ljudima ne treba savet, već samo da popričaju s nekim.

Ponekad je teško odupreti se nagonu da se umešate, pogotovu u grupnom okruženju, kao na sastanku za planiranje projekta gde svi misle da je okej da pričaju u isto vreme. Međutim, ako sačekate kada nastupi prirodna pauza — a to mora da se desi u nekom trenutku — ne samo što ćete ukazati poštovanje drugima, već ćete i sami delovati uviđavno, i kao neko ko pažljivo razmišlja.

Svako na svetu traži sreću — postoji siguran način da se ona pronađe. To je uspostavljanje kontrole nad mislima. Sreća ne zavisi od spoljašnjih okolnosti — zavisi od unutrašnjih. Sreću ili nesreću ne određuje to šta imate, ko ste, gde ste, ili šta radite, već šta o tome mislite.

Zato, ako težite da ovladate veštinom razgovora, naučite pažljivo da slušate. Da biste nekom bili interesantni, prvo budite zainteresovani. Postavljajte pitanja na koja će druga osoba s uživanjem hteti da odgovori. Podstaknite ih da pričaju o sebi i svojim postignućima.

Ovo je samo nekolicina stvari koje sam sebi postavio u zadatak da promenim. Verujem da bismo svi bili mnogo srećniji kada bismo u izgradnju ličnosti uložili isti trud kao za učenje tehnologije. Mislim da bi to poboljšalo i našu sposobnost učenja, jer bismo bili otvoreniji, pošteniji i da bismo lakše prihvatali validnu kritiku.

Stefan Alidini

Objavio/la članak.

sreda, 19. Maj, 2021.

IT Industrija

🔥 Najčitanije