Љутња на код: програмери и негативност

Љутња на код: програмери и негативност

Гледам део кода. Ово је можда најгори код који сам икада видео. Да би ажурирао само један запис у бази података, преузима све записе у колекцији, а затим шаље захтев за ажурирање сваком запису у бази података, чак и онима који не морају да се ажурирају. Постоји функција мапе која једноставно враћа вредност која јој је прослеђена. Постоје условни тестови за променљиве са наизглед истом вредношћу, само именоване у различитим стиловима (firstName и first_name). За свако АЖУРИРАЊЕ, код шаље поруку другом реду, којим управља друга функција без сервера, али која обавља сав посао за другу колекцију у истој бази података. Да ли сам споменуо да је ова функција без сервера из „услужно оријентисане архитектуре“ засноване на облаку која садржи преко 100 функција у окружењу?

Како је то уопште било могуће урадити? Покривам лице и видно јецам кроз смех. Колеге питају шта се десило, а ја препричавам у бојама Најгори хитови БулкДатаИмпортер.јс 2018. Сви ми саосећајно климају главом и слажу се: како су могли ово да нам ураде?

Негативност: емоционално средство у култури програмера

Негативност игра важну улогу у програмирању. Она је уграђена у нашу културу и користи се да поделимо оно што смо научили („немаш вероваћеш, какав је то код био!”), изразити саосећање кроз фрустрацију („Боже, ЗАШТО то учинити?”), показати се („Никада не бих тако није урадио“), да окриве неког другог („пропали смо због његовог кодекса који је немогуће одржати“), или, како је уобичајено у „најтоксичнијим“ организацијама, да контролише друге путем осећај стида („О чему сте уопште размишљали?“? тачно“).

Љутња на код: програмери и негативност

Негативност је толико важна за програмере јер је веома ефикасан начин да се пренесе вредност. Једном сам похађао програмски камп и стандардна пракса усађивања индустријске културе студентима била је великодушно снабдевање мемовима, причама и видео записима, од којих су најпопуларнији експлоатисани фрустрација програмера када се суоче са неразумевањем људи. Добро је моћи да користите емоционалне алате за идентификацију добрих, лоших, ружних, немојте то чинити, никад уопште. Неопходно је припремити новајлије на то да ће вероватно бити погрешно схваћени од колега који су далеко од ИТ-а. Да ће њихови пријатељи почети да им продају милионске идеје за апликације. Да ће морати да лутају кроз бескрајне лавиринте застареле шифре са гомилом минотаура иза угла.

Када први пут научимо да програмирамо, наше разумевање дубине „искуства програмирања“ заснива се на посматрању емоционалних реакција других људи. То се јасно види из постова у сабе ПрограммерХумор, где се дружи много програмера почетника. Многи духовити су, у једној или другој мери, обојени различитим нијансама негативности: разочарањем, песимизмом, огорчењем, снисходљивошћу и др. А ако вам се ово не чини довољно, прочитајте коментаре.

Љутња на код: програмери и негативност

Приметио сам да како програмери стичу искуство, они постају све негативнији. Почетници, несвесни потешкоћа које их очекују, почињу са ентузијазмом и спремношћу да верују да је узрок ових потешкоћа једноставно недостатак искуства и знања; и на крају ће се суочити са стварношћу ствари.

Време пролази, они стичу искуство и постају способни да разликују добар код од лошег. А када дође тај тренутак, млади програмери осећају фрустрацију рада са очигледно лошим кодом. А ако раде у тиму (на даљину или лично), често усвајају емоционалне навике искуснијих колега. То често доводи до пораста негативности, јер млади људи сада могу замишљено да причају о коду и да га поделе на лоше и добро, показујући тиме да су „упознати“. Ово додатно појачава негативно: због разочарања, лако је слагати се са колегама и постати део групе; критиковање Лошег кода повећава ваш статус и професионализам у очима других: људи који изражавају негативна мишљења често се доживљавају као интелигентније и компетентније.

Повећање негативности није нужно лоша ствар. Дискусије о програмирању, између осталог, изузетно су фокусиране на квалитет написаног кода. Шта је код у потпуности дефинише функцију коју треба да уради (на страну хардвер, умрежавање, итд.), тако да је важно да можете да изразите своје мишљење о том коду. Скоро све расправе се своде на то да ли је код довољно добар, и на осуду самих манифеста лошег кода у терминима чија емотивна конотација карактерише квалитет кода:

  • „У овом модулу има доста логичких недоследности, добар је кандидат за значајну оптимизацију перформанси.“
  • „Овај модул је прилично лош, морамо га рефакторисати.“
  • „Овај модул нема смисла, треба га преписати.
  • "Овај модул је лош, треба га закрпити."
  • „Ово је комад овна, а не модул, уопште није требало да се пише, шта је дођавола његов аутор мислио.

Узгред, управо ово „емоционално издање“ тера програмере да зову код „секси“, што је ретко фер – осим ако не радите у ПорнХубу.

Проблем је у томе што су људи чудна, немирна, емотивна створења, а перцепција и изражавање било које емоције нас мења: у почетку суптилно, али временом драматично.

Проблематична клизава падина негативности

Пре неколико година, био сам неформални вођа тима и интервјуисао програмера. Заиста нам се допао: био је паметан, постављао је добра питања, био је технички подкован и добро се уклапао у нашу културу. Посебно ме је импресионирала његова позитивност и колико је деловао предузимљиво. И унајмио сам га.

У то време сам радио у компанији неколико година и осећао сам да наша култура није баш ефикасна. Покушали смо да лансирамо производ два пута, три пута и још пар пута пре него што сам стигао, што је довело до великих трошкова за прераду, током које нисмо имали шта да покажемо осим дугих ноћи, кратких рокова и производа који су радили. И иако сам и даље вредно радио, био сам скептичан у погледу последњег рока који нам је одредио менаџмент. И лежерно је опсовао када је са мојим колегама разговарао о неким аспектима кодекса.

Тако да није било изненађујуће – иако сам био изненађен – да је неколико недеља касније тај исти нови програмер рекао исте негативне ствари које сам ја урадио (укључујући псовке). Схватио сам да би се другачије понашао у другом друштву са другом културом. Само се прилагодио култури коју сам ја створио. Обузело ме је осећање кривице. Због свог субјективног искуства, улио сам песимизам у придошлицу коју сам доживљавао као потпуно другачију. Чак и ако он заиста није био такав и само је изгледао да покаже да може да се уклопи, наметнуо сам му свој усрани став. А све речено, чак и у шали или у пролазу, има лош начин да се претвори у оно у шта се верује.

Љутња на код: програмери и негативност

Негативни начини

Вратимо се нашим бившим програмерима почетницима, који су стекли мало мудрости и искуства: боље су се упознали са програмском индустријом и схватају да је лош код свуда, да се не може избећи. Јавља се чак иу најнапреднијим компанијама фокусираним на квалитет (и да приметим: очигледно, модерност не штити од лошег кода).

Добар сценарио. Временом, програмери почињу да прихватају да је лош код стварност софтвера и да је њихов посао да га побољшају. И да ако се лош код не може избећи, онда нема смисла правити галаму око тога. Они иду путем зена, фокусирајући се на решавање проблема или задатака са којима се суочавају. Они уче како да прецизно мере и пренесу квалитет софтвера власницима предузећа, пишу добро утемељене процене на основу свог дугогодишњег искуства и на крају добијају великодушне награде за своју невероватну и сталну вредност за пословање. Они раде свој посао тако добро да добијају 10 милиона долара бонуса и одлазе у пензију да раде оно што желе до краја живота (молим вас, немојте то узимати здраво за готово).

Љутња на код: програмери и негативност

Други сценарио је пут таме. Уместо да прихвате лош код као неизбежност, програмери преузимају на себе да прозивају све лоше у свету програмирања како би могли да то превазиђу. Одбијају да побољшају постојећи лош код из много добрих разлога: „људи треба да знају више и да не буду тако глупи“; „непријатно је“; „ово је лоше за посао“; „ово доказује колико сам паметан“; „Ако вам не кажем која је ово лоша шифра, цела компанија ће пасти у океан“, итд.

Сигурно у немогућности да спроведу промене које желе јер посао нажалост мора да се развија и не може да троши време бринући о квалитету кода, ови људи стичу репутацију жалиоца. Они су задржани због своје високе компетенције, али су гурнути на маргине компаније, где неће сметати многим људима, али ће и даље подржавати рад критичних система. Без приступа новим развојним могућностима, они губе вештине и престају да испуњавају захтеве индустрије. Њихова негативност се претвара у горку горчину, и као резултат тога они хране свој его свађајући се са двадесетогодишњим студентима о путу којим је кренула њихова омиљена стара технологија и зашто је још увек тако врућа. На крају одлазе у пензију и доживе старост псујући птице.

Реалност се вероватно налази негде између ове две крајности.

Неке компаније су биле изузетно успешне у стварању екстремно негативних, изолованих култура јаке воље (попут Мицрософта пре њега изгубљену деценију) - често су то компаније са производима који се савршено уклапају у тржиште и потребу да расту што је брже могуће; или компаније са хијерархијом командовања и контроле (Аппле у најбољим годинама Јобса), где свако ради шта му се каже. Међутим, савремена пословна истраживања (и здрав разум) сугеришу да максимална генијалност, која води до иновативности у компанијама, и високе продуктивности код појединаца, захтева низак ниво стреса да би се подржало креативно и методично размишљање које је у току. И изузетно је тешко радити креативан посао заснован на дискусији ако се стално бринете шта ће ваше колеге имати да кажу о свакој линији вашег кода.

Негативност је инжењеринг поп културе

Данас се више пажње поклања ставу инжењера него икада раније. У инжењерским организацијама важи правило „Нема рогова„. На Твитеру се појављује све више анегдота и прича о људима који су напустили ову професију јер нису могли (не би) да наставе да трпе непријатељство и злу вољу према странцима. Чак и Линус Торвалдс недавно се извинио године непријатељства и критике према другим Линук програмерима - то је довело до дебате о ефикасности овог приступа.

Неки и даље бране Линусово право да буде веома критичан – они који би требало да знају много о предностима и манама „токсичне негативности”. Да, уљудност је изузетно важна (чак и фундаментална), али ако сумирамо разлоге зашто многи од нас дозвољавају да се изражавање негативног мишљења претвори у „токсичност“, ови разлози изгледају патерналистички или адолесцентски: „они то заслужују јер су идиоти “, „мора бити сигуран да то више неће поновити”, „да то нису урадили, не би морао да виче на њих” и тако даље. Пример утицаја емоционалних реакција лидера на програмску заједницу је акроним Руби заједнице МИНАСВАН – „Матз је фин па смо ми фини“.

Приметио сам да многи ватрени заговорници приступа „уби будалу“ често веома брину о квалитету и исправности кода, идентификујући се са својим радом. Нажалост, често бркају тврдоћу са крутошћу. Недостатак ове позиције произилази из једноставне људске, али непродуктивне жеље да се осећа супериорно у односу на друге. Људи који буду уроњени у ову жељу постају заглављени на путу таме.

Љутња на код: програмери и негативност

Свет програмирања убрзано расте и гура се према границама свог контејнера – света не-програмирања (или је свет програмирања контејнер за свет не-програмирања? Добро питање).

Како се наша индустрија шири све већим темпом и програмирање постаје приступачније, дистанца између „техничара“ и „нормалних“ се брзо смањује. Свет програмирања је све више изложен међуљудским интеракцијама људи који су одрасли у изолованој штреберској култури раног технолошког бума, и они су ти који ће обликовати нови свет програмирања. И без обзира на било какве друштвене или генерацијске аргументе, ефикасност у име капитализма ће се показати у култури компаније и пракси запошљавања: најбоље компаније једноставно неће запослити никога ко не може неутрално да комуницира са другима, а камоли да има добре односе.

Оно што сам научио о негативности

Ако дозволите да превише негативности контролише ваш ум и интеракције са људима, претварајући се у токсичност, онда је то опасно за тимове производа и скупо за посао. Видео сам (и чуо за) безброј пројеката који су се распали и који су потпуно обновљени уз велике трошкове јер је један програмер од поверења имао љутњу на технологију, други програмер, или чак једну датотеку изабрану да представља квалитет читаве базе кода.

Негативност такође деморалише и уништава односе. Никада нећу заборавити како ме је колега изгрдио што сам ЦСС ставио у погрешан фајл, узнемирило ме и није ми дало да се саберем неколико дана. И у будућности, мало је вероватно да ћу дозволити таквој особи да буде у близини неког од мојих тимова (али ко зна, људи се мењају).

Коначно, негативно буквално штети вашем здрављу.

Љутња на код: програмери и негативност
Мислим да би овако требало да изгледа мајсторска класа осмеха.

Наравно, ово није аргумент у корист блистања од среће, уметања десет милијарди емотикона у сваки пулл захтев или одласка на мајсторску класу осмеха (не, па, ако је то оно што желите, онда нема сумње). Негативност је изузетно важан део програмирања (и људског живота), сигнализирајући квалитет, омогућавајући човеку да изрази осећања и саосећа са другим људским бићима. Негативност указује на увид и разборитост, дубину проблема. Често примећујем да је програмер достигао нови ниво када почне да изражава неверицу у оно у шта је раније био плашљив и несигуран. Људи својим мишљењима показују разумност и самопоуздање. Не можете одбацити израз негативности, то би било орвеловски.

Међутим, негативност треба дозирати и уравнотежити са другим важним људским квалитетима: емпатијом, стрпљењем, разумевањем и хумором. Увек можете рећи особи да је зезнуо ствар без вике или псовања. Не потцењујте овај приступ: ако вам неко без икаквих емоција каже да сте озбиљно забрљали, то је заиста застрашујуће.

Тог пута, пре неколико година, генерални директор ми се обратио. Разговарали смо о тренутном статусу пројекта, а затим је питао како се осећам. Одговорио сам да је све у реду, пројекат иде напред, радили смо споро, можда сам нешто пропустио и да се треба преиспитати. Рекао је да ме је чуо да делим песимистичнија размишљања са колегама у канцеларији, а да су и други то приметили. Објаснио је да ако сумњам, могу да их у потпуности изразим менаџменту, али не и да их „уклоним“. Као водећи инжењер, морам да водим рачуна о томе како моје речи утичу на друге јер имам велики утицај чак и ако то не схватам. И све ми је то рекао веома љубазно, и на крају рекао да ако се заиста тако осећам, онда вероватно треба да размислим шта желим за себе и своју каријеру. Био је то невероватно нежан разговор „узми или сиђи са свог места“. Захвалио сам му се на информацији о томе како је мој промењен став током шест месеци утицао на друге непримећене.

Био је то пример изузетног, ефикасног управљања и снаге меког приступа. Схватио сам да само наизглед потпуно верујем у компанију и њену способност да постигне своје циљеве, али у стварности сам разговарао и комуницирао са другима на потпуно другачији начин. Такође сам схватио да чак и ако се осећам скептично према пројекту на којем радим, не бих требало да показујем своја осећања својим колегама и ширим песимизам као заразу, смањујући наше шансе за успех. Уместо тога, могао сам агресивно да пренесем праву ситуацију свом менаџменту. А да сам осетио да ме не слушају, могао бих да изразим своје неслагање тако што ћу напустити компанију.

Нову прилику добио сам када сам преузео функцију шефа кадровске процене. Као бивши главни инжењер, веома сам пажљив у изражавању свог мишљења о нашем (све бољем) наслеђу кода. Да бисте одобрили промену, морате да замислите тренутну ситуацију, али нећете стићи нигде ако се удубите у стењање, нападе или слично. На крају крајева, овде сам да завршим задатак и не треба да се жалим на код да бих га разумео, проценио или поправио.

У ствари, што више контролишем своју емоционалну реакцију на код, то више разумем шта би то могло да постане и осећам мање конфузије. Када сам се суздржано изразио („овде мора да има простора за даље побољшање“), усрећио сам себе и друге и нисам превише озбиљно схватао ситуацију. Схватио сам да могу да стимулишем и смањим негативност код других ако будем савршено (иритантно?) разуман („у праву си, овај код је прилично лош, али ми ћемо га побољшати“). Драго ми је да видим колико далеко могу да одем на зен путу.

У суштини, стално учим и поново учим важну лекцију: живот је прекратак да бих био стално љут и у болу.

Љутња на код: програмери и негативност

Извор: ввв.хабр.цом

Додај коментар