Yazılım geliştirme dünyasındaki bazı sorunlar önemsiz gibi görünse de, insanlara ve topluma ciddi yan etkileri ve maliyetleri olabiliyor. Bu makale bir düşünce sunuyor ve okuyucuların eylemlerinin içinde bulundukları ortamları nasıl etkilediğini ve bazı küçük şeylerin bile nasıl servete mal olduğunu anlamalarını sağlayarak değişimi teşvik etmeye çalışıyor.
Genç bir delikanlı olarak ilk bilgisayarımdan önce her zaman bisikletin üzerindeydim. Evimin karşısında, düzenli olarak bisiklet sürdüğüm birkaç dar yürüyüş yolunun bulunduğu küçük bir orman vardı.
Çoğu zaman BMX bisikletimin bir Formula 1 olduğunu ve Nigel Mansell, Alain Prost veya Ayrton Senna ile yarıştığımı hayal ederdim. Daha sonra bitiş çizgisine yakın bir yerde üstün sollamalar gerçekleştirip az farkla galibiyeti alırdım.
Ormanın biraz ilerisinde eski bir depo vardı. Üstünde, ışığın içeri girmesine izin veren, çatıya yakın küçük pencereler vardı. Ancak bunlar, kimsenin içeriye bakmak için kullanamayacağı kadar yüksekti.
Dinlenmek ve binayı düşünmek için ilk kez durakladığım zamanı hiç unutmadım. Şöyle düşündüğümü hatırlıyorum: “Tuhaf! Neden yola yakın değil?... Birisi taş attı, bazı camları kırdı... Neden tamir edilmedi? Gizemli ama kasvetli görünüyor. Uzak dursam iyi olur, bir şeyler ters gidiyor”. Daha sonra bisikletle uzaklaşırdım ve bir daha o bölgeye fazla girmeyi göze almazdım.
Yıllar geçti ve sonunda orman bir yolla kesildi ve yavaş yavaş yanında yeni binalar filizlendi. Ama en azından bir süreliğine eski depo ayakta kaldı. Ancak her geçen yıl daha fazla pencere, atılan taşlara boyun eğmek zorunda kaldı.
Adil olmak gerekirse, camları kıran kişi pişmanlık duymazdı. Bazıları zaten kırılmış ve tamir edilmemiş durumdaydı, öyleyse birkaç tane daha kimin umurundaydı ki? Sonuçta, değiştirme maliyetleri hepsinin onarılması gerekenlerle aynı olacaktır.
Bu nedenle, eski depo pencereleri, kişinin hedefini eğitmesi ve erken yıkım yardımı başarılı olduğunda (başka bir pencere kırıldığında) kutlama yapması için bir fırsat sunuyordu; bir zamanlar bazı yaşlı çocukların bunu yaptığını gözlemlemiştim.
Ben ve diğer bazı meslektaşlarım için yol, okula giden yolun daha kısa olmasını sağlıyordu. Yine de hepimiz eski ve biraz daha uzun olan rotayı tercih ederdik, çünkü bu bilinen bir yoldu ve bizi garip bir şekilde tedirgin eden yıkık binalardan kaçınmamıza olanak sağlıyordu. Düşünecek ya da endişelenecek daha az bir şey vardı.
Cep telefonlarının olmadığı bir dönemden bu hikayeyi, sizi kendi çocukluğunuza götürmek ve çocukluğunuzda yıkık bir binayı veya bölgeyi gözlemlerken yaşayabileceğiniz benzer duyguları temizlemeye çalışmak ve bu hikayeyi tanıtmak amacıyla paylaşıyorum. Kırık Windows Teorisi .
Özetle, kırık camlar teorisi, çevresel bozukluğun suç teşkil eden, anti-sosyal veya sivil düzensizlik davranışlarını teşvik ettiğini ileri sürmektedir. Hiçbir kırık pencere, barışçıllığı ve yasallığı destekleyerek düzensizlik olasılığını azaltır. Eski deponun kırık camlarında olduğu gibi, zaten çok fazla düzensizlik olduğunda, daha fazlasını yığmak daha kolaydır.
Kırık camlar teorisiyle ilk kez aylar önce Pragmatic Programmer'ı okurken karşılaştım. Yazılım Geliştirme dünyasında yeniyseniz okumaya değer bir kitap.
Kırık camlar teorisinin bilgeliği sık sık aklıma geliyor. Elbette kriminologların ve davranış uzmanlarının bu konuda söyleyecek daha çok şeyi vardır, ancak benim için bu, çevrenin insan davranışını nasıl etkilediğinin kazınmış bir örneğidir.
Ve daha yeni bazı akademisyenler, makalelerini veya iddialarını okumadan bile teorinin artık geçerli olmadığını iddia etseler de, ben şimdiden itiraz ediyorum: “Özür dilerim. Uzman olduğunuzu anlıyorum, ancak deneyimlerime göre bu geçerli”.
“Bing Bang” TV şovunu beğendiyseniz uzmanların bile hatalı olabileceğini ve hatta arkadaşlarınız tarafından bile hatalı olduklarının kanıtlanabileceğini biliyorsunuzdur.
Umarım bu eski depo hikayesindeki kırık camların, yoldan geçenleri, sanki otomatik bir sorun önsezisi tarafından yönlendiriliyormuşçasına, ondan uzaklaşmaya ve onu akıldan çıkarmaya yönlendiren anti-sosyal davranışlara davetiye çıkardığını anlamışsınızdır.
Çok yaşlı olduğumu düşünmemeniz için başka bir örnek olarak TikTok Kia meydan okumasını kullanmama izin verin (bunun gerçekleştirilmesi, aracın camının kırılmasını da içerebilir).
Eğer buna aşina değilseniz, bu platformda paylaşılan ve Kia ve Hyundai'yi hedef alan, çoğunlukla gençler tarafından yapılan ve maddi hasar, acı, can kaybı ve diğer hain olaylarla sonuçlanan bir dizi motorlu araç hırsızlığına yol açan bir video hakkındadır. sonuçların tümü olumsuz… TikTok'un kazanımları ve platformun daha fazla kötü şöhreti hariç.
Bu otomobil üreticilerinin kasıtlı veya talihsiz bir tasarım kararı olmasına rağmen, yine de bu, ortak bir USB kablosu aracılığıyla başarılı bir şekilde istismar edilen bir sistem kırılganlığıydı.
Yetişkin veya en azından sorumlu kişi, söz konusu güvenlik açığını her iki markaya da açıklamak ve bunu düzeltmek için adımlar atacaklarını ummak olurdu. Elbette bu, videonun yazarlarının muhtemelen hiçbir zaman ünlü olamayacakları ve bunu yaparken de eğlenemeyecekleri anlamına geliyordu.
Bugünlerde gençlerin itfaiyeci, doktor veya astronot yerine, kötülüğün elçisi olsalar bile etki sahibi olmayı tercih etmeleri bana ilginç geliyor. İyi iş kitle iletişim araçları! (alaycılık yapmakta zorlananlar için alaycılık girişimim).
Dolayısıyla bu örnekte, istemeden de olsa kırık bir pencerenin (ve bir USB kablosunun) kırık camdan daha dramatik sonuçlara yol açabileceğini kabul edebiliriz.
Her iki şirket de o zamandan beri suç teşkil eden davranışları en aza indirmek ve bunlarla mücadele etmek veya başka bir deyişle kırık camı onarmak için adımlar attı, ancak daha önce itibar kaybı ve mali kayıp yaşanmadı.
Yıllardır bozuk bir pencere olan yazılım dünyasından bir örnek, yönlendiren sözcüğünün yanlış yazılışı olan HTTP Yönlendiren başlığıdır. Bu bana, belki size ve binlerce olmasa da yüzlerce insana sorun yarattı.
Benim gibi siz de muhtemelen yazarlarla alay ettiniz (tipik olarak yüksek sesle kaba ve alaycı sözler söylediniz). Ayrıca bunun kimin hatası olduğunu araştırmış ve potansiyel olarak, bunca yıl sonra bile, çok meşgul olma bahanesinin ya da "Eninde sonunda düzelteceğim" bahanesinin çok insani olduğu sonucuna varmış olabilirsiniz. Diğer kırık camlar için de benzer gerekçeleri daha önce mutlaka duymuştum.
Yanlış bir şey yapmanız gerektiğini çünkü bunu yapmanın doğru yolu olduğunu öğretmek kolayken diğer insanların zaman kaybetmesi kimin umurunda? Ya da komik bir düşünce var, neden sözlüğü değiştirmiyoruz? O zaman artık bir hata olmayacak.
İstediğiniz metin düzenleyicinizi açın ve İngilizce sözlüğün bulunduğu hatalı yazılmış sürümü içeren bir cümle yazın. Kelime yazım hatası olarak mı işaretleniyor?
Sonuçlar sizi şaşırtabilir.
Onarılmadan bırakılan kırık bir pencere, daha fazla pencerenin kırılmasına yol açar, ancak uzmanlar bile bunları umursamıyorsa, geri kalanımız neden umursasın ki? Neden daha fazla pencere kırmıyorsunuz? Elbette bir gün her şey düzelecek.
İşte potansiyel bir sebep! Rakamlar içerir, yanlış anlaşılması çok kolaydır, ama haydi deneyelim.
Bu kaynağa göre 2021 yılında ABD'de ortalama 93.000 dolar olan programcı maaşını kullanalım. Haftada 40 saat ve 52 çalışma haftası çalıştığını varsayalım ve saatlik değeri 44,71$ olsun (görünüşe göre Amerikalılar tatil molalarına pek sıcak bakmıyorlar).
Öyle olunca bu kaynağa göre yalnızca ABD'de 4,3 milyon programcı var. Bunlardan sadece %5'ini alsak bile (değeri keyfi olarak seçtim), şu veya bu şekilde yazım hatasıyla karşılaşan ve bunu anlamak ve çözmek için adımlar atmak zorunda kalan 215.000 programcıya sahip oluruz.
Eğer bu programcıların her biri, yan etkilerle uğraşmak ve neden orada olduğunu anlamak için sadece ortalama 1 saat kaybetselerdi, ilk karşılaşmalarının maliyeti 9,6 milyon dolar olurdu. Eğer %30 olsaydı (1 290 000 kişi) değer 57,7 milyon dolar olurdu. Tekrar ediyorum: Yalnızca ABD .
Başka bir keyfi yüzde seçseniz bile israf yine de çok büyük olacaktır.
Ayrıca, geliştirme döngüsünde daha önce yakalanan sorunların, üretimde yakalananlardan önemli ölçüde daha düşük maliyete sahip olduğunu hiç dikkate almadığımı lütfen unutmayın. Ayrıca enflasyon ayarlamalarını da eklemedim, farklı ülkeleri veya bu konuyu ele almak için zaman harcayan öğrencileri ve profesörleri, web siteleri olan ve programcı olarak kabul edilmeyen kişileri, emekli olanları veya hala sahip olanları da dikkate almadım. onu öğrenmek için.
Şimdi bu değeri dünyayı da içerecek şekilde tahmin edin. Ne kadar paranın, ne kadar değerin, ne kadar canın çoktan kaybolduğunu ve kaybedileceğini düşünüyorsunuz?
İyi niyetli bir ruhun bir yerlerde "Bu arada, düzelttik ve eski yöntem X versiyonunda kullanımdan kaldırılacak" diye paylaştığı günü iple çekiyorum. Çünkü bana göre, kolay hatanın sorumluları bu yazım hatasıyla hatırlanacak kadar aşağılık değilse, bunu düzeltmenin en iyi zamanı dündü. (Apache Vakfı'ndan veya Nginx ile çalışan birini tanıyor musunuz? Lütfen! Onları dırdır edin!)
Başkaları için yaptığınız veya yapmadığınız şeyleri içeren "sonunu aklınızda tutarak başlayın".
Ancak bu sadece yazılım dünyasından bir örnek, tek boynuzlu at değil, elimizde daha fazlası var.
Tecrübelerime göre, paydaşların olgunluğu, deneyimi ve yazılımın ömrü ne kadar yüksek olursa, kırık pencerelerin daha uzun süre devam etme veya hiç ele alınmama olasılığı da o kadar yüksek olur.
Ve hayır. Erken ve sık salıvermekten memnuniyet duyanların arkasında, hatta yanında bile değilim, çünkü bu düzenli olarak daha az kalite ve özen anlamına gelir. Çoğunlukla kırık pencereleri, düşünülmemiş eksiksiz özellikleri serbest bıraktığınızı bilmek Çevik olmakla ilgili değil, özensiz olmakla ilgilidir.
Ve evet, birçok nedenin ortaya çıkıp yukarıdaki ifadeyle çelişeceğinin farkındayım, ancak bunların hiçbirinin kâr elde etmeye karar veren bir siber saldırganın getirdiği hava değişimine direnemeyeceğine inanıyorum. Daha açık bir ifadeyle, startup şirketlerinin kod tabanları düzenli olarak suça hazırdır, diğer bir deyişle, suçluların seçebileceği kolay meyvelerdir.
Ancak olgunlaşmış kuruluşlarla ilgili olarak, kırık camları kucaklayan olgunluk gerçeğinin ardındaki en güçlü güçler, düşük yatırım getirisi ve mevcut kaynakların dikkatini çekme ihtiyacını dikte eden ve zorlayan diğer acil önceliklerdir.
Ayrıca yerleşik kuruluşlar, gerçekleşmeleri halinde geniş bir toplumsal etkiye sahip olacak belirli riskleri almalarını kısıtlayan düzenlemelere ve uyumluluklara tabidir. Bu şirketlerin, startupları kuluçkaya yatırmayı, belirli niş alanlara ulaşmalarını sağlamayı, ardından satın almadan önce düzenlemelerin ve faaliyetlerin daha istikrarlı hale gelmesini beklemelerinin nedeni de budur.
Toplum başarısız olanları desteklemez, kazananları kutluyoruz! Yani hata yaparken ya da başarısız olurken savunmaya geçmek insani bir davranıştır. Bizden başka herkesin penaltıyı veya serbest vuruşu kaçırmamasını talep ediyoruz. Ayrıca programcılar kesinlikle birbirlerine karşı nazik değillerdir, ancak bu onlara özgü bir sorun değildir.
Dolayısıyla bir ekibin veya bir kişinin "bu aslında bir hata değil", "gerçekte bir kusur değil", bir tasarım kararıydı", "bu şekilde kullanılabileceğini hiç düşünmemiştik" gibi mantıklarla yanıt vermesi beklenmedik bir durum değil. ”, “bunu kimse yapmaz”, “kimseye zarar vermez”, “amaçlandığı gibi çalışıyor” vb.
Ve kırık camlar en azından yakın zamanda tamir edilmediğinde, programcılar esprili bir inek tarzıyla bunları " bir özellik " olarak adlandırıyor.
Kulağa saçma geliyor değil mi? Bakalım neler oluyor.
Rahatça arkamıza yaslanıp kendi önyargılarımıza direnmeye çalışırsak, belki daha çoğumuz aynı şeyi gözlemleyebiliriz: Sorun çözerek geçimini sağlayan bir grup insan, kırık pencereleri kesinlikle ve kolayca tanıyabilir. Bazıları hiçbir zaman düzeltilemeyeceği için bireyler endişelenmeyi bırakmanın ve bunları zihinlerindeki birikmiş yığınlardan çıkarmanın yollarını arayacaklar.
Çünkü hayatta bireysel veya doğrudan kontrol edilemeyen pek çok şey gibi, bunlar hakkında düşünerek enerji harcamaya devam ederseniz bunlar size yük olur.
Peki, bu olumsuzluk taşıyan ve istenmeyen bu yaygın davranış ne zaman kabul edilemez hale gelir? Sadece insanlar kaza yapıp ölüm meydana geldiğinde mi oluyor?
Eğer öyleyse, o zaman hiçbir zaman düzeltilemeyecek bazı şeyler var… kaybetmeye devam edelim, daha doğrusu bırakın başkaları kaybetmeye devam etsin.
Sadece depo sahibini etkileyen kırılan camlardan, araç sahiplerine, onları soyan kişilere ve son olarak diğer programcılara kadar küçük de olsa detaylara değinmek fark yaratacaktır.
Umarım bir dahaki sefere yanlış bir şey yaptığınızda, onu hemen düzeltmeyi düşünürsünüz veya bunu yapan kişinin düzeltmesine izin verirsiniz.
Ve lütfen çöp atmayı bırakın çünkü başkaları da öyle yapıyor.
Ve eğer bunlar uzmansa, onlara meydan okuyun! Onlar da insandır, hata yaparlar ve farkına bile varmamış olabilirler. Aptal gibi tepki verirlerse yanıt verin: "Bir şey değil".
Hayatımda şimdiye kadar yaptığım tüm yazım hataları ve diğer aptalca şeyler için ödemem gereken cezalar olsaydı…
Ama her zaman tek bir şey yapmaya çalışırım : Farkına vardığımda onları düzeltmek. Sen de yapmalısın!
Küçük şeyler önemlidir. Ve tam olarak onlar değilse bile, onların varlığı ne anlama geliyor?
“Kırık pencereleri” (kötü tasarımlar, yanlış kararlar veya kötü kod) onarılmamış halde bırakmayın. - Pragmatik Programcı, Dave Thomas ve Andy Hunt
(buna küçükler de dahil)