Hnev na kód: programátori a negativita

Hnev na kód: programátori a negativita

Pozerám sa na kúsok kódu. Toto môže byť najhorší kód, aký som kedy videl. Ak chcete aktualizovať iba jeden záznam v databáze, získa všetky záznamy v kolekcii a potom odošle požiadavku na aktualizáciu každému záznamu v databáze, dokonca aj tým, ktoré nie je potrebné aktualizovať. Existuje funkcia mapy, ktorá jednoducho vráti hodnotu, ktorá jej bola odovzdaná. Existujú podmienené testy pre premenné so zjavne rovnakou hodnotou, len pomenované v rôznych štýloch (firstName и first_name). Pre každú AKTUALIZÁCIU kód odošle správu do iného frontu, ktorý je obsluhovaný inou bezserverovou funkciou, ktorá však vykonáva všetku prácu pre inú kolekciu v rovnakej databáze. Spomenul som, že táto funkcia bez servera pochádza z cloudovej „architektúry orientovanej na služby“, ktorá obsahuje viac ako 100 funkcií v prostredí?

Ako to bolo vôbec možné urobiť? Zakryjem si tvár a cez smiech viditeľne vzlykám. Moji kolegovia sa pýtajú, čo sa stalo, a ja to prerozprávam vo farbách Najhoršie hity BulkDataImporter.js 2018. Všetci mi súcitne prikyvujú a súhlasia: ako nám to mohli urobiť?

Negativita: emocionálny nástroj v programátorskej kultúre

Negativita hrá v programovaní dôležitú úlohu. Je zakotvený v našej kultúre a používa sa na zdieľanie toho, čo sme sa naučili („nemáte uveríš tomu, aký to bol kód!“), prejaviť súcit cez frustráciu („Bože, PREČO to robiť?“), predviesť sa („Nikdy by som tak neurobil to“), zvaľovať vinu na niekoho iného („zlyhali sme kvôli jeho kódu, ktorý sa nedá dodržať“), alebo, ako je zvykom v tých „najtoxickejších“ organizáciách, ovládať ostatných prostredníctvom pocit hanby („Na čo si vôbec myslel?“ ? správne“).

Hnev na kód: programátori a negativita

Negativita je pre programátorov taká dôležitá, pretože je to veľmi efektívny spôsob, ako sprostredkovať hodnotu. Raz som sa zúčastnil programovacieho tábora a štandardnou praxou vštepovania kultúry priemyslu do študentov bolo veľkoryso poskytovať mémy, príbehy a videá, z ktorých najpopulárnejšie využívali frustrácia programátorov, keď čelia nepochopeniu ľudí. Je dobré vedieť použiť emocionálne nástroje na identifikáciu dobrého, zlého, škaredého, nerob to, vôbec nikdy. Nováčikov je potrebné pripraviť na to, že ich kolegovia, ktorí majú do IT ďaleko, budú zrejme nepochopení. Že im priatelia začnú predávať nápady na aplikácie za milióny dolárov. Že sa budú musieť túlať nekonečnými labyrintmi zastaraného kódu s partiou minotaurov za rohom.

Keď sa prvýkrát učíme programovať, naše chápanie hĺbky „programovacej skúsenosti“ je založené na pozorovaní emocionálnych reakcií iných ľudí. To je jasne vidieť z príspevkov v sabe ProgrammerHumor, kde sa zdržiava veľa začínajúcich programátorov. Mnohé humorné sú do tej či onej miery zafarbené rôznymi odtieňmi negativity: sklamaním, pesimizmom, rozhorčením, blahosklonnosťou a inými. A ak sa vám to zdá málo, prečítajte si komentáre.

Hnev na kód: programátori a negativita

Všimol som si, že ako programátori získavajú skúsenosti, sú čoraz negatívnejší. Začiatočníci, ktorí si neuvedomujú ťažkosti, ktoré ich čakajú, začínajú s nadšením a ochotou veriť, že príčinou týchto ťažkostí je jednoducho nedostatok skúseností a vedomostí; a nakoniec budú konfrontovaní s realitou vecí.

Čas plynie, získavajú skúsenosti a dokážu rozlíšiť dobrý kód od zlého. A keď príde ten moment, mladí programátori pociťujú frustráciu z práce s evidentne zlým kódom. A ak pracujú v tíme (na diaľku alebo osobne), často si osvojujú emocionálne návyky skúsenejších kolegov. To často vedie k nárastu negativity, pretože mladí ľudia teraz môžu premyslene hovoriť o kóde a rozdeliť ho na zlý a dobrý, čím ukazujú, že sú „ve vedomí“. To ešte viac posilňuje negatívum: zo sklamania je ľahké vychádzať s kolegami a stať sa súčasťou skupiny; kritika Bad Code zvyšuje váš status a profesionalitu v očiach ostatných: ľudia, ktorí vyjadrujú negatívne názory, sú často vnímaní ako inteligentnejší a kompetentnejší.

Zvyšovanie negativity nie je nevyhnutne zlá vec. Diskusie o programovaní sú okrem iného mimoriadne zamerané na kvalitu napísaného kódu. To, čo kód je, úplne definuje funkciu, ktorú má vykonávať (okrem hardvéru, sietí atď.), takže je dôležité, aby ste mohli vyjadriť svoj názor na tento kód. Takmer všetky diskusie vedú k tomu, či je kód dostatočne dobrý, a k odsúdeniu samotných prejavov zlého kódu v termínoch, ktorých emocionálna konotácia charakterizuje kvalitu kódu:

  • "V tomto module je veľa logických nezrovnalostí, je to dobrý kandidát na výraznú optimalizáciu výkonu."
  • "Tento modul je dosť zlý, musíme ho prerobiť."
  • "Tento modul nedáva zmysel, treba ho prepísať."
  • "Tento modul je na hovno, treba ho opraviť."
  • "Toto je kus barana, nie modul, to nebolo potrebné vôbec písať, čo si do pekla jeho autor myslel."

Mimochodom, práve toto „emocionálne vydanie“ núti vývojárov nazývať kód „sexy“, čo je málokedy fér – pokiaľ nepracujete v PornHub.

Problém je v tom, že ľudia sú zvláštne, nepokojné, emotívne stvorenia a vnímanie a vyjadrenie akejkoľvek emócie nás mení: najskôr nenápadne, no postupom času dramaticky.

Nepokojný klzký svah negativity

Pred niekoľkými rokmi som bol neformálnym vedúcim tímu a robil som rozhovor s vývojárom. Veľmi sa nám páčil: bol šikovný, kládol dobré otázky, bol technicky zdatný a dobre zapadal do našej kultúry. Zvlášť na mňa zapôsobila jeho pozitivita a to, aký podnikavý pôsobil. A ja som ho zamestnal.

V tom čase som už pár rokov pracoval vo firme a cítil som, že naša kultúra nie je príliš efektívna. Pokúsili sme sa produkt uviesť na trh dvakrát, trikrát a ešte niekoľkokrát, kým som prišiel, čo viedlo k veľkým nákladom na prepracovanie, počas ktorého sme nemali čo ukázať okrem dlhých nocí, krátkych termínov a produktov, ktoré fungovali. A hoci som stále tvrdo pracoval, bol som skeptický k poslednému termínu, ktorý nám manažment určil. A nenútene prisahal, keď diskutoval o niektorých aspektoch kódexu s mojimi kolegami.

Takže nebolo prekvapujúce – aj keď som bol prekvapený – že o pár týždňov neskôr ten istý nový vývojár povedal tie isté negatívne veci ako ja (vrátane nadávok). Uvedomil som si, že v inej spoločnosti s inou kultúrou by sa správal inak. Len sa prispôsobil kultúre, ktorú som vytvoril. Premohol ma pocit viny. Kvôli mojej subjektívnej skúsenosti som v nováčikovi, ktorého som vnímal ako úplne iného, ​​navodil pesimizmus. Aj keď taký naozaj nebol a len sa tváril, aby ukázal, že sa k nemu hodí, vnútila som mu svoj posratý postoj. A všetko povedané, dokonca aj zo žartu alebo mimochodom, má zlý spôsob, že sa mení na to, čomu sa verí.

Hnev na kód: programátori a negativita

Negatívne spôsoby

Vráťme sa k našim bývalým začínajúcim programátorom, ktorí nadobudli trochu múdrosti a skúseností: viac sa zoznámili s programátorským priemyslom a pochopili, že zlý kód je všade, nedá sa mu vyhnúť. Vyskytuje sa aj v najvyspelejších spoločnostiach zameraných na kvalitu (a podotýkam: modernosť zjavne nechráni pred zlým kódom).

Dobrý scenár. Postupom času vývojári začínajú akceptovať, že zlý kód je realitou softvéru a že ich úlohou je ho vylepšovať. A že ak sa zlému kódu nedá vyhnúť, tak nemá zmysel robiť si z toho rozruch. Idú cestou zenu, zameriavajú sa na riešenie problémov alebo úloh, ktoré ich konfrontujú. Učia sa, ako presne merať a komunikovať kvalitu softvéru majiteľom firiem, písať podložené odhady na základe svojich dlhoročných skúseností a v konečnom dôsledku dostávajú štedré odmeny za svoju neuveriteľnú a trvalú hodnotu pre podnikanie. Svoju prácu robia tak dobre, že dostanú odmeny vo výške 10 miliónov dolárov a odídu do dôchodku, aby si mohli robiť to, čo chcú, do konca života (neberte to, prosím, ako samozrejmosť).

Hnev na kód: programátori a negativita

Ďalším scenárom je cesta temnoty. Namiesto toho, aby vývojári akceptovali zlý kód ako nevyhnutnosť, berú na seba všetko zlé vo svete programovania, aby to mohli prekonať. Odmietajú vylepšovať existujúci zlý kód z mnohých dobrých dôvodov: „ľudia by mali vedieť viac a nebyť takí hlúpi“; "je to nepríjemné"; „to je zlé pre podnikanie“; „toto dokazuje, aký som šikovný“; „Ak vám nepoviem, aký je to mizerný kód, celá spoločnosť spadne do oceánu,“ atď.

Títo ľudia, ktorí nie sú schopní implementovať požadované zmeny, pretože podnikanie sa, žiaľ, musí naďalej rozvíjať a nemôžu tráviť čas obavami o kvalitu kódu, si títo ľudia získavajú povesť sťažovateľov. Pre svoju vysokú kompetenciu sú ponechaní, ale sú vytlačení na okraj spoločnosti, kde nebudú otravovať veľa ľudí, no stále podporia chod kritických systémov. Bez prístupu k novým rozvojovým príležitostiam strácajú zručnosti a prestávajú spĺňať požiadavky priemyslu. Ich negativita sa mení na trpkú zatrpknutosť a v dôsledku toho kŕmia svoje ego hádkami s dvadsaťročnými študentmi o tom, akou cestou prešla ich obľúbená stará technológia a prečo je stále taká horúca. Skončia na dôchodku a dožívajú starobu nadávaním na vtáky.

Realita pravdepodobne leží niekde medzi týmito dvoma extrémami.

Niektoré spoločnosti boli mimoriadne úspešné pri vytváraní extrémne negatívnych, izolovaných kultúr so silnou vôľou (ako predtým Microsoft stratené desaťročie) - často ide o spoločnosti s produktmi, ktoré dokonale zodpovedajú trhu a potrebe rásť čo najrýchlejšie; alebo spoločnosti s hierarchiou velenia a kontroly (Apple v najlepších rokoch Jobs), kde si každý robí, čo sa mu povie. Moderné obchodné výskumy (a zdravý rozum) však naznačujú, že maximálna vynaliezavosť, ktorá vedie k inovatívnosti v spoločnostiach a vysokej produktivite jednotlivcov, si vyžaduje nízku úroveň stresu na podporu neustáleho kreatívneho a metodického myslenia. A je mimoriadne ťažké robiť kreatívnu prácu založenú na diskusiách, ak sa neustále obávate, čo budú musieť vaši kolegovia povedať o každom riadku vášho kódu.

Negativita je inžinierstvom pop kultúry

Dnes sa viac ako kedykoľvek predtým venuje prístupu inžinierov. V inžinierskych organizáciách platí pravidlo „Žiadne rohy". Na Twitteri sa objavuje čoraz viac anekdot a príbehov o ľuďoch, ktorí opustili toto povolanie, pretože nedokázali (nechceli) naďalej znášať nevraživosť a zlú vôľu voči cudzincom. Dokonca aj Linus Torvalds nedávno sa ospravedlnil roky nepriateľstva a kritiky voči ostatným vývojárom Linuxu - to viedlo k diskusii o účinnosti tohto prístupu.

Niektorí stále obhajujú Linusovo právo byť veľmi kritický – tí, ktorí by mali vedieť veľa o výhodách a nevýhodách „toxickej negativity“. Áno, zdvorilosť je mimoriadne dôležitá (dokonca zásadná), ale ak zhrnieme dôvody, prečo mnohí z nás dovoľujú, aby sa vyjadrovanie negatívnych názorov zmenilo na „toxicitu“, tieto dôvody pôsobia macošsky či pubertálne: „zaslúžia si to, lebo sú idioti “, „musí si byť istý, že to už neurobia“, „keby to neurobili, nemusel by na nich kričať“ atď. Príkladom vplyvu emocionálnych reakcií lídra na programátorskú komunitu je skratka komunity Ruby MINASWAN - "Matz je milý, takže sme milí."

Všimol som si, že mnohým zanieteným zástancom prístupu „zabi hlupáka“ často veľmi záleží na kvalite a správnosti kódu, pričom sa stotožňujú so svojou prácou. Bohužiaľ si často mýlia tvrdosť s tuhosťou. Nevýhoda tejto pozície pramení z jednoduchej ľudskej, no neproduktívnej túžby cítiť sa nadradene ostatným. Ľudia, ktorí sa ponoria do tejto túžby, uviaznu na ceste temnoty.

Hnev na kód: programátori a negativita

Svet programovania rýchlo rastie a tlačí na hranice svojho kontajnera – sveta neprogramovania (alebo je svet programovania kontajnerom pre svet neprogramovania? Dobrá otázka).

Keďže sa náš priemysel rozširuje stále rýchlejším tempom a programovanie sa stáva dostupnejším, vzdialenosť medzi „technológmi“ a „normálmi“ sa rýchlo zmenšuje. Svet programovania je čoraz viac vystavený medziľudským interakciám ľudí, ktorí vyrastali v izolovanej nerdskej kultúre raného technologického boomu, a práve oni budú formovať nový svet programovania. A bez ohľadu na akékoľvek sociálne či generačné argumenty, efektivita v mene kapitalizmu sa prejaví vo firemnej kultúre a náborových praktikách: najlepšie firmy jednoducho neprijmú nikoho, kto nevie neutrálne komunikovať s ostatnými, nieto ešte mať dobré vzťahy.

Čo som sa naučil o negativite

Ak dovolíte, aby príliš veľa negativity ovládalo vašu myseľ a interakcie s ľuďmi, ktoré sa zmenilo na toxicitu, potom je to nebezpečné pre produktové tímy a drahé pre podnikanie. Videl som (a počul som o nich) nespočetné množstvo projektov, ktoré sa rozpadli a boli úplne prestavané s veľkými nákladmi, pretože jeden dôveryhodný vývojár mal zášť voči technológii, iný vývojár alebo dokonca jeden vybraný súbor reprezentujúci kvalitu celej kódovej základne.

Negativita tiež demoralizuje a ničí vzťahy. Nikdy nezabudnem, ako mi kolega vyčítal, že som dal CSS do nesprávneho súboru, rozčúlilo ma to a nedalo mi niekoľko dní zbierať myšlienky. A v budúcnosti je nepravdepodobné, že by som takejto osobe dovolil byť v blízkosti jedného z mojich tímov (ale ktovie, ľudia sa menia).

Na záver negatívum doslova poškodzuje zdravie.

Hnev na kód: programátori a negativita
Myslím, že takto by mala vyzerať majstrovská trieda úsmevov.

Samozrejme, toto nie je argument v prospech žiarenia šťastím, vkladania desiatich miliárd emotikonov do každej žiadosti o vytiahnutie alebo návštevy majstrovského kurzu úsmevov (nie, ak to chcete, tak žiadny problém). Negativita je mimoriadne dôležitou súčasťou programovania (a ľudského života), signalizuje kvalitu, umožňuje vyjadrovať pocity a súcitiť s ostatnými ľuďmi. Negativita naznačuje nadhľad a rozvážnosť, hĺbku problému. Často si všimnem, že vývojár dosiahol novú úroveň, keď začne prejavovať nedôveru v to, v čom bol predtým nesmelý a neistý. Ľudia svojimi názormi preukazujú rozumnosť a sebadôveru. Nedá sa odmietnuť prejav negativity, to by bolo orwellovské.

Negativitu však treba dávkovať a vyvažovať s ďalšími dôležitými ľudskými vlastnosťami: empatiou, trpezlivosťou, porozumením a humorom. Vždy môžete človeku povedať, že to posral, bez toho, aby ste kričali alebo nadávali. Nepodceňujte tento prístup: ak vám niekto bez akýchkoľvek emócií povie, že ste to vážne pokazili, je to naozaj desivé.

Vtedy, pred niekoľkými rokmi, ma oslovil generálny riaditeľ. Diskutovali sme o aktuálnom stave projektu, potom sa spýtal, ako sa cítim. Odpovedal som, že všetko je v poriadku, projekt sa posúva, pracujeme pomaly, možno mi niečo uniklo a treba to prehodnotiť. Povedal, že ma počul, ako zdieľam pesimistickejšie myšlienky s kolegami v kancelárii, a že si to všimli aj ostatní. Vysvetlil, že ak mám pochybnosti, môžem ich plne vyjadriť vedeniu, ale „nezničiť ich“. Ako hlavný inžinier musím dbať na to, ako moje slová ovplyvňujú ostatných, pretože mám veľký vplyv, aj keď si to neuvedomujem. A toto všetko mi povedal veľmi láskavo a nakoniec povedal, že ak sa tak naozaj cítim, tak si asi musím premyslieť, čo chcem pre seba a svoju kariéru. Bola to neuveriteľne jemná konverzácia typu „vypadni alebo vypadni zo svojho sedadla“. Poďakoval som mu za informácie o tom, ako môj zmenený postoj počas šiestich mesiacov ovplyvňoval ostatných, ktorých som si nevšimol.

Bol to príklad pozoruhodného, ​​efektívneho riadenia a sily mäkkého prístupu. Uvedomil som si, že som len zdanlivo úplne dôveroval spoločnosti a jej schopnosti dosahovať svoje ciele, ale v skutočnosti som hovoril a komunikoval s ostatnými úplne inak. Tiež som si uvedomil, že aj keď sa cítim skeptický voči projektu, na ktorom pracujem, nemal by som kolegom prejavovať svoje pocity a šíriť pesimizmus ako nákazu, čím by som znížil naše šance na úspech. Namiesto toho som mohol agresívne oznámiť skutočnú situáciu svojmu manažmentu. A ak som mal pocit, že ma nepočúvajú, mohol som svoj nesúhlas vyjadriť odchodom z firmy.

Novú príležitosť som dostal, keď som nastúpil na pozíciu vedúceho personálneho hodnotenia. Ako bývalý hlavný inžinier som veľmi opatrný pri vyjadrovaní svojich názorov na náš (stále sa zlepšujúci) starý kód. Na schválenie zmeny si musíte predstaviť súčasnú situáciu, ale nikam sa nedostanete, ak sa budete utápať v nariekaní, napádaní a podobne. Nakoniec som tu, aby som dokončil úlohu a nemal by som sa sťažovať na kód, aby som mu porozumel, vyhodnotil ho alebo opravil.

V skutočnosti, čím viac ovládam svoju emocionálnu reakciu na kód, tým viac chápem, čo by sa mohlo stať, a tým menší zmätok cítim. Keď som sa vyjadroval zdržanlivo („tu musí byť priestor na ďalšie zlepšenie“), robil som radosť sebe aj ostatným a nebral som situáciu príliš vážne. Uvedomil som si, že môžem stimulovať a znižovať negativitu v druhých tým, že budem dokonale (otravne?) rozumný („máš pravdu, tento kód je dosť zlý, ale vylepšíme ho“). Som rád, že vidím, ako ďaleko môžem zájsť na ceste zenu.

V podstate sa neustále učím a znovu si osvojujem dôležitú lekciu: život je príliš krátky na to, aby som bol neustále nahnevaný a v bolestiach.

Hnev na kód: programátori a negativita

Zdroj: hab.com

Pridať komentár