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

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

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

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

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

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

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

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

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

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

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

Времето минува, тие стекнуваат искуство и стануваат способни да разликуваат Добар од Лош код. И кога ќе дојде тој момент, младите програмери чувствуваат фрустрација од работењето со очигледно лош код. И ако работат во тим (од далечина или лично), често ги прифаќаат емотивните навики на поискусните колеги. Ова често доведува до зголемување на негативноста, бидејќи младите луѓе сега можат смислено да зборуваат за кодот и да го поделат на лош и добар, а со тоа да покажат дека се „во знаење“. Ова дополнително го засилува негативното: од разочарување, лесно е да се сложувате со колегите и да станете дел од група; критикувањето на Bad Code го зголемува вашиот статус и професионализам во очите на другите: луѓето кои изразуваат негативни мислења често се перципирани како поинтелигентни и покомпетентни.

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

  • „Има многу логички недоследности во овој модул, тој е добар кандидат за значителна оптимизација на перформансите.
  • „Овој модул е ​​прилично лош, треба да го рефакторираме“.
  • „Овој модул нема смисла, треба да се преработи.
  • „Овој модул е ​​гаден, треба да се закрпи“.
  • „Ова е парче овен, а не модул, воопшто не требаше да се пишува, што по ѓаволите мислеше неговиот автор“.

Патем, токму ова „емоционално ослободување“ ги тера програмерите да го нарекуваат кодот „секси“, што ретко е фер - освен ако не работите во PornHub.

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

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

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

Во тоа време, работев во компанијата неколку години и чувствував дека нашата култура не е многу ефикасна. Се обидовме да го лансираме производот двапати, три пати и уште неколку пати пред да пристигнам, што доведе до големи трошоци за преработка, при што немавме што да покажеме освен долги ноќи, тесни рокови и продукти кои функционираа. И иако сè уште работев напорно, бев скептичен за последниот рок што ни го додели раководството. И тој случајно се заколна кога разговараше за некои аспекти на кодот со моите колеги.

Затоа, не беше изненадувачки - иако бев изненаден - што неколку недели подоцна, истиот нов програмер ги кажа истите негативни работи што ги правев (вклучувајќи и пцуење). Сфатив дека тој ќе се однесува поинаку во друго друштво со различна култура. Тој само се прилагоди на културата што ја создадов. Бев обземен од чувство на вина. Поради моето субјективно искуство, всадив песимизам кај новодојденец кој го сметав за сосема поинаков. Дури и ако тој навистина не беше таков и само се појавуваше за да покаже дека може да се вклопи, јас му го натерав мојот посран став. И сè што е кажано, дури и на шега или на минување, има лош начин да се претвори во она што се верува.

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

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

Да се ​​вратиме на нашите поранешни програмери почетници, кои стекнаа малку мудрост и искуство: тие се запознаа повеќе со програмската индустрија и разбираат дека лош код е насекаде, не може да се избегне. Тоа се случува дури и во најнапредните компании фокусирани на квалитетот (и дозволете ми да забележам: очигледно, модерноста не штити од лош код).

Добро сценарио. Со текот на времето, програмерите почнуваат да прифаќаат дека лошиот код е реалност на софтверот и дека нивната работа е да го подобрат. И дека ако лошиот код не може да се избегне, тогаш нема смисла да се прави врева околу тоа. Тие го преземаат патот на Зен, фокусирајќи се на решавање на проблеми или задачи со кои се соочуваат. Тие учат како прецизно да го мерат и да го пренесат квалитетот на софтверот со сопствениците на бизниси, да пишуваат добро основани проценки врз основа на нивното долгогодишно искуство и на крајот добиваат дарежливи награди за нивната неверојатна и постојана вредност за бизнисот. Тие ја работат својата работа толку добро што добиваат 10 милиони долари бонуси и се пензионираат за да го прават тоа што го сакаат до крајот на животот (ве молам не го земајте здраво за готово).

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

Друго сценарио е патот на темнината. Наместо да го прифатат лошиот код како неизбежност, програмерите си земаат за право да прогласат се што е лошо во светот на програмирањето за да можат да го надминат. Тие одбиваат да го подобрат постоечкиот лош код од многу добри причини: „луѓето треба да знаат повеќе и да не бидат толку глупави“; „непријатно е“; „Ова е лошо за бизнисот“; „Ова докажува колку сум паметен“; „Ако не ви кажам каков лош код е ова, целата компанија ќе падне во океанот“, и така натаму.

Сигурно неможејќи да ги имплементираат промените што ги сакаат бидејќи бизнисот за жал мора да продолжи да се развива и не може да троши време грижејќи се за квалитетот на кодот, овие луѓе стекнуваат репутација на жалби. Тие се задржани поради нивната висока компетентност, но се туркаат на маргините на компанијата, каде што нема да изнервираат многу луѓе, но сепак ќе ја поддржат работата на критичните системи. Без пристап до нови можности за развој, тие ги губат вештините и престануваат да ги задоволуваат барањата на индустријата. Нивната негативност се претвора во горчлива горчина, а како резултат на тоа тие го хранат своето его со расправија со дваесетгодишни студенти за патувањето што го поминала нивната омилена стара технологија и зошто е сè уште толку жешко. Тие завршуваат во пензија и ја живеат староста пцуејќи се на птиците.

Реалноста веројатно лежи некаде помеѓу овие две крајности.

Некои компании беа исклучително успешни во создавањето екстремно негативни, островски култури со силна волја (како Мајкрософт порано изгубена деценија) - често тоа се компании со производи кои совршено одговараат на пазарот и потребата да растат што е можно побрзо; или компании со хиерархија на команда и контрола (Apple во најдобрите години на Jobs), каде што секој го прави она што му е кажано. Сепак, современите деловни истражувања (и здравиот разум) сугерираат дека максималната генијалност, која води до иновативност во компаниите и висока продуктивност кај поединците, бара ниски нивоа на стрес за да се поддржи тековното креативно и методично размислување. Исклучително е тешко да се направи креативна работа заснована на дискусија ако постојано се грижите што вашите колеги ќе имаат да кажат за секоја линија од вашиот код.

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

Денес, на ставот на инженерите се посветува повеќе внимание од кога било досега. Во инженерските организации, правилото „Без рогови“. На Твитер се појавуваат сè повеќе анегдоти и приказни за луѓе кои ја напуштиле оваа професија затоа што не можеле (не) да продолжат да поднесуваат непријателство и лоша волја кон надворешни лица. Дури и Линус Торвалдс неодамна се извини години на непријателство и критики кон другите развивачи на Линукс - ова доведе до дебата за ефективноста на овој пристап.

Некои сè уште го бранат правото на Линус да биде многу критичен - оние кои треба да знаат многу за предностите и недостатоците на „токсичната негативност“. Да, учтивоста е исклучително важна (дури и фундаментална), но ако ги сумираме причините зошто многумина од нас дозволуваат изразувањето на негативните мислења да се претвори во „токсичност“, овие причини изгледаат патерналистички или адолесцентни: „тие го заслужуваат тоа затоа што се идиоти. “, „Тој мора да биде сигурен дека нема да го сторат тоа повторно“, „да не го направеа тоа, тој немаше да мора да им вика“ и така натаму. Пример за влијанието на емоционалните реакции на лидерот врз програмската заедница е акронимот на заедницата Руби MINASWAN - „Матц е убав, па ние сме убави“.

Забележав дека многу жестоки поборници на пристапот „убиј будала“ често се грижат многу за квалитетот и исправноста на кодот, идентификувајќи се себеси со нивната работа. За жал, тие често ја мешаат цврстината со ригидноста. Недостатокот на оваа позиција произлегува од едноставната човечка, но непродуктивна желба да се чувствувате супериорни во однос на другите. Луѓето кои се нурнати во оваа желба, заглавуваат на патот на темнината.

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

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

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

Што научив за негативноста

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

Негативноста исто така ги деморализира и уништува врските. Никогаш нема да заборавам како еден колега ме искара што ставив CSS во погрешна датотека, тоа ме вознемири и не ми дозволуваше да ги соберам мислите неколку дена. И во иднина, мала е веројатноста да дозволам таква личност да биде во близина на еден од моите тимови (но кој знае, луѓето се менуваат).

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

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

Се разбира, ова не е аргумент во корист на светење од среќа, вметнување десет милијарди емотикони во секое барање за повлекување или одење на мастер клас за насмевки (не, добро, ако тоа е она што го сакате, тогаш нема проблем). Негативноста е исклучително важен дел од програмирањето (и човечкиот живот), квалитетот на сигнализацијата, дозволувајќи им на некој да изрази чувства и да се сочувствува со другите луѓе. Негативноста укажува на увид и претпазливост, длабочината на проблемот. Често забележувам дека развивачот достигна ново ниво кога почнува да изразува неверување во она за што претходно бил плашлив и несигурен. Луѓето покажуваат разумност и доверба со своите мислења. Не можете да го отфрлите изразот на негативност, тоа би било Орвелово.

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

Тој пат, пред неколку години, извршниот директор разговараше со мене. Разговаравме за моменталниот статус на проектот, а потоа ме праша како се чувствувам. Јас одговорив дека се е во ред, проектот се движи, работевме полека, можеби нешто пропуштив и требаше да се преиспитам. Тој рече дека ме слушнал како споделувам попесимистички мисли со колегите во канцеларијата, а тоа го забележале и другите. Тој објасни дека ако имам сомнежи, можам целосно да ги изразам на раководството, но не и „да ги симнам“. Како главен инженер, морам да внимавам на тоа како моите зборови влијаат на другите бидејќи имам големо влијание дури и ако не го сфаќам тоа. И тој ми го кажа сето тоа многу љубезно, и на крајот рече дека ако навистина се чувствувам така, тогаш веројатно треба да размислам што сакам за себе и за мојата кариера. Тоа беше неверојатно благ разговор, кренете-или-излезете од вашето седиште. Му се заблагодарив за информацијата за тоа како мојот променет став во текот на шест месеци влијаеше на другите незабележано од мене.

Тоа беше пример за извонредно, ефективно управување и моќта на мекиот пристап. Сфатив дека само се чинеше дека имам целосна верба во компанијата и нејзината способност да ги постигне своите цели, но во реалноста зборував и комуницирав со другите на сосема поинаков начин. Сфатив и дека дури и да се чувствувам скептичен за проектот на кој работам, не треба да им ги покажувам чувствата на колегите и да ширам песимизам како зараза, намалувајќи ги нашите шанси за успех. Наместо тоа, можев агресивно да ја пренесам реалната ситуација на моето раководство. И ако почувствував дека не ме слушаат, можев да го изразам моето несогласување со напуштање на компанијата.

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

Всушност, колку повеќе ја контролирам мојата емоционална реакција на кодот, толку повеќе разбирам што може да стане и толку помалку чувствувам конфузија. Кога се изразив воздржано („Тука мора да има простор за понатамошно подобрување“), се израдував себеси и другите и не ја сфаќав ситуацијата премногу сериозно. Сфатив дека можам да стимулирам и да ја намалам негативноста кај другите со тоа што ќе бидам совршено (досадно?) разумен („во право си, овој код е прилично лош, но ние ќе го подобриме“). Мило ми е што гледам колку далеку можам да одам на патеката Зен.

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

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

Извор: www.habr.com

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