Ljutnja na kod: programeri i negativnost

Ljutnja na kod: programeri i negativnost

Gledam dio koda. Ovo je možda najgori kôd koji sam ikada vidio. Za ažuriranje samo jednog zapisa u bazi podataka, dohvaća sve zapise u zbirci i zatim šalje zahtjev za ažuriranje svakom zapisu u bazi podataka, čak i onima koji se ne moraju ažurirati. Postoji funkcija karte koja jednostavno vraća vrijednost koja joj je proslijeđena. Postoje uvjetni testovi za varijable s naizgled istom vrijednošću, samo imenovane različitim stilovima (firstName и first_name). Za svako AŽURIRANJE, kod šalje poruku drugom redu čekanja, kojim upravlja drugačija funkcija bez poslužitelja, ali koja obavlja sav posao za drugu kolekciju u istoj bazi podataka. Jesam li spomenuo da je ova funkcija bez poslužitelja iz "uslužno orijentirane arhitekture" koja sadrži preko 100 funkcija u okruženju?

Kako je to uopće bilo moguće učiniti? Pokrivam lice i vidno jecam kroz smijeh. Pitaju kolege što se dogodilo, a ja prepričavam u bojama Najgori hitovi BulkDataImporter.js 2018. Svi mi sažaljivo kimaju i slažu se: kako su nam to mogli učiniti?

Negativnost: emocionalni alat u programerskoj kulturi

Negativnost igra važnu ulogu u programiranju. To je ugrađeno u našu kulturu i koristi se za dijeljenje onoga što smo naučili ("ti ne vjerovat ćeš, kakav je to kodeks bio!”), izraziti simpatiju kroz frustraciju (“Bože, ZAŠTO to učiniti?”), pokazati se (“Nikad ne bih tako nije to učinio”), svaliti krivnju na nekog drugog (“ni smo uspjeli zbog njegovog kodeksa koji je nemoguće održavati”), ili, kako je to uobičajeno u najotrovnijim” organizacijama, kontrolirati druge putem osjećaj srama ("O čemu si uopće razmišljao?" ? točno").

Ljutnja na kod: programeri i negativnost

Negativnost je toliko važna programerima jer je vrlo učinkovit način prenošenja vrijednosti. Jednom sam pohađao programerski kamp, ​​a standardna praksa usađivanja kulture industrije studentima bila je velikodušno opskrbljivanje memovima, pričama i videozapisima, od kojih su najpopularniji iskorištavali frustracija programera kada su suočeni s nerazumijevanjem ljudi. Dobro je moći koristiti emocionalne alate za prepoznavanje Dobrog, Lošeg, Ružnog, Nemojte to činiti, Nikada. Pridošlice je potrebno pripremiti na činjenicu da će ih kolege koji su daleko od informatike vjerojatno pogrešno shvatiti. Da će im prijatelji početi prodavati ideje za aplikacije vrijedne milijune dolara. Da će morati lutati kroz beskrajne labirinte zastarjelog koda s hrpom minotaura iza ugla.

Kada prvi put učimo programirati, naše razumijevanje dubine "iskustva programiranja" temelji se na promatranju emocionalnih reakcija drugih ljudi. To se jasno vidi iz objava u sabe Programer Humor, gdje se okuplja puno novih programera. Mnoge humoristične su, u ovoj ili onoj mjeri, obojene različitim nijansama negativnosti: razočaranje, pesimizam, ogorčenje, snishodljivost i drugo. A ako vam se ovo ne čini dovoljno, pročitajte komentare.

Ljutnja na kod: programeri i negativnost

Primijetio sam da kako programeri stječu iskustvo, postaju sve negativniji. Početnici, nesvjesni poteškoća koje ih čekaju, počinju s entuzijazmom i spremnošću vjerovati da je uzrok tih poteškoća jednostavno nedostatak iskustva i znanja; i na kraju će se suočiti sa stvarnošću stvari.

Vrijeme prolazi, oni stječu iskustvo i postaju sposobni razlikovati dobar kod od lošeg. A kada dođe taj trenutak, mladi programeri osjećaju frustraciju rada s očito lošim kodom. A ako rade u timu (na daljinu ili osobno), često preuzimaju emocionalne navike iskusnijih kolega. To često dovodi do porasta negativnosti, jer mladi sada mogu promišljeno govoriti o kodeksu i dijeliti ga na loše i dobro, pokazujući time da su “informirani”. Ovo dodatno pojačava negativno: zbog razočaranja je lako slagati se s kolegama i postati dio grupe; kritiziranje lošeg kodeksa povećava vaš status i profesionalizam u očima drugih: ljudi koji izražavaju negativna mišljenja često se percipiraju kao inteligentniji i kompetentniji.

Povećanje negativnosti nije nužno loša stvar. Rasprave o programiranju, između ostalog, izrazito su usmjerene na kvalitetu napisanog koda. Ono što je kôd u potpunosti definira funkciju koju treba obavljati (na stranu hardver, umrežavanje, itd.), stoga je važno moći izraziti svoje mišljenje o tom kodu. Gotovo sve rasprave svode se na to je li kodeks dovoljno dobar i na osudu samih manifesta lošeg koda terminima čija emotivna konotacija karakterizira kvalitetu koda:

  • "Postoji mnogo logičkih nedosljednosti u ovom modulu, dobar je kandidat za značajnu optimizaciju performansi."
  • "Ovaj modul je prilično loš, moramo ga refaktorirati."
  • "Ovaj modul nema smisla, treba ga ponovno napisati."
  • "Ovaj modul je sranje, treba ga zakrpati."
  • “Ovo je komad ovna, a ne modul, nije ga uopće trebalo pisati, što je, dovraga, njegov autor mislio.”

Usput, to je "emocionalno oslobađanje" zbog kojeg programeri nazivaju kod "seksi", što je rijetko pošteno - osim ako ne radite na PornHubu.

Problem je u tome što su ljudi čudna, nemirna, emocionalna stvorenja, a percepcija i izražavanje svake emocije mijenja nas: isprva suptilno, ali s vremenom dramatično.

Problematična skliska padina negativnosti

Prije nekoliko godina bio sam neformalni voditelj tima i intervjuirao sam programera. Jako nam se sviđao: bio je pametan, postavljao je dobra pitanja, bio je tehničar i dobro se uklapao u našu kulturu. Posebno me se dojmila njegova pozitivnost i koliko je izgledao poduzetno. I zaposlio sam ga.

U to sam vrijeme radio u tvrtki nekoliko godina i smatrao sam da naša kultura nije baš učinkovita. Proizvod smo pokušali lansirati dva, tri puta i još par puta prije nego što sam ja došao, što je dovelo do velikih troškova prerade, pri čemu nismo imali što pokazati osim dugih noći, kratkih rokova i proizvoda koji su radili. I premda sam i dalje marljivo radio, bio sam skeptičan oko zadnjeg roka koji nam je odredila uprava. I ležerno je opsovao dok je s mojim kolegama raspravljao o nekim aspektima kodeksa.

Stoga nije bilo iznenađujuće - iako sam bio iznenađen - da je nekoliko tjedana kasnije taj isti novi programer rekao iste negativne stvari koje sam ja učinio (uključujući psovke). Shvatio sam da bi se drugačije ponašao u drugom društvu s drugačijom kulturom. Jednostavno se prilagodio kulturi koju sam ja stvorio. Obuzeo me osjećaj krivnje. Zbog svog subjektivnog iskustva ulijevao sam pesimizam novopridošlici koju sam doživljavao potpuno drugačijom. Čak i ako doista nije bio takav i samo se pojavljivao kako bi pokazao da se može uklopiti, nametnula sam mu svoj usrani stav. I sve što je rečeno, čak iu šali ili usput, ima loš način da se pretvori u ono što se vjeruje.

Ljutnja na kod: programeri i negativnost

Negativni načini

Vratimo se našim bivšim programerima početnicima, koji su stekli malo mudrosti i iskustva: bolje su se upoznali s programerskom industrijom i razumjeli da je loš kod posvuda, ne može se izbjeći. Javlja se čak iu najnaprednijim tvrtkama usmjerenim na kvalitetu (i dopustite mi da primijetim: očito, modernost ne štiti od lošeg koda).

Dobar scenarij. S vremenom programeri počinju prihvaćati da je loš kod stvarnost softvera i da je njihov posao poboljšati ga. I ako se loš kod ne može izbjeći, onda nema smisla dizati buku oko njega. Oni idu putem zena, fokusirajući se na rješavanje problema ili zadataka s kojima se suočavaju. Oni uče kako točno mjeriti i prenositi kvalitetu softvera vlasnicima tvrtki, pisati dobro utemeljene procjene na temelju svog dugogodišnjeg iskustva i na kraju dobiti velikodušne nagrade za svoju nevjerojatnu i stalnu vrijednost za poslovanje. Rade svoj posao tako dobro da dobiju 10 milijuna dolara bonusa i odu u mirovinu kako bi radili ono što žele do kraja života (molim vas, nemojte to uzimati zdravo za gotovo).

Ljutnja na kod: programeri i negativnost

Drugi scenarij je put tame. Umjesto prihvaćanja lošeg koda kao neizbježnosti, programeri preuzimaju na sebe prozvati sve loše u svijetu programiranja kako bi to mogli prevladati. Odbijaju poboljšati postojeći loš kod iz mnogo dobrih razloga: “ljudi bi trebali znati više i ne biti toliko glupi”; "neugodno je"; “ovo je loše za posao”; “ovo dokazuje koliko sam pametan”; "Ako vam ne kažem kakav je ovo loš kodeks, cijela će tvrtka pasti u ocean" i tako dalje.

Sigurno nesposobni provesti promjene koje žele jer se posao nažalost mora nastaviti razvijati i ne mogu trošiti vrijeme na brigu o kvaliteti koda, ovi ljudi stječu reputaciju onih koji se žale. Zadržani su zbog svoje visoke kompetencije, ali su gurnuti na marginu tvrtke, gdje neće smetati mnogima, ali će i dalje podržavati rad kritičnih sustava. Bez pristupa novim razvojnim mogućnostima, gube vještine i prestaju ispunjavati zahtjeve industrije. Njihova se negativnost pretvara u gorku gorčinu, a kao rezultat hrane svoj ego raspravljajući s dvadesetogodišnjim studentima o putu koji je prešla njihova omiljena stara tehnologija i zašto je još uvijek tako aktualna. Na kraju odu u mirovinu i dožive starost psujući ptice.

Stvarnost se vjerojatno nalazi negdje između ove dvije krajnosti.

Neke su tvrtke bile iznimno uspješne u stvaranju krajnje negativnih, izoliranih kultura jake volje (poput Microsofta prije izgubljeno desetljeće) - često su to tvrtke s proizvodima koji savršeno odgovaraju tržištu i potrebi za što bržim rastom; ili tvrtke s hijerarhijom zapovijedanja i kontrole (Apple u najboljim godinama Jobsa), gdje svatko radi što mu se kaže. Međutim, moderna poslovna istraživanja (i zdrav razum) sugeriraju da maksimalna domišljatost, koja dovodi do inovativnosti u poduzećima i visoka produktivnost kod pojedinaca, zahtijeva niske razine stresa kako bi se podržalo kontinuirano kreativno i metodično razmišljanje. Iznimno je teško raditi kreativan posao temeljen na raspravama ako stalno brinete o tome što će vaši kolege imati za reći o svakom retku vašeg koda.

Negativnost je inženjering pop kulture

Danas se stavu inženjera posvećuje više pozornosti nego ikada prije. U inženjerskim organizacijama vrijedi pravilo "Bez rogova". Na Twitteru se pojavljuje sve više anegdota i priča o ljudima koji su ovu profesiju napustili jer nisu mogli (htjeli) dalje trpjeti neprijateljstvo i zlonamjernost prema autsajderima. Čak i Linus Torvalds nedavno se ispričao godina neprijateljstva i kritike prema drugim programerima Linuxa - to je dovelo do rasprave o učinkovitosti ovog pristupa.

Neki još uvijek brane Linusovo pravo da bude vrlo kritičan - oni koji bi trebali znati puno o prednostima i nedostacima "toksične negativnosti". Da, uljudnost je izuzetno važna (čak temeljna), ali ako sumiramo razloge zašto mnogi od nas dopuštaju da se izražavanje negativnih mišljenja pretvori u "toksičnost", ovi razlozi djeluju paternalistički ili pubertetski: "oni to zaslužuju jer su idioti “, „mora biti siguran da to više neće učiniti”, „da nisu to učinili, ne bi morao vikati na njih” i tako dalje. Primjer utjecaja vođenih emocionalnih reakcija na programersku zajednicu je akronim Ruby zajednice MINASWAN - "Matz je fin pa smo i mi dobri."

Primijetio sam da mnogi gorljivi zagovornici pristupa "ubij budalu" često jako vode računa o kvaliteti i ispravnosti koda, poistovjećujući se sa svojim radom. Nažalost, često brkaju tvrdoću s krutošću. Nedostatak ovog položaja proizlazi iz jednostavne ljudske, ali neproduktivne želje da se osjećamo superiorno nad drugima. Ljudi koji urone u ovu želju zaglave na putu tame.

Ljutnja na kod: programeri i negativnost

Svijet programiranja brzo raste i probija granice svog spremnika - svijeta neprogramiranja (ili je svijet programiranja spremnik za svijet neprogramiranja? Dobro pitanje).

Kako se naša industrija širi sve bržim tempom, a programiranje postaje dostupnije, udaljenost između "tehničara" i "normalnih" brzo se smanjuje. Svijet programiranja sve je više izložen međuljudskim interakcijama ljudi koji su odrasli u izoliranoj štreberskoj kulturi ranog tehnološkog procvata, a oni su ti koji će oblikovati novi svijet programiranja. I bez obzira na bilo kakve društvene ili generacijske argumente, učinkovitost u ime kapitalizma pokazat će se u kulturi poduzeća i praksama zapošljavanja: najbolje tvrtke jednostavno neće zaposliti nikoga tko ne može neutralno komunicirati s drugima, a kamoli imati dobre odnose.

Što sam naučio o negativnosti

Ako dopustite da previše negativnosti kontrolira vaš um i interakcije s ljudima, pretvarajući se u toksičnost, onda je to opasno za proizvodne timove i skupo za posao. Vidio sam (i čuo za) nebrojene projekte koji su se raspali i potpuno su obnovljeni uz velike troškove jer je jedan programer od povjerenja imao kiv prema tehnologiji, drugi programer ili čak jedna datoteka odabrana da predstavlja kvalitetu cijele baze koda.

Negativnost također demoralizira i uništava odnose. Nikada neću zaboraviti kako me kolega prekorio jer sam stavio CSS u pogrešnu datoteku, to me uzrujalo i nije mi dalo da saberem misli nekoliko dana. I u budućnosti, vjerojatno neću dopustiti takvoj osobi da bude u blizini jednog od mojih timova (ali tko zna, ljudi se mijenjaju).

Na kraju, negativno doslovno šteti vašem zdravlju.

Ljutnja na kod: programeri i negativnost
Mislim da bi ovako trebao izgledati majstorski tečaj osmijeha.

Naravno, to nije argument u prilog blistanju od sreće, umetanju deset milijardi emotikona u svaki zahtjev za povlačenjem ili odlasku na majstorski tečaj osmjeha (ne, dobro, ako to želite, onda nema problema). Negativnost je iznimno važan dio programiranja (i ljudskog života), signalizira kvalitetu, omogućuje izražavanje osjećaja i suosjećanje s bližnjima. Negativnost ukazuje na pronicljivost i razboritost, dubinu problema. Često primjećujem da je programer dosegao novu razinu kada počne izražavati nevjericu u ono u što je prije bio bojažljiv i nesiguran. Ljudi svojim mišljenjima pokazuju razumnost i samopouzdanje. Ne možete odbaciti izraz negativnosti, to bi bilo orvelovski.

Međutim, negativnost treba dozirati i uravnotežiti s drugim važnim ljudskim osobinama: empatijom, strpljenjem, razumijevanjem i humorom. Uvijek možete nekome reći da je zajebao bez da viče ili psuje. Ne podcjenjujte ovaj pristup: ako vam netko bez imalo emocija kaže da ste ozbiljno zabrljali, to je stvarno zastrašujuće.

Tada je, prije nekoliko godina, direktor razgovarao sa mnom. Razgovarali smo o trenutnom statusu projekta, a onda me je pitao kako se osjećam. Odgovorio sam da je sve u redu, projekt ide, radimo sporo, možda sam nešto propustio pa treba razmisliti. Rekao je da je čuo da s kolegama u uredu dijelim pesimističnija razmišljanja, te da su i drugi to primijetili. Objasnio je da ako imam sumnje, mogu ih u potpunosti izraziti upravi, ali ne i "skinuti ih". Kao glavni inženjer, moram voditi računa o tome kako moje riječi utječu na druge jer imam velik utjecaj čak i ako toga nisam svjestan. I sve mi je to vrlo ljubazno rekao i na kraju rekao da ako se stvarno tako osjećam, onda vjerojatno moram razmisliti što želim za sebe i svoju karijeru. Bio je to nevjerojatno nježan razgovor, uzmi ili ustani sa svog mjesta. Zahvalio sam mu na informaciji o tome kako je moj stav promijenjen tijekom šest mjeseci utjecao na druge, a da ja nisam to primijetio.

Bio je to primjer izvanrednog, učinkovitog upravljanja i snage mekog pristupa. Shvatio sam da samo naizgled potpuno vjerujem u tvrtku i njenu sposobnost da postigne svoje ciljeve, ali u stvarnosti sam razgovarao i komunicirao s drugima na potpuno drugačiji način. Također sam shvatio da čak i ako sam skeptičan prema projektu na kojem radim, ne bih trebao pokazivati ​​svoje osjećaje svojim kolegama i širiti pesimizam poput zaraze, smanjujući naše šanse za uspjeh. Umjesto toga, mogao bih svom menadžmentu agresivno prenijeti stvarnu situaciju. A kad bih osjetio da me ne slušaju, mogao sam izraziti svoje neslaganje napuštanjem tvrtke.

Novu priliku dobio sam dolaskom na mjesto voditelja procjene kadrova. Kao bivši glavni inženjer, vrlo sam oprezan u izražavanju mišljenja o našem naslijeđenom kodu (koji se stalno poboljšava). Da biste odobrili promjenu, morate zamisliti trenutnu situaciju, ali ništa nećete postići ako se uvalite u zapomaganje, napadanje ili slično. U konačnici, ovdje sam da dovršim zadatak i ne bih se trebao žaliti na kod kako bih ga razumio, procijenio ili popravio.

Zapravo, što više kontroliram svoju emocionalnu reakciju na šifru, to više razumijem što bi mogla postati i osjećam manju zbunjenost. Kad sam se izražavao suzdržano („ovdje mora biti mjesta za daljnji napredak“), usrećivao sam sebe i druge i nisam situaciju shvaćao preozbiljno. Shvatio sam da mogu potaknuti i smanjiti negativnost kod drugih tako što ću biti savršeno (iritirajuće?) razuman ("u pravu si, ovaj kodeks je prilično loš, ali poboljšat ćemo ga"). Drago mi je vidjeti koliko daleko mogu ići na putu zena.

U biti, neprestano učim i iznova učim važnu lekciju: život je prekratak da bih stalno bio ljut i u bolovima.

Ljutnja na kod: programeri i negativnost

Izvor: www.habr.com

Dodajte komentar