- Modern yazılım geliştirme kültüründe proje ve kütüphane adları, işleve bağlı olmayan keyfi kelimelerle dolduruluyor
- Geçmişte grep, awk, sed, FORTRAN, COBOL gibi adlar işlevi ya da amacı doğrudan açıklarken, bugün anlamsız adlandırmalar ortalığı kaplamış durumda
- Bu eğilim, GitHub ve startup kültürünün yayılmasıyla hızlandı; isimle işlev arasındaki bağ neredeyse tamamen koptu
- Anlama maliyeti ve bilişsel yük artıyor; geliştiriciler her aracın rolünü kavramak için gereksiz araştırmaları tekrar tekrar yapmak zorunda kalıyor
- Yazı, açık ve işlev odaklı adlandırma kurallarının yeniden canlandırılmasını istiyor ve teknik araçlarda marka değerinden çok netlik ve profesyonelliğin önce gelmesi gerektiğini vurguluyor
Yazılım adlandırma pratiklerinin değişimi
- Richard Stallman, 2022 EmacsConf konuşmasında “hatırlaması kolay isimlerin” önemine değinerek, paket adlarının ne yaptığını göstermesi gerektiğini vurguladı
- Emacs ekosistemi geleneksel olarak dired (directory editor), eshell (Emacs shell) gibi işlev temelli adlandırma pratiklerini sürdürdü
- Ancak modern geliştiriciler araçlara rastgele isimler, mitolojik varlıklar, kurgusal karakterler gibi adlar verme eğiliminde
- Bu, başka teknik alanlarda profesyonellik eksikliği sayılabilecek bir davranış
Anlamsız isimlerin sorunu
- Örnek olarak “Viper”, “Cobra”, “Melody”, “Casbin”, “Asynq” gibi araç adlarından işlev hakkında hiçbir çıkarım yapılamıyor
- Yazar, bir arkadaşının altyapı açıklamasını anlayabilmek için arama yapmak zorunda kaldığı deneyiminden söz ediyor
- Mühendisliğin diğer alanlarında isimler yapı ya da işlevi açıklar
- Örn: Golden Gate Bridge, Hoover Dam, I-beam, butterfly valve gibi adlar biçimi veya rolü açıkça gösterir
- Kimyadaki IUPAC adlandırma sistemi gibi, adın tam olarak tek bir şeyi işaret etmesi için kurallar bulunur
- Örn: 2,2,4-trimethylpentane yalnızca tek bir molekülü ifade eder; ona rastgele “Steve” denmez
Geçmişin adlandırma kuralları ve bugünkü kopuş
- 1980'lerde grep, awk, sed, cat, diff gibi işlev temelli kısaltmalar baskındı
- FORTRAN, COBOL, BASIC, SQL, Lisp gibi programlama dili adları da amaçlarını yansıtıyordu
- 2010'lardan sonra anlamsız isimlerin yayılması başladı
- MongoDB gibi bazı örneklerin işlev veya kökenle belli bir ilişkisi vardı, ancak sonrasında GitHub ve startup kültürü içinde anlamsız adlandırmalar hızla arttı
- Bunun nedenlerinden biri olarak, Google benzeri marka odaklı başarı örneklerini taklit etme eğilimi gösteriliyor
Bilişsel maliyet ve geliştirme verimliliğinde düşüş
- libsodium gibi isimlerde işlevi tahmin etmek zor ve geliştirici sürekli bağlam değiştirmek zorunda kalıyor
- “Neden sodium?” sorusunu çözmeye çalışırken gereksiz zaman harcanıyor
- Proje bağımlılıkları arttıkça bu bilişsel vergi (cognitive tax) birikiyor
- Bu da geliştirici üretkenliğinin düşmesine yol açıyor
- Yazar, “Viper, Cobra, Melody…” gibi cümleleri işlerken anlamsız token'ları çözümlemek için zihinsel kaynakların boşa harcandığını belirtiyor
Yaygın itirazlar ve bunlara verilen yanıtlar
- “Akılda kalıcı isimler pazarlama için daha iyidir” → Geliştirici araçları tüketici ürünü değildir; işlevin açık olması daha önemlidir
- “Açıklayıcı isimler sıkıcıdır” → Sıkıcılık, netlik karşılığında kabul edilebilir; cerrahi aletler de sıkıcıdır ama kesindir
- “Eğlencesine böyle isim veriyoruz” → Bu ‘eğlencenin’ bedelini bütün kullanıcılar öder, sonuçta tüm sektörün zaman kaybına dönüşür
- “İyi isimlerin hepsi alınmış durumda” → namespace, önek ve birleşik kelimelerle bu sorun çözülebilir; en azından işleve bağlı bir isim seçilmelidir
İleriye dönük yönelim
- Sorun, kötü niyetten çok kültürel değişimin sonucu olarak açıklanıyor
- Programlama şirket merkezli yapıdan topluluk merkezli yapıya kayarken sosyal normlar zayıfladı
- Çözüm ise adlandırma kurallarının kültürel olarak yeniden kurulması
- Düzenlemeden çok, profesyonelliğin geri kazanılması, eğitim ve toplumsal baskı yoluyla iyileşme gerekiyor
- Kütüphane isimleri işlevi yansıtmalı; gerekirse birleşik kelimeler ve uzun ifadeler de kabul edilmeli
- Örn: “http-request-validator”, “zephyr”den çok daha nettir
- Maskot ile isim birbirinden ayrılmalı
- Örn: PostgreSQL, Slonik adlı fil maskotunu kullanır ama ismin kendisi işlevsel anlamını korur
- Eğer konu markalaşmanın önemli olduğu bir tüketici ürünü değilse, öncelik netlik ve profesyonellik olmalı
- “Sevdiğim anime karakterinin adını versem mi?” demeden önce, “Bir inşaat mühendisi bir köprü sistemine böyle bir ad verir miydi?” diye düşünmek gerekir
- Sonuç olarak, anlamsız isimlerin kontrolsüz çoğalmasına son verip açık profesyonel dile geri dönmek gerekiyor
- Netlik sıkıcılık değil, kullanıcının zamanına ve bilişsel kaynaklarına saygıdır
7 yorum
Örnek yazılmasaydı ikna ediciliği muhtemelen %10 artardı..
Bir noktaya kadar katılıyorum ama sanki isim bulma stresini yaşamak istemiyorlar gibi.
Kullanışlı isimlerin hepsini zaten birileri kullanıyor.
Hacker News görüşleri
Yacc’ın GNU sürümüne Bison denir. Pine, “Pine Is Not Elm” kısaltmasıydı; UNIX ise MULTICS’e yapılan bir kelime oyunu olan UNICS’ten türemişti. dd’nin ne anlama geldiğini bilmiyorum, nano pico’nun bir klonudur ve Postfix de ‘post’ ile ‘bug fix’in birleşimidir. C++, C’nin artırılmış sürümüdür; C, B’nin devamıdır, B de BCPL’nin devamıdır. Aslında geliştiriciler ‘isimlendirme felsefesini’ kaybetmedi; baştan beri böyle bir şey yoktu. Buna karşılık Clang, LLDB, jq, fzf, loc gibi modern projelerin iyi isim örnekleri olduğunu düşünüyorum. mise-en-place, mise’in işlevini kusursuz biçimde çağrıştırıyor
key=valuebiçimli bir sözdizimine sahiptirgrep, awk, sed, cat, diff gibi UNIX komutlarının isimleri işlevsel ya da sistematikti ama aslında sezgisel olarak tahmin edilebilen belki de yalnızca diff. awk’a iyi bir isim demek abartı olur
-libertyseçeneğiyle bağlanabilsin diye bu isim verilmişti“Teknoloji alanında böyle isimler kariyer intiharıdır” iddiasına katılmıyorum. ABD Savunma Bakanlığı kod adı listesine bakınca, tam tersine bilerek muğlak bırakılmış isimlerin çok olduğunu görüyorsunuz. Hoover Dam bile başlangıçta Boulder Canyon Project diye anılıyordu ve adı işlevini açıklamıyordu. Requests’tense Reitzlib daha mı iyi bir isim olurdu? Sonuçta isim bağlama göre değişir
awk gibi isimler aslında iyi isimler değil. Yalnızca yazarların baş harflerinden oluşuyor ve işlev hakkında hiçbir şey söylemiyor. Günümüzde sekme ile otomatik tamamlama var; bu kadar kısaltmaya gerek de yok
Ben bu karşı argüman yazısına katılıyorum. Dışa açık tanımlayıcıların anlamı zamanla değiştiği için, baştan tam açıklayıcı isimler koymak uzun ömürlü olmuyor. Üstelik “X Manager”, “X Service” gibi isimler o kadar fazla ki birbirinden ayırmak zorlaşıyor
Bir otomotiv OEM’inde motor kalibrasyon mühendisi olarak çalıştım; bütün değişkenler ve fonksiyonlar kısaltmalardan oluşuyordu. İlk ay zihnen patlayacak gibi olmuştum. Sonunda bir çalışma arkadaşım “bu, yeni bir dil öğrenmek gibi” dedi ve gerçekten de öyleydi. Yani teknik isimlerin çok olması bilişsel yükü azaltmıyor
“İşlevsel isimler pazarlamadan iyidir” iddiasına katılmak zor. İşleve dayalı isimler sonunda bitmek bilmeyen bir kısaltma denizi oluşturuyor. ABDC ile ADBC’yi karıştırdığınız durumlar çıkıyor
HN’de böyle bir yazının çıkması ilginç. awk gibi isimleri örnek verip de “isimlendirmenin özünü kaybettik” demek çelişkili. Sonuçta bu bana daha çok sevimli isimlere yönelik kişisel bir antipati gibi görünüyor. Bu arada bu yorumu Firefox’ta yazdım — adına bakınca bunun bir web tarayıcısı olduğunu anlayamazsınız
“Açıklayıcı isimler sıkıcıdır” iddiasına karşılık, ameliyathanedeki aletler de aslında insan adlarından türemiştir. Adson, Allis, Babcock, Kocher gibi isimler işlevi hiç açıklamaz. Sonuçta alışınca anlam kazanıyorlar. awk pek iyi değil ama diff fena bir örnek değil
“Bizim alanımız rastgele isimlerden oluşan bir hayvanat bahçesi gibi” iddiasına karşı, ben eğlenceli isimleri seviyorum. Benim Wimsey projem bir veri test kütüphanesi ama adına bakınca bunu anlayamazsınız. Yine de Python, Cron, Zellij gibi sevgi ve mizah taşıyan isimleri seviyorum. Sonuçta teknolojiyi insanlar yapıyor ve içinde biraz keyif olmalı. “brown-dog-2” yerine “cookie” daha insani geliyor
awkbile işlev temelli bir isim demek için biraz....emacsin ne anlama geldiğini bilen var mı? Bir anlamı var tabii ama kısaltma adlar ilk bakışta anlaşılmıyor; sonuçta bunlar isim... Bir de artık sadece işleve göre ad vermek için proje sayısı fazla.GitHub'ı suçladığına bakılırsa bu düpedüz RMS usulü bir zorlama karalama gibi duruyor haha