Koda qəzəb: proqramçılar və mənfilik

Koda qəzəb: proqramçılar və mənfilik

Mən kod parçasına baxıram. Bu, indiyə qədər gördüyüm ən pis kod ola bilər. Verilənlər bazasında yalnız bir qeydi yeniləmək üçün o, kolleksiyadakı bütün qeydləri alır və sonra verilənlər bazasındakı hər bir qeydə, hətta yenilənməsi lazım olmayanlara da yeniləmə sorğusu göndərir. Sadəcə ona verilən dəyəri qaytaran xəritə funksiyası var. Göründüyü kimi eyni dəyərə malik dəyişənlər üçün şərti testlər var, sadəcə olaraq müxtəlif üslublarda adlandırılmışdır (firstName и first_name). Hər YENİLƏMƏ üçün kod fərqli bir növbəyə mesaj göndərir, bu, serversiz fərqli funksiya tərəfindən idarə olunur, lakin eyni verilənlər bazasında fərqli kolleksiya üçün bütün işləri görür. Bu serversiz funksiyanın ətraf mühitdə 100-dən çox funksiyanı ehtiva edən bulud əsaslı “xidmət yönümlü arxitekturadan” olduğunu qeyd etdimmi?

Bunu etmək necə mümkün idi? Üzümü örtdüm və qəhqəhələrimdən açıqca hönkürdüm. Həmkarlarım nə baş verdiyini soruşurlar, mən də rənglərlə danışıram BulkDataImporter.js 2018-in Ən Pis Xitləri. Hamı mənə rəğbətlə başını yelləyir və razılaşır: bunu bizə necə edə bilərdilər?

Mənfilik: proqramçı mədəniyyətində emosional vasitə

Neqativlik proqramlaşdırmada mühüm rol oynayır. O, mədəniyyətimizə daxil edilib və öyrəndiklərimizi bölüşmək üçün istifadə olunur ("siz yox inanarsan, bu kod necə idi!”), məyusluq vasitəsilə rəğbətini ifadə etmək (“Allah, NİYƏ belə edirsən?”), özünü göstərmək (“Mən heç vaxt istəməzdim”). belə etmədi”), günahı başqasının üzərinə atmaq (“biz onun koduna görə uğursuz olduq, onu saxlamaq mümkün deyil”) və ya ən “zəhərli” təşkilatlarda adət olduğu kimi, başqalarına nəzarət etmək utanc hissi (“Nə fikirləşirdin? Düzgün”).

Koda qəzəb: proqramçılar və mənfilik

Mənfilik proqramçılar üçün çox vacibdir, çünki bu, dəyəri çatdırmaq üçün çox təsirli bir yoldur. Mən bir dəfə proqramlaşdırma düşərgəsində iştirak etdim və tələbələrə sənaye mədəniyyətini aşılamaq üçün standart təcrübə səxavətlə memlar, hekayələr və videolar təqdim etmək idi, bunlardan ən populyarları istismar edildi. insanların anlaşılmazlığı ilə qarşılaşdıqda proqramçıların məyusluğu. Yaxşı, Pis, Çirkin, Bunu Etmə, Heç vaxt ayırd etmək üçün emosional vasitələrdən istifadə edə bilmək yaxşıdır. Yeni gələnləri ona hazırlamaq lazımdır ki, yəqin ki, İT-dən uzaq olan həmkarları tərəfindən səhv başa düşüləcək. Dostlarının onlara milyon dollarlıq tətbiq ideyalarını satmağa başlayacağını. Onlar küncdə bir dəstə minotaurla köhnəlmiş kodun sonsuz labirintləri ilə dolaşmalı olacaqlar.

Proqramlaşdırmağı ilk dəfə öyrəndiyimiz zaman “proqramlaşdırma təcrübəsinin” dərinliyi haqqında anlayışımız digər insanların emosional reaksiyalarını müşahidə etməyə əsaslanır. Bunu paylaşımlardan aydın görmək olar sabe ProgrammerHumor, bir çox yeni başlayan proqramçıların ünsiyyətdə olduğu yer. Bir çox yumoristik olanlar, bu və ya digər dərəcədə, müxtəlif mənfi çalarları ilə rənglənir: məyusluq, bədbinlik, qəzəb, təvazökarlıq və s. Əgər bu sizə kifayət etmirsə, şərhləri oxuyun.

Koda qəzəb: proqramçılar və mənfilik

Müşahidə etdim ki, proqramçılar təcrübə qazandıqca daha çox neqativ olurlar. Yeni başlayanlar, onları gözləyən çətinliklərdən xəbərsiz olaraq, həvəslə və bu çətinliklərin səbəbinin sadəcə təcrübə və bilik çatışmazlığı olduğuna inanmaq istəyi ilə başlayırlar; və nəhayət, hadisələrin reallığı ilə qarşılaşacaqlar.

Zaman keçir, onlar təcrübə qazanır və Yaxşı kodu Pisdən ayıra bilirlər. Və o an gələndə gənc proqramçılar açıq-aydın pis kodla işləmək məyusluğunu hiss edirlər. Bir komandada (uzaqdan və ya şəxsən) işləyirlərsə, çox vaxt daha təcrübəli həmkarlarının emosional vərdişlərini qəbul edirlər. Bu, çox vaxt neqativliyin artmasına gətirib çıxarır, çünki gənclər indi kodlar haqqında düşünərək danışa və onu pis və yaxşıya ayıra bilir və bununla da “bildiklərini” göstərirlər. Bu, mənfi cəhətləri daha da gücləndirir: məyusluqdan həmkarlarla yola getmək və qrupun bir hissəsi olmaq asandır; Bad Code-u tənqid etmək başqalarının gözündə statusunuzu və peşəkarlığınızı artırır: mənfi fikir bildirən insanlar çox vaxt daha ağıllı və bacarıqlı kimi qəbul edilir.

Mənfiliyin artması mütləq pis bir şey deyil. Proqramlaşdırmanın müzakirələri, digər məsələlərlə yanaşı, yazılan kodun keyfiyyətinə son dərəcə diqqət yetirir. Kodun nə olması onun yerinə yetirmək üçün nəzərdə tutulmuş funksiyanı (hardware, şəbəkə və s. kənara) tam müəyyən edir, ona görə də həmin kod haqqında öz fikrinizi bildirə bilmək vacibdir. Demək olar ki, bütün müzakirələr kodun kifayət qədər yaxşı olub-olmaması və emosional konnotasiyası kodun keyfiyyətini xarakterizə edən pis kodun təzahürlərinin pislənməsi ilə bağlıdır:

  • "Bu modulda bir çox məntiq uyğunsuzluğu var, bu, əhəmiyyətli performans optimallaşdırılması üçün yaxşı namizəddir."
  • "Bu modul olduqca pisdir, biz onu refaktorlamalıyıq."
  • "Bu modulun mənası yoxdur, onu yenidən yazmaq lazımdır."
  • "Bu modul pisdir, onu yamaq lazımdır."
  • "Bu modul deyil, bir qoç parçasıdır, onu yazmaq lazım deyildi, onun müəllifi nə düşünürdü."

Yeri gəlmişkən, tərtibatçıları kodu "seksual" adlandırmağa vadar edən bu "emosional buraxılış"dır, bu nadir hallarda ədalətli olur - PornHub-da işləmədiyiniz təqdirdə.

Problem ondadır ki, insanlar qəribə, narahat, emosional varlıqlardır və hər hansı bir duyğunun qavranılması və ifadəsi bizi dəyişir: əvvəlcə incə, lakin zaman keçdikcə dramatik şəkildə.

Mənfiliyin problemli sürüşkən yamacı

Bir neçə il əvvəl mən qeyri-rəsmi komanda rəhbəri idim və bir tərtibatçıdan müsahibə aldım. Onu çox bəyəndik: o, ağıllı idi, yaxşı suallar verirdi, texnologiyadan xəbərdar idi və mədəniyyətimizə uyğun gəlirdi. Onun pozitivliyi və nə qədər təşəbbüskar görünməsi məni xüsusilə heyran etdi. Və onu işə götürdüm.

O zaman mən bir-iki il şirkətdə işləyirdim və hiss edirdim ki, mədəniyyətimiz o qədər də təsirli deyil. Mən gələnə qədər iki dəfə, üç dəfə və bir neçə dəfə məhsulu işə salmağa çalışdıq, bu da yenidən işləməyə böyük xərclərə səbəb oldu, bu müddət ərzində uzun gecələr, sıx son tarixlər və işləyən məhsullardan başqa göstərəcək heç bir şeyimiz yox idi. Və hələ də çox çalışsam da, rəhbərlik tərəfindən bizə verilən son müddətə şübhə ilə yanaşırdım. Və o, həmkarlarımla kodun bəzi aspektlərini müzakirə edərkən təsadüfən söyüş söydü.

Buna görə də təəccüblü deyildi - təəccüblənsəm də - bir neçə həftə sonra həmin yeni tərtibatçı mənim etdiyim eyni mənfi şeyləri (söyüş də daxil olmaqla) söylədi. Fərqli mədəniyyətə malik fərqli bir şirkətdə fərqli davranacağını başa düşdüm. Sadəcə mənim yaratdığım mədəniyyətə uyğunlaşdı. Məni günahkarlıq hissi bürüdü. Subyektiv təcrübəmə görə, tamamilə fərqli olaraq qəbul etdiyim yeni gələn bir insana bədbinlik aşıladım. Hətta o, həqiqətən də belə olmasa və sadəcə uyğunlaşa biləcəyini göstərmək üçün görünüşünü ortaya qoysa belə, mən pis münasibətimi ona məcbur etdim. Həm zarafatla, həm də keçib-keçmə ilə deyilən hər şey inanılan şeyə çevrilmək kimi pisdir.

Koda qəzəb: proqramçılar və mənfilik

Mənfi yollar

Bir az müdriklik və təcrübə qazanmış keçmiş yeni başlayan proqramçılara qayıdaq: onlar proqramlaşdırma sənayesi ilə daha yaxından tanış olublar və başa düşürlər ki, pis kod hər yerdədir, ondan qaçmaq olmaz. Bu, hətta keyfiyyətə yönəlmiş ən qabaqcıl şirkətlərdə də baş verir (və qeyd edim: görünür, müasirlik pis kodlardan qorunmur).

Yaxşı skript. Zaman keçdikcə tərtibatçılar pis kodun proqram təminatının reallığı olduğunu və işlərinin onu təkmilləşdirmək olduğunu qəbul etməyə başlayırlar. Və əgər pis kodun qarşısını almaq mümkün deyilsə, bu barədə hay-küy salmağın mənası yoxdur. Qarşılaşdıqları problemlərin və ya vəzifələrin həllinə diqqət yetirərək Zen yolunu tuturlar. Onlar proqram təminatının keyfiyyətini dəqiq ölçməyi və biznes sahiblərinə çatdırmağı, illərin təcrübəsinə əsaslanaraq əsaslı təxminlər yazmağı öyrənir və nəticədə biznes üçün inanılmaz və davamlı dəyərlərinə görə səxavətli mükafatlar alırlar. Onlar öz işlərini o qədər yaxşı görürlər ki, 10 milyon dollar mükafat alırlar və ömürlərinin sonuna qədər istədiklərini etmək üçün təqaüdə çıxırlar (zəhmət olmasa bunu təbii qəbul etməyin).

Koda qəzəb: proqramçılar və mənfilik

Başqa bir ssenari qaranlığın yoludur. Pis kodu qaçılmazlıq kimi qəbul etmək əvəzinə, tərtibatçılar proqramlaşdırma dünyasındakı hər şeyi pis adlandırmağı öz üzərlərinə götürürlər ki, bunun öhdəsindən gələ bilsinlər. Onlar bir çox yaxşı səbəblərə görə mövcud pis kodu təkmilləşdirməkdən imtina edirlər: “insanlar daha çox bilməlidirlər və o qədər də axmaq olmamalıdırlar”; "xoşagəlməz"; "bu, biznes üçün pisdir"; “Bu, mənim nə qədər ağıllı olduğumu sübut edir”; "Əgər bunun nə iyrənc kod olduğunu sizə deməsəm, bütün şirkət okeana düşəcək" və s.

Əlbəttə ki, istədikləri dəyişiklikləri həyata keçirə bilmirlər, çünki biznes təəssüf ki, inkişaf etməyə davam etməlidir və kodun keyfiyyətindən narahat olmağa vaxt sərf edə bilməz, bu insanlar şikayətçi kimi şöhrət qazanırlar. Onlar yüksək səriştələri üçün saxlanılır, lakin şirkətin kənarlarına itələnirlər, burada çox insanı qıcıqlandırmayacaqlar, lakin yenə də kritik sistemlərin işini dəstəkləyəcəklər. Yeni inkişaf imkanlarına çıxışı olmadan, onlar bacarıqlarını itirir və sənaye tələblərinə cavab vermirlər. Onların neqativliyi acı acıya çevrilir və nəticədə iyirmi yaşlı tələbələrlə sevimli köhnə texnologiyanın getdiyi səyahət və hələ də niyə bu qədər isti olması barədə mübahisə edərək eqolarını qidalandırırlar. Sonda təqaüdə çıxırlar və qocalıqlarını quşları söyərək yaşayırlar.

Reallıq yəqin ki, bu iki ifrat arasında bir yerdədir.

Bəzi şirkətlər son dərəcə mənfi, təcrid olunmuş, güclü iradəli mədəniyyətlər yaratmaqda son dərəcə uğurlu olmuşdur (Microsoft kimi itirilmiş onillik) - çox vaxt bunlar bazara mükəmməl uyğun gələn və mümkün qədər tez böyümək ehtiyacı olan məhsulları olan şirkətlərdir; ya da komanda və nəzarət iyerarxiyasına malik şirkətlər (İşin ən yaxşı illərində Apple), burada hər kəs onlara deyilənləri edir. Bununla belə, müasir biznes tədqiqatları (və sağlam düşüncə) göstərir ki, şirkətlərdə yenilikçiliyə və fərdlərdə yüksək məhsuldarlığa səbəb olan maksimum ixtiraçılıq davamlı yaradıcı və metodik düşüncəni dəstəkləmək üçün aşağı səviyyədə stress tələb edir. Həmkarlarınızın kodunuzun hər bir sətri haqqında deyəcəkləri barədə daim narahat olsanız, yaradıcı, müzakirəyə əsaslanan iş görmək olduqca çətindir.

Mənfilik mühəndislik pop mədəniyyətidir

Bu gün mühəndislərin münasibətinə əvvəlkindən daha çox diqqət yetirilir. Mühəndislik təşkilatlarında qayda "Buynuz yoxdur". Tvitterdə bu peşəni tərk edən insanlar haqqında getdikcə daha çox lətifə və hekayələr peyda olur, çünki kənar şəxslərə qarşı düşmənçilik və pis niyyətlə davam edə bilməyəcəklər. Hətta Linus Torvalds bu yaxınlarda üzr istədi digər Linux tərtibatçılarına qarşı illərlə düşmənçilik və tənqid - bu, bu yanaşmanın effektivliyi haqqında müzakirələrə səbəb oldu.

Bəziləri hələ də Linusun çox tənqidi olmaq hüququnu müdafiə edirlər - "toksik mənfiliyin" üstünlükləri və mənfi cəhətləri haqqında çox şey bilməli olanlar. Bəli, mədənilik son dərəcə vacibdir (hətta fundamentaldır), lakin bir çoxumuzun mənfi fikirlərin ifadəsinin “toksikliyə” çevrilməsinə yol verməsinin səbəblərini ümumiləşdirsək, bu səbəblər atalıq və ya yeniyetmə görünür: “Onlar buna layiqdirlər, çünki axmaqdırlar. ", "bir daha etməyəcəklərinə əmin olmalıdır", "bunu etməsəydilər, onlara qışqırmağa məcbur olmazdı" və s. Liderin emosional reaksiyalarının proqramlaşdırma cəmiyyətinə təsiri nümunəsi Ruby icmasının MINASWAN abbreviaturasıdır - "Matz gözəldir, ona görə də biz gözəlik".

Mən müşahidə etmişəm ki, "axmaq öldürmək" yanaşmasının bir çox qızğın tərəfdarları tez-tez kodun keyfiyyətinə və düzgünlüyünə çox əhəmiyyət verir, özlərini işləri ilə eyniləşdirirlər. Təəssüf ki, onlar çox vaxt sərtliyi sərtliklə qarışdırırlar. Bu mövqeyin dezavantajı sadə insan, lakin özünü başqalarından üstün hiss etmək səmərəsiz istəyindən irəli gəlir. Bu arzuya qərq olan insanlar zülmət yolunda ilişib qalırlar.

Koda qəzəb: proqramçılar və mənfilik

Proqramlaşdırma dünyası sürətlə böyüyür və öz konteynerinin sərhədlərinə - qeyri-proqramlaşdırma dünyasına (yaxud proqramlaşdırma dünyası qeyri-proqramlaşdırma dünyası üçün konteynerdir? Yaxşı sual) qarşı irəliləyir.

Sənayemiz getdikcə artan sürətlə genişləndikcə və proqramlaşdırma daha əlçatan olduqca, “texniki mütəxəssislər” və “normallar” arasındakı məsafə sürətlə bağlanır. Proqramlaşdırma dünyası getdikcə erkən texnoloji bumun təcrid olunmuş nerd mədəniyyətində böyümüş insanların şəxsiyyətlərarası qarşılıqlı əlaqəsinə məruz qalır və proqramlaşdırmanın yeni dünyasını formalaşdıran da məhz onlardır. Və hər hansı sosial və ya nəsil arqumentlərindən asılı olmayaraq, kapitalizm adına səmərəlilik şirkət mədəniyyətində və işə götürmə təcrübələrində özünü göstərəcək: ən yaxşı şirkətlər sadəcə olaraq başqaları ilə neytral münasibət qura bilməyən, yaxşı münasibətlər qura bilməyən hər kəsi işə götürməzlər.

Mənfilik haqqında öyrəndiklərim

Əgər siz həddən artıq neqativin zehninizi və insanlarla qarşılıqlı əlaqənizi idarə etməyə, toksikliyə çevrilməsinə icazə verirsinizsə, bu, məhsul komandaları üçün təhlükəlidir və biznes üçün bahadır. Bir etibarlı tərtibatçının texnologiyaya, başqa bir tərtibatçıya və ya hətta bütün kod bazasının keyfiyyətini təmsil etmək üçün seçilmiş bir fayla qarşı kin bəslədiyi üçün dağılmış və tamamilə yenidən qurulmuş saysız-hesabsız layihələr görmüşəm (və eşitmişəm).

Mənfilik həm də münasibətləri ruhdan salır və məhv edir. CSS-ni səhv fayla qoyduğum üçün bir həmkarımın məni necə danladığını heç vaxt unutmayacağam, bu, məni əsəbləşdirdi və bir neçə gün fikirlərimi toplamağa imkan vermədi. Gələcəkdə çətin ki, belə bir insanın komandalarımdan birinin yanında olmasına icazə verəcəm (amma kim bilir, insanlar dəyişir).

Nəhayət, mənfi sözün əsl mənasında sağlamlığınıza zərər verir.

Koda qəzəb: proqramçılar və mənfilik
Düşünürəm ki, təbəssümlər üzrə master-klass belə olmalıdır.

Əlbəttə ki, bu, xoşbəxtliklə parıldamaq, hər çəkiliş sorğusuna on milyard ifadələr əlavə etmək və ya təbəssümlər üzrə master-klassa getmək lehinə bir mübahisə deyil (yox, yaxşı, əgər istədiyiniz budursa, sual yoxdur). Mənfilik proqramlaşdırmanın (və insan həyatının) son dərəcə vacib hissəsidir, keyfiyyət siqnalıdır, insana hisslərini ifadə etməyə və digər insanlarla rəğbət bəsləməyə imkan verir. Mənfilik bəsirət və ehtiyatlılığı, problemin dərinliyini göstərir. Mən tez-tez bir inkişaf etdiricinin əvvəllər qorxduğu və əmin olmadığı şeylərə inamsızlığını ifadə etməyə başlayanda yeni səviyyəyə çatdığını görürəm. İnsanlar öz fikirləri ilə ağlabatanlıq və inam nümayiş etdirirlər. Mənfi ifadəni rədd edə bilməzsiniz, bu Orwellian olardı.

Bununla belə, mənfilik digər mühüm insan keyfiyyətləri: empatiya, səbir, anlayış və yumorla dozalanmalı və balanslaşdırılmalıdır. Siz həmişə bir insana qışqırmadan və söyüş söymədən yıxıldığını deyə bilərsiniz. Bu yanaşmanı qiymətləndirməyin: kimsə sizə heç bir emosiya olmadan ciddi şəkildə qarışdığınızı söyləyirsə, bu, həqiqətən qorxuncdur.

O vaxt, bir neçə il əvvəl baş direktor mənimlə danışdı. Layihənin hazırkı vəziyyətini müzakirə etdik, sonra o, mənim necə hiss etdiyimi soruşdu. Cavab verdim ki, hər şey qaydasındadır, layihə irəliləyir, ləng işləyirik, bəlkə də nəyisə qaçırmışam və yenidən nəzərdən keçirmək lazımdır. O, ofisdəki həmkarları ilə daha pessimist fikirlər paylaşdığımı eşitdiyini və başqalarının da bunu fərq etdiyini söylədi. O izah etdi ki, əgər şübhələrim varsa, onları rəhbərliyə tam şəkildə bildirə bilərəm, amma “onları aşağı sala bilmirəm”. Aparıcı mühəndis olaraq sözlərimin başqalarına necə təsir etdiyini nəzərə almalıyam, çünki fərqində olmasam da çox təsirliyəm. Və bütün bunları mənə çox mehribancasına danışdı və nəhayət dedi ki, əgər mən həqiqətən də belə hiss edirəmsə, o zaman yəqin ki, özüm və karyeram üçün nə istədiyimi düşünməliyəm. Bu, inanılmaz dərəcədə yumşaq, alın və ya yerindən qalxan söhbət idi. Altı ay ərzində dəyişdiyim münasibətin mənim görmədiyim başqalarına necə təsir etdiyi barədə məlumat üçün ona təşəkkür etdim.

Bu, diqqətəlayiq, effektiv idarəetmənin və yumşaq yanaşmanın gücünün nümunəsi idi. Başa düşdüm ki, mən sadəcə şirkətə və onun məqsədlərinə çatmaq qabiliyyətinə tam inanmış kimi görünürdüm, amma əslində başqaları ilə tamamilə fərqli bir şəkildə danışdım və ünsiyyət qurdum. Onu da anladım ki, üzərində işlədiyim layihəyə şübhə ilə yanaşsam belə, öz hisslərimi həmkarlarıma göstərməməli və pessimizmi yoluxucu bir xəstəlik kimi yaymalı, uğur şanslarımızı azaltmalıyam. Əvəzində aqressiv şəkildə real vəziyyəti rəhbərliyimə çatdıra bildim. Və əgər mənə qulaq asmadıqlarını hiss etsəm, şirkətdən ayrılaraq narazılığımı bildirə bilərdim.

Kadrların qiymətləndirilməsinin rəhbəri vəzifəsinə başlayanda yeni fürsət əldə etdim. Keçmiş baş mühəndis kimi mən (daim təkmilləşən) miras kodumuz haqqında fikirlərimi bildirməkdə çox ehtiyatlıyam. Dəyişikliyi təsdiqləmək üçün indiki vəziyyəti təsəvvür etməlisən, ancaq inildəmək, hücum etmək və ya buna bənzər şeylər içində yellənsən, heç bir yerə çatmayacaqsan. Nəhayət, mən tapşırığı yerinə yetirmək üçün buradayam və onu başa düşmək, qiymətləndirmək və ya düzəltmək üçün koddan şikayət etməməliyəm.

Əslində, koda emosional reaksiyamı nə qədər çox idarə etsəm, onun nə ola biləcəyini bir o qədər çox başa düşürəm və bir o qədər az çaşqınlıq hiss edirəm. Özümü təmkinlə ifadə edəndə (“burada daha da təkmilləşmək üçün yer olmalıdır”) özümü və başqalarını sevindirir, vəziyyəti çox da ciddi qəbul etmirdim. Mən başa düşdüm ki, mən mükəmməl (zəhlətökən?) ağlabatan olmaqla başqalarında mənfiliyi stimullaşdıra və azalda bilərəm (“doğru deyirsən, bu kod olduqca pisdir, lakin biz onu təkmilləşdirəcəyik”). Zen yolunda nə qədər irəli gedə biləcəyimi görməkdən məmnunam.

Əslində, mən davamlı olaraq vacib bir dərs öyrənirəm və yenidən öyrənirəm: həyat daim qəzəbli və ağrılı olmaq üçün çox qısadır.

Koda qəzəb: proqramçılar və mənfilik

Mənbə: www.habr.com

Добавить комментарий