Kodlara duyulan öfke: programcılar ve olumsuzluk

Kodlara duyulan öfke: programcılar ve olumsuzluk

Bir kod parçasına bakıyorum. Bu şimdiye kadar gördüğüm en kötü kod olabilir. Veritabanındaki tek bir kaydı güncellemek için koleksiyondaki tüm kayıtları alır ve ardından güncellenmesi gerekmeyenler de dahil olmak üzere veritabanındaki her kayda bir güncelleme isteği gönderir. Kendisine iletilen değeri döndüren bir harita işlevi vardır. Görünüşte aynı değere sahip, sadece farklı tarzlarda adlandırılan değişkenler için koşullu testler vardır (firstName и first_name). Her GÜNCELLEME için kod, farklı bir sunucusuz işlev tarafından yönetilen ancak aynı veritabanındaki farklı bir koleksiyon için tüm işi yapan farklı bir kuyruğa bir mesaj gönderir. Bu sunucusuz fonksiyonun, ortamda 100'den fazla fonksiyon içeren bulut tabanlı "hizmet odaklı bir mimariye" ait olduğunu söylemiş miydim?

Bunu yapmak nasıl mümkün oldu? Yüzümü kapatıyorum ve kahkahalarımın arasında gözle görülür bir şekilde hıçkırıyorum. Meslektaşlarım ne olduğunu soruyor, ben de renkli olarak anlatıyorum BulkDataImporter.js 2018'in En Kötü Etkileri. Herkes bana anlayışla başını sallıyor ve aynı fikirde: Bunu bize nasıl yapabildiler?

Olumsuzluk: programcı kültüründe duygusal bir araç

Olumsuzluk programlamada önemli bir rol oynar. Kültürümüze yerleşmiştir ve öğrendiklerimizi paylaşmak için kullanılır (“bilmiyorsun) buna inanacaksın, bu nasıl bir kuraldı!”), hayal kırıklığı yoluyla sempatiyi ifade etmek (“Tanrım, bunu NEDEN yaptın?”), kendini göstermek (“Asla yapmam” bu yüzden yapmadı”), suçu başkasının üzerine yıkmak (“sürdürülmesi imkansız olan kuralları nedeniyle başarısız olduk”) veya en “zehirli” organizasyonlarda alışılageldiği gibi başkalarını bir kontrol yoluyla kontrol etmek. utanç duygusu (“Ne düşünüyordun ki?” ? doğru”).

Kodlara duyulan öfke: programcılar ve olumsuzluk

Olumsuzluk programcılar için çok önemlidir çünkü değeri aktarmanın çok etkili bir yoludur. Bir keresinde bir programlama kampına katılmıştım ve öğrencilere bir endüstri kültürü aşılamanın standart uygulaması, memleri, hikayeleri ve videoları cömertçe sağlamaktı; en popülerleri ise istismar edilmişti. programcıların insanların yanlış anlaması karşısında yaşadığı hayal kırıklığı. İyiyi, Kötüyü, Çirkin'i tanımlamak için duygusal araçları kullanabilmek güzel, Bunu Yapmayın, Asla. Yeni gelenleri, BT'den uzak meslektaşları tarafından muhtemelen yanlış anlaşılacakları gerçeğine hazırlamak gerekir. Arkadaşları onlara milyon dolarlık uygulama fikirleri satmaya başlayacak. Köşede bir sürü minotor varken, modası geçmiş kodlardan oluşan sonsuz labirentlerde dolaşmak zorunda kalacaklar.

Programlamayı ilk öğrendiğimizde “programlama deneyiminin” derinliğine dair anlayışımız, diğer insanların duygusal tepkilerini gözlemlemeye dayanır. Bu, mesajlardan açıkça görülebilmektedir. sabe ProgramcıMizah, birçok yeni programcının takıldığı yer. Esprili olanların çoğu, bir dereceye kadar farklı olumsuzluk tonlarıyla renklendirilmiştir: hayal kırıklığı, karamsarlık, öfke, küçümseme ve diğerleri. Bu size yeterli gelmiyorsa yorumları okuyun.

Kodlara duyulan öfke: programcılar ve olumsuzluk

Programcıların deneyim kazandıkça giderek daha olumsuz hale geldiklerini fark ettim. Yeni başlayanlar, kendilerini bekleyen zorlukların farkında olmadan, bu zorlukların nedeninin sadece deneyim ve bilgi eksikliği olduğuna inanma isteğiyle ve şevkle başlarlar; ve eninde sonunda gerçeklerle yüzleşecekler.

Zaman geçtikçe deneyim kazanırlar ve İyi kodu Kötüden ayırt edebilir hale gelirler. Ve o an geldiğinde, genç programcılar açıkça kötü kodlarla çalışmanın hayal kırıklığını hissediyorlar. Ve eğer bir takım halinde çalışıyorlarsa (uzaktan veya yüz yüze), genellikle daha deneyimli meslektaşlarının duygusal alışkanlıklarını benimserler. Bu genellikle olumsuzluğun artmasına neden olur, çünkü gençler artık kod hakkında düşünceli bir şekilde konuşup onu iyi ve kötü olarak ayırabiliyor ve böylece "bilgi sahibi" olduklarını gösterebiliyorlar. Bu, olumsuzluğu daha da güçlendirir: Hayal kırıklığı nedeniyle meslektaşlarınızla iyi geçinmek ve bir grubun parçası olmak kolaydır; Kötü Kodu eleştirmek, başkalarının gözünde statünüzü ve profesyonelliğinizi artırır: Olumsuz görüşlerini ifade eden kişiler genellikle daha zeki ve yetkin olarak algılanır.

Olumsuzluğun artması mutlaka kötü bir şey değildir. Programlama tartışmaları, diğer şeylerin yanı sıra, son derece yazılan kodun kalitesine odaklanmıştır. Kodun ne olduğu, yapması amaçlanan işlevi (donanım, ağ vb. bir yana) tamamen tanımlar, dolayısıyla bu kod hakkındaki düşüncelerinizi ifade edebilmeniz önemlidir. Neredeyse tüm tartışmalar, kodun yeterince iyi olup olmadığına ve kötü kodun tezahürlerini, duygusal çağrışımı kodun kalitesini karakterize eden terimlerle kınamaya varıyor:

  • "Bu modülde pek çok mantık tutarsızlığı var; önemli performans optimizasyonu için iyi bir aday."
  • "Bu modül oldukça kötü, onu yeniden düzenlememiz gerekiyor."
  • "Bu modül mantıklı değil, yeniden yazılması gerekiyor."
  • "Bu modül berbat, yamanması gerekiyor."
  • "Bu bir koç parçası, bir modül değil, yazılmasına hiç gerek yoktu, yazarı ne düşünüyordu."

Bu arada, geliştiricilerin kodu "seksi" olarak adlandırmasına neden olan da bu "duygusal salınım"dır ve bu nadiren adildir - PornHub'da çalışmadığınız sürece.

Sorun, insanların tuhaf, huzursuz, duygusal yaratıklar olması ve herhangi bir duygunun algılanması ve ifade edilmesinin bizi değiştirmesidir: ilk başta incelikli bir şekilde, ancak zamanla dramatik bir şekilde.

Olumsuzluğun sorunlu, kaygan bir eğimi

Birkaç yıl önce resmi olmayan bir ekip lideriydim ve bir geliştiriciyle röportaj yaptım. Onu gerçekten sevdik: Zekiydi, iyi sorular soruyordu, teknolojiye meraklıydı ve kültürümüze çok iyi uyuyordu. Özellikle pozitifliğinden ve ne kadar girişimci göründüğünden etkilendim. Ve onu işe aldım.

O dönemde birkaç yıldır şirkette çalışıyordum ve kültürümüzün pek etkili olmadığını hissediyordum. Ben gelmeden önce ürünü iki, üç kez ve birkaç kez daha piyasaya sürmeye çalıştık, bu da yeniden işleme konusunda büyük masraflara yol açtı; bu süre zarfında uzun geceler, sıkı teslim tarihleri ​​ve işe yarayan ürünler dışında gösterecek hiçbir şeyimiz yoktu. Hâlâ çok çalışıyor olmama rağmen, yönetim tarafından bize verilen son teslim tarihi konusunda şüpheliydim. Ve meslektaşlarımla kodun bazı yönlerini tartışırken gelişigüzel küfretti.

Dolayısıyla, birkaç hafta sonra aynı yeni geliştiricinin benimle aynı olumsuz şeyleri (küfür dahil) söylemesi -her ne kadar şaşırmış olsam da- şaşırtıcı değildi. Farklı bir kültüre sahip farklı bir şirkette farklı davranacağını fark ettim. Benim yarattığım kültüre uyum sağladı. Suçluluk duygusuna yenik düştüm. Kişisel deneyimim nedeniyle, yeni gelen ve tamamen farklı olarak algıladığım birine karamsarlık aşıladım. Gerçekten öyle olmasa ve sadece uyum sağlayabileceğini göstermek için bir görünüm sergiliyor olsa bile, ben ona boktan tavrımı dayattım. Ve söylenen her şey, ister şaka olsun ister laf olsun, inanılana dönüşme gibi kötü bir üslup taşır.

Kodlara duyulan öfke: programcılar ve olumsuzluk

Olumsuz yollar

Biraz bilgelik ve deneyim kazanmış olan eski acemi programcılarımıza dönelim: programlama endüstrisine daha aşina hale geldiler ve kötü kodun her yerde olduğunu, önlenemeyeceğini anladılar. Bu, kaliteye odaklanan en gelişmiş şirketlerde bile meydana gelir (ve şunu belirtmeme izin verin: görünüşe göre modernlik, kötü koda karşı koruma sağlamaz).

İyi senaryo. Zamanla geliştiriciler, kötü kodun yazılımın bir gerçeği olduğunu ve görevlerinin onu geliştirmek olduğunu kabul etmeye başlarlar. Ve eğer kötü koddan kaçınılamazsa, o zaman bu konuda yaygara koparmanın bir anlamı yok. Karşılaştıkları sorunları veya görevleri çözmeye odaklanarak Zen yolunu seçerler. Yazılım kalitesini nasıl doğru bir şekilde ölçeceklerini ve işletme sahiplerine ileteceklerini, uzun yıllara dayanan deneyimlerine dayanarak sağlam temellere dayanan tahminler yazmayı ve sonuçta işletmeye sağladıkları inanılmaz ve devam eden değer için cömert ödüller almayı öğreniyorlar. İşlerini o kadar iyi yapıyorlar ki, 10 milyon dolar ikramiye alıyorlar ve hayatlarının geri kalanında istediklerini yapmak için emekli oluyorlar (lütfen bunu hafife almayın).

Kodlara duyulan öfke: programcılar ve olumsuzluk

Başka bir senaryo ise karanlığın yoludur. Geliştiriciler, kötü kodu kaçınılmaz bir durum olarak kabul etmek yerine, programlama dünyasındaki kötü olan her şeyi ortaya çıkararak bunun üstesinden gelmeyi görev edinirler. Pek çok iyi nedenden dolayı mevcut kötü kodu iyileştirmeyi reddediyorlar: "İnsanlar daha fazlasını bilmeli ve bu kadar aptal olmamalı"; "tatsız"; "Bu iş için kötü"; "Bu ne kadar akıllı olduğumu kanıtlıyor"; "Eğer size bunun ne kadar berbat bir kod olduğunu söylemezsem, tüm şirket okyanusa düşecek" vb.

İşletmenin ne yazık ki gelişmeye devam etmesi gerektiğinden ve kodun kalitesi konusunda endişelenerek zaman harcayamadıklarından kesinlikle istedikleri değişiklikleri uygulayamayan bu kişiler, şikayetçi olarak itibar kazanırlar. Yüksek yeterlilikleri nedeniyle tutulurlar, ancak şirketin sınırlarına itilirler; burada pek çok insanı rahatsız etmeyecekler, ancak yine de kritik sistemlerin işleyişini destekleyeceklerdir. Yeni geliştirme fırsatlarına erişimleri olmadığında becerilerini kaybederler ve endüstrinin taleplerini karşılayamaz hale gelirler. Olumsuzlukları acı bir acıya dönüşüyor ve bunun sonucunda yirmi yaşındaki öğrencilerle en sevdikleri eski teknolojinin kat ettiği yolculuk ve neden hala bu kadar sıcak olduğu konusunda tartışarak egolarını besliyorlar. Sonunda emekli olurlar ve yaşlılıklarını kuşlara küfrederek geçirirler.

Gerçek muhtemelen bu iki uç nokta arasında bir yerdedir.

Bazı şirketler son derece olumsuz, dar görüşlü, güçlü iradeli kültürler yaratmada son derece başarılı olmuştur (önceki Microsoft gibi). kayıp on yıl) - genellikle bunlar pazara mükemmel şekilde uyan ürünleri olan ve mümkün olduğu kadar çabuk büyüme ihtiyacı duyan şirketlerdir; veya herkesin kendisine söyleneni yaptığı, komuta ve kontrol hiyerarşisine sahip şirketler (İşlerin en iyi yıllarındaki Apple). Bununla birlikte, modern iş araştırmaları (ve sağduyu), şirketlerde yenilikçiliğe ve bireylerde yüksek üretkenliğe yol açan maksimum yaratıcılığın, sürekli yaratıcı ve metodik düşünceyi desteklemek için düşük düzeyde stres gerektirdiğini öne sürüyor. Ve meslektaşlarınızın kodunuzun her satırı hakkında ne söyleyeceği konusunda sürekli endişeleniyorsanız, yaratıcı, tartışmaya dayalı çalışmalar yapmak son derece zordur.

Olumsuzluk popüler kültürün mühendisliğidir

Günümüzde mühendislerin tutumuna her zamankinden daha fazla önem verilmektedir. Mühendislik organizasyonlarında kural “Boynuz yok". Dışarıdan gelen düşmanlığa ve kötü niyete katlanamadıkları (devam edemeyecekleri) için bu mesleği bırakan insanlarla ilgili Twitter'da giderek daha fazla anekdot ve hikaye ortaya çıkıyor. Linus Torvalds bile yakın zamanda özür diledi Yıllardır diğer Linux geliştiricilerine karşı duyulan düşmanlık ve eleştiriler, bu yaklaşımın etkililiği konusunda tartışmalara yol açmıştır.

Bazıları hala Linus'un çok eleştirel olma hakkını savunuyor - "zehirli olumsuzluğun" avantajları ve dezavantajları hakkında çok şey bilmesi gerekenler. Evet, nezaket son derece önemlidir (hatta temeldir), ancak birçoğumuzun olumsuz görüşlerin ifade edilmesinin "zehirliliğe" dönüşmesine izin vermesinin nedenlerini özetlersek, bu nedenler ataerkil veya ergenlik gibi görünmektedir: "bunu hak ediyorlar çünkü aptallar" ", "Bunu bir daha yapmayacaklarından emin olmalı", "Bunu yapmasalardı onlara bağırmak zorunda kalmazdı" vb. Bir liderin duygusal tepkilerinin programlama topluluğu üzerindeki etkisinin bir örneği Ruby topluluğunun kısaltması MINASWAN'dır - "Matz iyi, bu yüzden biz iyiyiz."

"Bir aptalı öldür" yaklaşımının pek çok ateşli savunucusunun genellikle kodun kalitesine ve doğruluğuna çok fazla önem verdiklerini ve kendilerini işleriyle özdeşleştirdiklerini fark ettim. Ne yazık ki çoğu zaman sertliği sertlikle karıştırıyorlar. Bu konumun dezavantajı, basit insani ama verimsiz, başkalarından üstün hissetme arzusundan kaynaklanmaktadır. Bu arzuya kapılan insan, karanlığın yoluna saplanır.

Kodlara duyulan öfke: programcılar ve olumsuzluk

Programlama dünyası hızla büyüyor ve kendi kapsayıcısının sınırlarını zorluyor - programlama dışı dünya (veya programlama dünyası, programlama dışı dünya için bir kapsayıcı mı? Güzel soru).

Sektörümüz giderek artan bir hızla genişledikçe ve programlama daha erişilebilir hale geldikçe, "teknoloji meraklıları" ile "normaller" arasındaki mesafe hızla kapanıyor. Programlama dünyası, erken teknoloji patlamasının yalıtılmış inek kültüründe büyüyen insanların kişilerarası etkileşimlerine giderek daha fazla maruz kalıyor ve yeni programlama dünyasını şekillendirecek olanlar da onlar. Ve herhangi bir toplumsal ya da kuşaksal tartışmadan bağımsız olarak, kapitalizm adına verimlilik şirket kültüründe ve işe alım uygulamalarında kendini gösterecektir: En iyi şirketler, bırakın iyi ilişkiler kurmayı, başkalarıyla tarafsız bir şekilde etkileşime giremeyen kişileri işe almazlar.

Olumsuzluk hakkında öğrendiklerim

Çok fazla olumsuzluğun zihninizi ve insanlarla olan etkileşimlerinizi kontrol etmesine, zehirliliğe dönüşmesine izin verirseniz, bu durum ürün ekipleri için tehlikeli ve iş açısından pahalı olur. Güvenilir bir geliştiricinin teknolojiye, başka bir geliştiriciye ve hatta tüm kod tabanının kalitesini temsil etmek için seçilen tek bir dosyaya karşı kin beslemesi nedeniyle dağılan ve büyük masraflarla tamamen yeniden inşa edilen sayısız proje gördüm (ve duydum).

Olumsuzluk aynı zamanda ilişkilerin moralini bozar ve yok eder. Bir meslektaşımın CSS'yi yanlış dosyaya koyduğum için beni nasıl azarladığını, bunun beni üzdüğünü ve birkaç gün boyunca düşüncelerimi toplamama izin vermediğini asla unutmayacağım. Ve gelecekte böyle bir kişinin ekiplerimden birinin yakınında olmasına izin vermem pek mümkün değil (ama kim bilir, insanlar değişir).

Son olarak olumsuz kelimenin tam anlamıyla sağlığınıza zarar verir.

Kodlara duyulan öfke: programcılar ve olumsuzluk
Gülümsemeler üzerine bir ustalık sınıfının böyle görünmesi gerektiğini düşünüyorum.

Elbette bu, mutlulukla ışıldamak, her çekme isteğine on milyar ifade eklemek veya gülümsemeler üzerine bir ustalık sınıfına gitmek (hayır, eğer istediğin buysa, o zaman sorun değil) lehine bir argüman değil. Olumsuzluk, programlamanın (ve insan yaşamının) son derece önemli bir parçasıdır, kaliteyi işaret eder, kişinin duygularını ifade etmesine ve diğer insanlara acımasını sağlar. Olumsuzluk, içgörü ve sağduyuyu, sorunun derinliğini gösterir. Bir geliştiricinin daha önce çekingen ve emin olmadığı bir şeye inanmadığını ifade etmeye başladığında yeni bir seviyeye ulaştığını sıklıkla fark ederim. İnsanlar görüşleriyle makullük ve güven gösterirler. Olumsuzluk ifadesini göz ardı edemezsiniz, bu Orwellvari olur.

Ancak olumsuzluğun diğer önemli insani niteliklerle dengelenmesi ve dengelenmesi gerekir: empati, sabır, anlayış ve mizah. Bir kişiye her zaman bağırmadan veya küfür etmeden işi batırdığını söyleyebilirsin. Bu yaklaşımı küçümsemeyin: Birisi size hiçbir duygu olmadan ciddi şekilde batırdığınızı söylerse, bu gerçekten korkutucudur.

Birkaç yıl önce CEO benimle konuştu. Projenin mevcut durumunu tartıştık, sonra nasıl hissettiğimi sordu. Her şeyin yolunda olduğunu, projenin ilerlediğini, yavaş çalıştığımızı, belki bir şeyleri gözden kaçırdığımı ve yeniden değerlendirilmem gerektiğini söyledim. Ofisteki meslektaşlarımla daha karamsar düşünceleri paylaştığımı duyduğunu ve başkalarının da bunu fark ettiğini söyledi. Eğer şüphelerim varsa bunları yönetime tam olarak ifade edebileceğimi ancak "onları ortadan kaldıramayacağımı" söyledi. Bir baş mühendis olarak sözlerimin başkalarını nasıl etkilediğine dikkat etmem gerekiyor çünkü farkında olmasam bile çok fazla etkim var. Tüm bunları bana çok nazik bir şekilde anlattı ve sonunda eğer gerçekten böyle hissediyorsam muhtemelen kendim ve kariyerim için ne istediğimi düşünmem gerektiğini söyledi. İnanılmaz derecede nazik, ister kalk ister koltuğundan kalk sohbetiydi. Altı ay boyunca değişen tavrımın, benim fark etmeden başkalarını nasıl etkilediğine dair verdiği bilgi için kendisine teşekkür ettim.

Dikkat çekici, etkili yönetimin ve yumuşak yaklaşımın gücünün bir örneğiydi. Sadece şirkete ve hedeflerine ulaşma yeteneğine tam bir inancım olduğunu fark ettim, ancak gerçekte başkalarıyla tamamen farklı bir şekilde konuştum ve iletişim kurdum. Ayrıca üzerinde çalıştığım projeye şüpheyle yaklaşsam bile, duygularımı meslektaşlarıma göstermemem gerektiğini, karamsarlığı bulaşıcı bir hastalık gibi yayarak başarı şansımızı azaltmamam gerektiğini fark ettim. Bunun yerine gerçek durumu agresif bir şekilde yönetimime aktarabiliyordum. Beni dinlemediklerini hissedersem şirketten ayrılarak aynı fikirde olmadığımı ifade edebilirdim.

Personel değerlendirme başkanı pozisyonunu üstlendiğimde yeni bir fırsat yakaladım. Eski bir baş mühendis olarak, (sürekli gelişen) eski kodumuz hakkındaki görüşlerimi ifade etme konusunda çok dikkatli davranıyorum. Bir değişikliği onaylamak için mevcut durumu hayal etmeniz gerekir, ancak inleyerek, saldırarak veya benzeri şeylerle debelenirseniz hiçbir yere varamazsınız. Sonuçta bir görevi tamamlamak için buradayım ve onu anlamak, değerlendirmek veya düzeltmek için koddan şikayet etmemeliyim.

Aslında, koda olan duygusal tepkimi ne kadar kontrol edersem, bunun neye dönüşebileceğini o kadar iyi anlıyorum ve kafa karışıklığımı da o kadar az hissediyorum. Kendimi ölçülü bir şekilde ifade ettiğimde (“burada daha fazla gelişmeye yer olmalı”) hem kendimi hem de başkalarını mutlu ediyordum ve durumu fazla ciddiye almıyordum. Tamamen (sinir bozucu derecede?) makul davranarak başkalarındaki olumsuzluğu teşvik edebileceğimi ve azaltabileceğimi fark ettim ("haklısın, bu kod oldukça kötü, ama onu geliştireceğiz"). Zen yolunda ne kadar ileri gidebildiğimi gördüğüme sevindim.

Esasen, sürekli olarak önemli bir dersi öğreniyorum ve yeniden öğreniyorum: Hayat, sürekli öfkelenmek ve acı çekmek için çok kısa.

Kodlara duyulan öfke: programcılar ve olumsuzluk

Kaynak: habr.com

Yorum ekle