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. Je to pravděpodobně nejhorší kód, jaký jsem kdy viděl. Pro aktualizaci pouze jednoho záznamu v databázi načte všechny záznamy v kolekci a poté odešle požadavek na aktualizaci pro každý záznam v databázi, a to i pro ty, které aktualizaci nepotřebují. Existuje funkce map, která jednoduše vrací předanou hodnotu. Existují podmíněné kontroly proměnných se zjevně identickými hodnotami, jen pojmenovaných jiným způsobem (firstName и first_name). Pro každou aktualizaci kód odešle zprávu do jiné fronty, která je zpracována jinou bezserverovou funkcí, která však provádí veškerou práci pro jinou kolekci ve stejné databázi. Zmínil jsem se, že tato bezserverová funkce pochází z cloudové „servisně orientované architektury“ obsahující v prostředí přes 100 funkcí?

Jak by někdo mohl něco takového udělat? Zakrývám si obličej a skrz smích hlasitě vzlykám. Kolegové se mě ptají, co se stalo, a já to živě vyprávím. Nejhorší hity BulkDataImporter.js v roce 2018Všichni soucitně přikyvují a souhlasí: jak nám to mohli udělat?

Negativita: Emoční nástroj v programátorské kultuře

Negativita hraje v programování hlavní roli. Je zabudována do naší kultury a používá se ke sdílení toho, co jsme se naučili („nejsi uvěříš, jaký to byl kód!), vyjádřit soucit skrze frustraci („Bože můj, PROČ to děláš?“), ukázat se v příznivém světle („Nikdy bych tak „neudělal to“), svalit vinu na někoho jiného („selhali jsme kvůli jeho kódu, který je neudržovatelný“) nebo, jak je běžné v těch nejtoxickějších organizacích, ovládat ostatní pocitem studu („na co sis vůbec myslel? Opravit to“).

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

Negativita je pro programátory velmi důležitá, protože je to velmi účinný způsob, jak sdělit hodnotu. Jednou jsem se zúčastnil programátorského bootcampu a standardní praxí, jak studenty seznámit s kulturou oboru, byla štědrá zásoba memů, příběhů a videí, z nichž nejoblíbenější využívaly... frustrace programátorů, když se setkali s nepochopením lidíJe dobré umět používat emocionální nástroje k označení praktik: Dobré, Špatné, Ošklivé, Tohle nikdy nedělejte, Nikdy v životě. Nováčci se musí připravit na to, že je kolegové, kteří nejsou IT profesionálové, pravděpodobně nepochopí. Že jim přátelé začnou prodávat nápady na milionové aplikace. Že se budou muset proplétat nekonečným labyrintem staršího kódu s hordou minotaurů číhajících za rohem.

Když se poprvé začínáme učit programovat, naše vnímání hloubky „programátorské zkušenosti“ je založeno na pozorování emocionálních reakcí ostatních lidí. To je jasně patrné z příspěvků v Sabe ProgrammerHumor, kde se schází mnoho začínajících programátorů. Mnoho humorných komentářů je zabarveno různou mírou negativity: zklamání, pesimismus, rozhořčení, blahosklonnost a tak dále. A pokud to nestačí, přečtěte si komentáře.

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

Všiml jsem si, že s tím, jak programátoři získávají zkušenosti, se jejich negativita stává stále negativnější. Nováčci, kteří si nejsou vědomi obtíží, které je čekají, začnou s nadšením a snadno věřit, že tyto obtíže jsou jednoduše způsobeny nedostatkem zkušeností a znalostí; a nakonec budou konfrontováni s realitou situace.

Postupem času získávají zkušenosti a rozvíjejí schopnost rozlišovat dobrý kód od špatného. A když tento okamžik nastane, mladí programátoři zažívají 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í emocionální návyky svých zkušenějších kolegů. To často vede ke zvýšené negativitě, protože mladí programátoři nyní dokáží o kódu hovořit zamyšleně a rozlišovat mezi dobrým a špatným, čímž ukazují, že „jsou v obraze“. To negativitu dále živí: frustrace usnadňuje navazování vztahů s kolegy a začleňování se do skupiny; kritika špatného kódu zvyšuje vaše postavení 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ší.

Zesilování negativity nemusí být nutně špatná věc. Diskuse o programování se mimo jiné extrémně zaměřují na kvalitu psaného kódu. Povaha kódu zcela určuje funkci, kterou má plnit (pomineme-li hardware, sítě atd.), takže je důležité být schopen k danému kódu vyjádřit svůj názor. Téměř všechny diskuse se redukují na to, zda je kód dostatečně dobrý, a na odsouzení samotných projevů špatného kódu ve výrazech, jejichž emocionální zabarvení charakterizuje kvalitu kódu:

  • "Tento modul má mnoho logických nekonzistencí a je dobrým kandidátem pro významnou optimalizaci výkonu."
  • "Tenhle modul je dost špatný, musíme ho refaktorovat."
  • "Tento modul nedává smysl a je třeba ho přepsat."
  • "Tenhle modul je na nic, potřebuje se opravit."
  • „Tohle je kus RAM, ne modul, ani to nemuselo být napsáno, co si sakra jeho autor myslel.“

Mimochodem, právě toto „emoční uvolnění“ vede vývojáře k tomu, aby kód označovali za „sexy“, což je zřídka fér – pokud nepracujete pro PornHub.

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

Kluzký svah negativity

Před pár lety jsem neformálně vedl tým a dělal pohovor s vývojářem. Moc se nám líbil: byl chytrý, kladl dobré otázky, byl technicky zdatný a perfektně zapadal do naší kultury. Obzvláště na mě zapůsobila jeho pozitivita a to, jak podnikavý působil. Tak jsem ho najal.

V té době jsem ve firmě pracoval už pár let a měl jsem pocit, že naše firemní kultura není moc efektivní. Než jsem přišel, pokoušeli jsme se produkt spustit dvakrát, třikrát a ještě několikrát, což vedlo k obrovským nákladům na přepracování, během kterých jsme neměli nic k dispozici kromě dlouhých nocí, napjatých termínů a údajně fungujících produktů. A i když jsem stále tvrdě pracoval, byl jsem skeptický k poslednímu termínu stanovenému vedením. Dokonce jsem si při diskusi o určitých aspektech kódu s kolegy ledabyle nadával.

Takže nebylo překvapivé – i když mě to překvapilo – že o pár týdnů později tentýž nový vývojář vyjádřil stejný negativní pocit jako já (včetně nadávek). Uvědomil jsem si, že by se v jiné firmě 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 vštípil pesimismus nováčkovi, kterého jsem vnímal jako úplně jiného. I když takový ve skutečnosti nebyl a jen se tak snažil tvářit, aby ukázal, že se hodí, vnutil jsem mu svůj vlastní mizerný postoj. A cokoli, co se řekne, i když je to žertem nebo jen tak mimochodem, má nepříjemnou tendenci se stát tím, čemu lidé uvěří.

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

Cesty negativity

Vraťme se k našim bývalým programátorům-nováčkům, kteří získali trochu moudrosti a zkušeností: lépe poznali programátorský průmysl a pochopili, že špatný kód je všude, je nevyhnutelný. Nachází se i v těch nejpokročilejších, na kvalitu zaměřených firmách (a dodám: zdá se, že modernita nás před špatným kódem nechrání).

Dobrý scénář. Postupem času vývojáři začnou akceptovat, že špatný kód je realitou softwaru a že jejich úkolem je ho vylepšovat. A že pokud se špatnému kódu nelze vyhnout, nemá smysl kolem něj dělat rozruch. Přijmou zen a zaměří se na řešení problémů nebo výzev, kterým čelí. Učí se, jak přesně měřit a sdělovat majitelům firem kvalitu softwaru, čerpají ze svých dlouholetých zkušeností k psaní dobře odůvodněných odhadů a nakonec si vyslouží štědré odměny za svou neuvěřitelnou a trvalou hodnotu pro firmu. Svou práci dělají tak dobře, že dostávají bonusy 10 milionů dolarů a odcházejí do důchodu, aby si po zbytek života dělali, co chtějí (prosím, neberte to tak akorát).

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

Druhým scénářem je cesta temnoty. Místo aby vývojáři přijali špatný kód jako nevyhnutelný, berou si za úkol hlásat vše špatné ve světě programování, aby s tím mohli bojovat. Odmítají vylepšovat stávající špatný kód z různých dobrých důvodů: „Lidé by měli vědět lépe a nebýt tak hloupí“; „Je to nepříjemné“; „Je to špatné pro podnikání“; „Dokazuje to, jak jsem chytrý“; „Pokud lidem neřeknu, jak špatný je tento kód, celá společnost se zhroutí do oceánu“; a tak dále.

Pravděpodobně neschopni implementovat změny, které si přejí, protože firma se bohužel musí dále rozvíjet a nemůže si dovolit ztrácet čas starostmi o kvalitu kódu, a tak si takoví lidé vybudují pověst stěžovatelů. Jsou oslavováni pro svou vysokou kompetenci, ale jsou odsunuti na okraj společnosti, kde nebudou na obtíž, ale budou i nadále udržovat kritické systémy. Bez přístupu k novým rozvojovým příležitostem ztrácejí své dovednosti a nesplňují požadavky odvětví. Jejich negativita se mění v hořkost a nakonec si hladí ego hádkami s dvacetiletými studenty o cestě, kterou jejich milovaná stará technologie urazila a proč stále funguje. Nakonec odejdou do důchodu a stráví stáří nadáváním ptákům.

Realita se pravděpodobně nachází někde mezi těmito dvěma extrémy.

Některé společnosti byly mimořádně úspěšné ve vytváření extrémně negativních, uzavřených a silně orientovaných kultur (jako například Microsoft před svým ztracená dekáda) – často se jedná o společnosti s vynikajícím vztahem mezi produktem a trhem a potřebou co nejrychleji růst; nebo o společnosti s hierarchií velení a řízení (Apple v Jobsově zlaté éře), kde každý dělá, co se mu řekne. Moderní obchodní výzkum (a zdravý rozum) však naznačují, že pro maximální vynalézavost, vedoucí k firemním inovacím a vysoké individuální produktivitě, je nízký stres nezbytný pro podporu nepřetržitého kreativního a metodického myšlení. A je extrémně obtížné dělat kreativní práci, která se spoléhá na diskusi, pokud se neustále obáváte, co si vaši kolegové řeknou na každý řádek vašeho kódu.

Negativita je uměle vytvořená popkultura

Postoje inženýrů se dnes dostávají větší pozornosti než kdy dříve. Pravidlo „postoje“ se v inženýrských organizacích stává stále populárnějším.Žádné ovce„Na Twitteru se objevuje stále více vtipů a příběhů o lidech, kteří opustili tuto profesi, protože se nemohli (nebo nechtěli) vyrovnat s nepřátelstvím a zlou vůlí vůči cizincům. Dokonce i Linus Torvalds.“ nedávno se omluvil за годы своей враждебности и критики в адрес других Linux-разработчиков — это привело к дискуссии об эффективности такого подхода.

Někteří stále obhajují 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 klíčová (dokonce i zásadní), ale pokud bychom měli shrnout důvody, proč mnozí z nás dovolují, aby se negativní projevy zvrhly v „toxicitu“, znějí paternalisticky nebo mladistvě: „Zaslouží si to, protože jsou to idioti“, „Musí se ujistit, že to už neudělají“, „Kdyby to neudělali, nemusel na ně křičet“ a tak dále. Příkladem dopadu, který mají emocionální reakce vůdce na programátorskou komunitu, je zkratka Ruby MINASWAN – „Matz je milý, takže i my jsme milí.“

Všiml jsem si, že mnoho horlivých zastánců přístupu „zabij blázna“ se často velmi zajímá o kvalitu a správnost svého kódu a ztotožňují se se svou prací. Bohužel si často pletou pevnost s rigiditou. Chyba tohoto přístupu pramení z jednoduché, lidské, ale neproduktivní touhy cítit se nadřazeni ostatním. Lidé, kteří se této touze oddávají, uvíznou na cestě temnoty.

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

Svět programování rychle roste a dosahuje hranic svého obalu – neprogramovacího světa (nebo je programovací svět obalem pro neprogramovací svět? Dobrá otázka).

S tím, jak se náš průmysl rozvíjí zrychlujícím se tempem a programování se stává stále dostupnějším, se propast mezi „technickými nadšenci“ a „normálními lidmi“ rapidně zmenšuje. Svět programování je stále více vystaven mezilidským interakcím lidí, kteří vyrostli v izolované „nerdské“ kultuře raného technologického boomu, a jsou to oni, kdo bude formovat nový svět programování. A bez ohledu na jakékoli argumenty o sociálních problémech nebo generacích se efektivita ve jménu kapitalismu projeví ve firemní kultuře a náborových praktikách: nejlepší společnosti prostě nenajmou nikoho, kdo nedokáže s ostatními komunikovat neutrálně, natož pozitivně.

Co jsem se naučil o negativitě

Dovolit, aby nadměrná negativita ovládala vaše myšlení a interakce a měnila se v toxicitu, je nebezpečná pro produktové týmy a nákladná pro firmy. Viděl jsem nespočet projektů (a slyšel jsem o dalších), které se rozpadly a byly kompletně přestavěny za velké náklady, protože jeden důvěryhodný vývojář měl zášť vůči technologii, jinému vývojáři nebo dokonce jedinému souboru vybranému jako reprezentant kvality celé kódové základny.

Negativita je také demoralizující a ničí vztahy. Nikdy nezapomenu, jak mi kolega vynadal, že jsem dal CSS do špatného souboru; rozrušilo mě to a zabránilo mi to celé dny sebrat myšlenky. A v budoucnu takového člověka pravděpodobně nepustím do blízkosti jednoho ze svých týmů (ale kdo ví, lidé se mění).

Nakonec, negativní doslova škodí vašemu zdraví.

Hněv na kód: programátoři a negativita
Myslím, že takhle by měla vypadat mistrovská třída o úsměvech.

To samozřejmě není argument pro to, abychom zářili štěstím, vkládali deset miliard emoji do každého pull requestu nebo se zúčastnili workshopu úsměvů (no, pokud je to to, co chcete, tak je to v pořádku). Negativita je klíčovou součástí programování (a lidského života), signalizuje kvalitu a umožňuje nám vyjadřovat pocity a soucítit s našimi bližními. Negativita demonstruje vhled a obezřetnost, hloubku problému. Často si všímám, že vývojář dosáhl nové úrovně, když začne vyjadřovat nedůvěru ve věci, kterých se dříve bál a nebyl si jistý. Lidé projevují obezřetnost a sebevědomí prostřednictvím svých názorů. Vyjadřovat negativitu je nemožné; to by bylo orwellovské.

Negativnost je však třeba změřit a vyvážit dalšími důležitými lidskými vlastnostmi: empatií, trpělivostí, pochopením a humorem. Vždycky můžete někomu říct, že udělal chybu, aniž byste křičeli nebo nadávali. Tento přístup nepodceňujte: když vám bez emocí řeknou, že jste to vážně podělali, je to opravdu děsivé.

Tehdy, před pár lety, se mnou mluvil generální ředitel. Probrali jsme současný stav projektu a pak se zeptal, jak se cítím. Řekl jsem mu, že je všechno v pořádku, projekt postupuje, dosahujeme stabilního pokroku a možná jsem něco přehlédl a potřebuji se k tomu vrátit. Řekl, že mě slyšel sdílet pesimističtější myšlenky s kolegy v kanceláři a že si jich všimli i ostatní. Vysvětlil mi, že pokud mám nějaké obavy, můžu je plně sdělit vedení, ale ne je „směřovat dolů“. Jako vedoucí inženýr si musím být vědom toho, jak moje slova ovlivňují ostatní, protože mám velký vliv, i když si to neuvědomuji. To všechno řekl velmi laskavě a na závěr řekl, že pokud se tak skutečně cítím, pravděpodobně bych se měl zamyslet nad tím, co chci pro sebe a svou kariéru. Byl to neuvěřitelně jemný rozhovor ve stylu „vzpamatuj se, nebo zmiz“. Poděkoval jsem mu za informaci o tom, jak můj postoj, který se za šest měsíců změnil, ovlivňuje ostatní, aniž bych si to uvědomoval.

Byl to příklad pozoruhodného, ​​efektivního managementu a síly jemného přístupu. Uvědomil jsem si, že ačkoliv jsem se jen zdál věřit ve společnost a její schopnost dosáhnout jejích cílů, způsob, jakým jsem ve skutečnosti komunikoval a mluvil s ostatními, byl zcela jiný. Také jsem si uvědomil, že i když jsem byl skeptický k projektu, na kterém jsem pracoval, neměl jsem nechat svůj pesimismus projevit se na kolezích a šířit ho jako nákazu, čímž bych snižoval naše šance na úspěch. Místo toho jsem mohl agresivně sdělit realitu situace svému managementu. A pokud jsem měl pocit, že mi neposlouchají, mohl jsem svůj nesouhlas vyjádřit odchodem ze společnosti.

Dostal jsem novou příležitost, když jsem se ujal funkce vedoucího oddělení kontroly výkonu. Jako bývalý seniorní inženýr si velmi dávám pozor na to, jak vyjadřuji své názory na náš (stále se zlepšující) starší kód. Schválení změny vyžaduje pochopení současné situace, ale nikam se nedostanete, pokud se zaseknete v kňourání, útoku nebo něčem podobném. V konečném důsledku jsem tu proto, abych práci odvedl, a neměl bych si muset stěžovat na kód, abych mu porozuměl, vyhodnotil ho nebo ho opravil.

Ve skutečnosti, čím více mírním své emocionální reakce na kód, tím lépe chápu, co by to mohlo být, a tím méně se cítím zmateně. Když jsem se vyjadřoval zdrženlivě („tady musí být prostor pro zlepšení“), dělal jsem radost sobě i ostatním a nebral jsem si situaci příliš osobně. Uvědomil jsem si, že mohu stimulovat a snižovat negativitu u ostatních tím, že budu dokonale (až dráždivě?) rozumný („máte pravdu, tento kód je dost špatný, ale vylepšíme ho“). Jsem spokojený s tím, jak daleko jsem se na zenové cestě dostal.

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

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

Zdroj: www.habr.com

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster