Hněv na kód: programátoři a negativita

Hněv na kód: programátoři a negativita

Dívám se na kus kódu. Toto může být nejhorší kód, jaký jsem kdy viděl. Chcete-li aktualizovat pouze jeden záznam v databázi, načte všechny záznamy v kolekci a poté odešle požadavek na aktualizaci každému záznamu v databázi, dokonce i těm, které není třeba aktualizovat. Existuje mapová funkce, která jednoduše vrací hodnotu, která jí byla předána. Existují podmíněné testy pro proměnné se zjevně stejnou hodnotou, jen pojmenované v různých stylech (firstName и first_name). Pro každou UPDATE odešle kód zprávu do jiné fronty, která je zpracována jinou funkcí bez serveru, ale která dělá veškerou práci pro jinou kolekci ve stejné databázi. Zmínil jsem, že tato funkce bez serveru pochází z cloudové „architektury orientované na služby“, která obsahuje více než 100 funkcí v prostředí?

Jak to bylo vůbec možné udělat? Zakryju si obličej a viditelně vzlykám přes smích. Moji kolegové se ptají, co se stalo, a já to převyprávím v barvách Nejhorší hity BulkDataImporter.js 2018. Všichni mi soucitně přikyvují a souhlasí: jak nám to mohli udělat?

Negativita: emocionální nástroj v programátorské kultuře

Negativita hraje v programování důležitou roli. Je zakořeněn v naší kultuře a používá se ke sdílení toho, co jsme se naučili („neznáte budeš tomu věřit, jaký to byl kód!“), vyjádřit sympatie prostřednictvím frustrace („Bože, PROČ to dělat?“), předvést se („Nikdy bych tak neudělal to“), svalit vinu na někoho jiného („selhali jsme kvůli jeho kodexu, který nelze udržet“), nebo, jak je zvykem v těch „nejtoxickejších“ organizacích, ovládat ostatní prostřednictvím pocit studu („Na co jsi vůbec myslel?“ ? správně“).

Hněv na kód: programátoři a negativita

Negativita je pro programátory tak důležitá, protože je to velmi účinný způsob, jak sdělit hodnotu. Jednou jsem se zúčastnil programovacího tábora a standardní praxí vštěpování kultury průmyslu studentům bylo velkoryse dodávat memy, příběhy a videa, z nichž nejpopulárnější využívaly frustrace programátorů, když čelí nepochopení lidí. Je dobré umět pomocí emocionálních nástrojů identifikovat dobré, zlé, ošklivé, nedělej to, vůbec nikdy. Nováčky je potřeba připravit na to, že budou pravděpodobně nepochopeni kolegy, kteří mají do IT daleko. Že jim jejich přátelé začnou prodávat nápady na aplikace za miliony. Že budou muset bloudit nekonečnými labyrinty zastaralého kódu s partou minotaurů za rohem.

Když se poprvé učíme programovat, naše chápání hloubky „programovací zkušenosti“ je založeno na pozorování emocionálních reakcí ostatních lidí. To je jasně vidět z příspěvků v sabe ProgrammerHumor, kde se poflakuje spousta začínajících programátorů. Mnohé humorné jsou v té či oné míře zabarveny různými odstíny negativity: zklamání, pesimismus, rozhořčení, povýšenost a další. A pokud se vám to zdá málo, přečtěte si komentáře.

Hněv na kód: programátoři a negativita

Všiml jsem si, že jak programátoři získávají zkušenosti, jsou čím dál tím více negativní. Začátečníci, kteří si nejsou vědomi obtíží, které je čekají, začínají s nadšením a ochotou věřit, že příčinou těchto obtíží je prostě nedostatek zkušeností a znalostí; a nakonec budou konfrontováni s realitou věcí.

Čas plyne, získávají zkušenosti a stávají se schopni rozlišit dobrý kód od špatného. A když ten okamžik nastane, mladí programátoři pociťují frustraci z práce se zjevně špatným kódem. A pokud pracují v týmu (na dálku nebo osobně), často přejímají emoční návyky zkušenějších kolegů. To často vede k nárůstu negativity, protože mladí lidé nyní dokážou mluvit o kódu zamyšleně a rozdělovat jej na špatný a dobrý, čímž ukazují, že jsou „vědomí“. To dále posiluje negativní: ze zklamání je snadné vyjít s kolegy a stát se součástí skupiny; kritika Bad Code zvyšuje váš status a profesionalitu v očích ostatních: lidé, kteří vyjadřují negativní názory, jsou často vnímáni jako inteligentnější a kompetentnější.

Zvyšování negativity není nutně špatná věc. Diskuse o programování se mimo jiné extrémně zaměřují na kvalitu napsaného kódu. To, co kód je, zcela definuje funkci, kterou má vykonávat (pomineme-li hardware, sítě atd.), takže je důležité mít možnost vyjádřit svůj názor na tento kód. Téměř všechny diskuse vedou k tomu, zda je kód dostatečně dobrý, a k odsouzení samotných projevů špatného kódu v termínech, jejichž emocionální konotace charakterizuje kvalitu kódu:

  • "V tomto modulu je mnoho logických nekonzistencí, je to dobrý kandidát na významnou optimalizaci výkonu."
  • "Tento modul je dost špatný, musíme ho předělat."
  • "Tento modul nedává smysl, je třeba ho přepsat."
  • "Tento modul je na hovno, je třeba ho opravit."
  • "Tohle je kus berana, ne modul, to se vůbec nemuselo psát, co si sakra jeho autor myslel."

Mimochodem, je to právě toto „emocionální vydání“, kvůli kterému vývojáři nazývají kód „sexy“, což je málokdy spravedlivé – pokud nepracujete v PornHubu.

Problém je v tom, že lidé jsou zvláštní, neklidní, emocionální stvoření a vnímání a vyjádření jakékoli emoce nás mění: zprvu nenápadně, ale postupem času dramaticky.

Neklidný kluzký svah negativity

Před několika lety jsem byl neformálním vedoucím týmu a vedl rozhovor s vývojářem. Opravdu jsme ho měli rádi: byl chytrý, kladl dobré otázky, byl technicky zdatný a dobře zapadal do naší kultury. Obzvláště mě zaujala jeho pozitivita a to, jak podnikavě působil. A najal jsem ho.

V té době jsem ve firmě pracoval pár let a cítil jsem, že naše kultura není příliš efektivní. Než jsem dorazil, pokusili jsme se produkt uvést na trh dvakrát, třikrát a ještě několikrát, což vedlo k velkým nákladům na přepracování, během kterých jsme neměli co ukázat kromě dlouhých nocí, napjatých termínů a produktů, které fungovaly. A přestože jsem stále tvrdě pracoval, byl jsem skeptický k poslednímu termínu, který nám vedení určil. A nenuceně zaklel, když diskutoval o některých aspektech kódu s mými kolegy.

Nebylo tedy překvapivé – i když jsem byl překvapen – že o několik týdnů později tentýž nový vývojář řekl stejné negativní věci jako já (včetně nadávek). Uvědomil jsem si, že by se v jiné společnosti s jinou kulturou choval jinak. Prostě se přizpůsobil kultuře, kterou jsem vytvořil. Přemohl mě pocit viny. Kvůli své subjektivní zkušenosti jsem u nováčka, kterého jsem vnímal jako úplně jiného, ​​vštípil pesimismus. I když takový opravdu nebyl a jen se tvářil, aby ukázal, že by mohl zapadnout, vnutila jsem mu svůj posraný postoj. A všechno řečené, dokonce i v žertu nebo mimochodem, má špatný způsob, že se mění v to, čemu se věří.

Hněv na kód: programátoři a negativita

Negativní způsoby

Vraťme se k našim bývalým začínajícím programátorům, kteří získali trochu moudrosti a zkušeností: více se seznámili s programátorským průmyslem a pochopili, že špatný kód je všude, nelze se mu vyhnout. Vyskytuje se i v nejvyspělejších společnostech zaměřených na kvalitu (a podotýkám: modernost zjevně nechrání před špatným kódem).

Dobrý scénář. Postupem času začnou vývojáři akceptovat, že špatný kód je realitou softwaru a že jejich úkolem je jej vylepšovat. A že pokud se špatnému kódu nelze vyhnout, tak nemá smysl se tím trápit. Jdou cestou zenu a zaměřují se na řešení problémů nebo úkolů, které je konfrontují. Učí se, jak přesně měřit a sdělovat kvalitu softwaru majitelům firem, psát podložené odhady na základě svých let zkušeností a nakonec dostávají štědré odměny za svou neuvěřitelnou a trvalou hodnotu pro podnikání. Dělají svou práci tak dobře, že dostanou zaplaceno 10 milionů dolarů na bonusech a odejdou do důchodu, aby si mohli po zbytek života dělat, co chtějí (neberte to prosím jako samozřejmost).

Hněv na kód: programátoři a negativita

Dalším scénářem je cesta temnoty. Namísto toho, aby vývojáři přijali špatný kód jako nevyhnutelnost, berou to na sebe, aby povolali všechno špatné ve světě programování, aby to mohli překonat. Odmítají vylepšovat stávající špatný kód z mnoha dobrých důvodů: „lidé by měli vědět víc a nebýt tak hloupí“; "je to nepříjemné"; „to je špatné pro obchod“; „to dokazuje, jak jsem chytrý“; „Pokud vám neřeknu, jaký je to mizerný kód, celá společnost spadne do oceánu,“ a tak dále.

Tito lidé, kteří jistě nejsou schopni implementovat změny, které chtějí, protože podnikání se bohužel musí nadále rozvíjet a nemohou trávit čas starostmi o kvalitu kódu, získávají reputaci stěžovatelů. Jsou zachovány pro svou vysokou kompetenci, ale jsou vytlačeny na okraj společnosti, kde nebudou obtěžovat mnoho lidí, ale přesto podpoří provoz kritických systémů. Bez přístupu k novým příležitostem rozvoje ztrácejí dovednosti a přestávají splňovat požadavky průmyslu. Jejich negativita se mění v hořkou hořkost a ve výsledku krmí své ego dohadováním se s dvacetiletými studenty o cestě, kterou urazila jejich oblíbená stará technologie a proč je stále tak žhavá. Nakonec odejdou do důchodu a dožívají své stáří nadávkami na ptáky.

Realita pravděpodobně leží někde mezi těmito dvěma extrémy.

Některé společnosti byly extrémně úspěšné při vytváření extrémně negativních, izolovaných kultur silné vůle (jako předtím Microsoft ztracené desetiletí) - často se jedná o společnosti s produkty, které dokonale odpovídají trhu a potřebě co nejrychleji růst; nebo společnosti s hierarchií velení a řízení (Apple v nejlepších letech Jobs), kde každý dělá, co se mu řekne. Moderní obchodní výzkumy (a zdravý rozum) však naznačují, že maximální vynalézavost, která vede k inovativnosti ve společnostech a vysoké produktivitě jednotlivců, vyžaduje nízkou úroveň stresu, která podporuje trvalé kreativní a metodické myšlení. A je nesmírně obtížné dělat kreativní práci založenou na diskuzích, pokud se neustále obáváte, co budou vaši kolegové říkat o každém řádku vašeho kódu.

Negativita je inženýrská popkultura

Dnes se přístupu inženýrů věnuje více pozornosti než kdy dříve. Ve strojírenských organizacích platí pravidlo „Žádné rohy". Na Twitteru se objevuje stále více anekdot a příběhů o lidech, kteří opustili tuto profesi, protože nedokázali (nemohli) nadále snášet nepřátelství a zlou vůli vůči cizincům. Dokonce i Linus Torvalds nedávno se omluvil léta nepřátelství a kritiky vůči ostatním linuxovým vývojářům – to vedlo k debatě o účinnosti tohoto přístupu.

Někteří stále hájí Linusovo právo být velmi kritický - ti, kteří by měli vědět hodně o výhodách a nevýhodách "toxické negativity". Ano, zdvořilost je nesmírně důležitá (dokonce zásadní), ale shrneme-li důvody, proč mnozí z nás dovolují, aby se vyjadřování negativních názorů proměnilo v „toxicitu“, tyto důvody působí paternalisticky či pubertálně: „zaslouží si to, protože jsou idioti “, „musí si být jistý, že to už neudělají“, „kdyby to neudělali, nemusel by na ně křičet“ a tak dále. Příkladem vlivu emocionálních reakcí lídra na programátorskou komunitu je zkratka komunity Ruby MINASWAN - "Matz je milý, takže jsme milí."

Všiml jsem si, že mnoha zapáleným zastáncům přístupu „zabít hlupáka“ často velmi záleží na kvalitě a správnosti kódu a ztotožňují se se svou prací. Bohužel si často pletou tvrdost s tuhostí. Nevýhoda této pozice pramení z prosté lidské, ale neproduktivní touhy cítit se nadřazeně ostatním. Lidé, kteří se ponoří do této touhy, uvíznou na cestě temnoty.

Hněv na kód: programátoři a negativita

Svět programování rychle roste a tlačí na hranice svého kontejneru – světa neprogramování (nebo je svět programování kontejnerem pro svět neprogramování? Dobrá otázka).

S tím, jak se naše odvětví rozšiřuje stále větším tempem a programování se stává dostupnějším, vzdálenost mezi „techniky“ a „normálními“ se rychle zmenšuje. Svět programování je stále více vystaven mezilidským interakcím lidí, kteří vyrostli v izolované kultuře nerdů raného technologického boomu, a jsou to oni, kdo bude utvářet nový svět programování. A bez ohledu na jakékoli společenské či generační argumenty se efektivita ve jménu kapitalismu projeví ve firemní kultuře a náborových praktikách: ty nejlepší firmy prostě nenajímají nikoho, kdo neumí neutrálně komunikovat s ostatními, natož mít dobré vztahy.

Co jsem se naučil o negativitě

Pokud dovolíte, aby příliš mnoho negativity ovládlo vaši mysl a interakce s lidmi a změnilo se v toxicitu, pak je to nebezpečné pro produktové týmy a drahé pro podnikání. Viděl jsem (a slyšel jsem o nich) nespočet projektů, které se rozpadly a byly kompletně přestavěny s velkými náklady, protože jeden důvěryhodný vývojář měl zášť vůči technologii, jiný vývojář nebo dokonce jediný soubor vybraný tak, aby reprezentoval kvalitu celé kódové základny.

Negativita také demoralizuje a ničí vztahy. Nikdy nezapomenu, jak mi kolega vynadal, že dávám CSS do špatného souboru, naštvalo mě to a několik dní mi to nedovolilo sbírat myšlenky. A v budoucnu je nepravděpodobné, že takovému člověku dovolím být v blízkosti jednoho z mých týmů (ale kdo ví, lidé se mění).

Nakonec to negativní doslova poškozuje vaše zdraví.

Hněv na kód: programátoři a negativita
Myslím, že takhle by měl vypadat mistrovský kurz úsměvů.

To samozřejmě není argument ve prospěch zářit štěstím, vkládání deseti miliard emotikonů do každého požadavku na vytažení nebo navštěvování mistrovského kurzu úsměvů (ne, dobře, pokud to chcete, pak žádná otázka). Negativita je nesmírně důležitou součástí programování (a lidského života), signalizuje kvalitu, umožňuje vyjádřit pocity a soucit s ostatními lidmi. Negativita naznačuje vhled a obezřetnost, hloubku problému. Často si všimnu, že vývojář dosáhl nové úrovně, když začne vyjadřovat nedůvěru v to, v čem byl dříve nesmělý a nejistý. Lidé svými názory prokazují rozumnost a sebedůvěru. Nelze odmítnout projev negativity, to by bylo orwellovské.

Negativitu je však potřeba dávkovat a vyvažovat dalšími důležitými lidskými vlastnostmi: empatií, trpělivostí, porozuměním a humorem. Vždy můžete člověku říct, že to podělal, aniž byste křičeli nebo nadávali. Nepodceňujte tento přístup: pokud vám někdo bez jakýchkoli emocí řekne, že jste to vážně pokazili, je to opravdu děsivé.

Tehdy, před několika lety, se mnou mluvil generální ředitel. Probrali jsme aktuální stav projektu, pak se zeptal, jak se cítím. Odpověděl jsem, že je vše v pořádku, projekt se hýbe, pracujeme pomalu, snad mi něco uniklo a je potřeba to přehodnotit. Řekl, že mě slyšel sdílet pesimističtější myšlenky s kolegy v kanceláři a že si toho všimli i ostatní. Vysvětlil, že pokud mám pochybnosti, mohu je plně vyjádřit vedení, ale ne je „snížit“. Jako hlavní inženýr musím dbát na to, jak moje slova ovlivňují ostatní, protože mám velký vliv, i když si to neuvědomuji. A on mi to všechno řekl velmi laskavě a nakonec řekl, že pokud se tak opravdu cítím, tak si asi musím promyslet, co chci pro sebe a svou kariéru. Byla to neuvěřitelně jemná konverzace typu „vypadni nebo vypadni ze svého sedadla“. Poděkoval jsem mu za informace o tom, jak můj změněný postoj během šesti měsíců ovlivňoval ostatní, aniž bych si toho všiml.

Byl to příklad pozoruhodného, ​​efektivního řízení a síly měkkého přístupu. Uvědomil jsem si, že jsem jen zdánlivě plně důvěřoval firmě a její schopnosti dosahovat svých cílů, ale ve skutečnosti jsem mluvil a komunikoval s ostatními úplně jinak. Uvědomil jsem si také, že i kdybych se k projektu, na kterém jsem pracoval, cítil skepticky, neměl bych svým kolegům dávat najevo své pocity a šířit pesimismus jako nákazu a snižovat tak naše šance na úspěch. Místo toho jsem mohl agresivně sdělit skutečnou situaci svému vedení. A kdybych měl pocit, že mě neposlouchají, mohl jsem svůj nesouhlas vyjádřit odchodem z firmy.

Novou příležitost jsem dostal, když jsem nastoupil na pozici vedoucí personálního posouzení. Jako bývalý hlavní inženýr jsem velmi opatrný ve vyjadřování svých názorů na náš (stále se zlepšující) starší kód. Abyste schválili změnu, musíte si představit současnou situaci, ale nikam se nedostanete, pokud se budete utápět ve sténání, napadání nebo podobně. Nakonec jsem tu, abych dokončil úkol a neměl bych si stěžovat na kód, abych mu porozuměl, vyhodnotil ho nebo opravil.

Ve skutečnosti, čím více ovládám svou emocionální reakci na kód, tím více rozumím tomu, co by se mohlo stát, a tím menší zmatek cítím. Když jsem se zdrženlivě vyjadřoval („tady musí být prostor pro další zlepšení“), dělal jsem radost sobě i ostatním a nebral jsem situaci příliš vážně. Uvědomil jsem si, že mohu stimulovat a snižovat negativitu v ostatních tím, že budu dokonale (otravně?) rozumný („máš pravdu, tento kód je dost špatný, ale vylepšíme ho“). Jsem rád, že vidím, jak daleko mohu zajít na cestě zenu.

V podstatě se neustále učím a znovu se učím důležitou lekci: život je příliš krátký na to, abychom se neustále zlobili a trápili.

Hněv na kód: programátoři a negativita

Zdroj: www.habr.com

Přidat komentář