Yazılım dünyasında uzun süre vakit geçirdiğinizde, mimari zorluklardan, altyapı maliyetlerinden veya karmaşık veri yapılarından çok daha yorucu bir şeyle karşılaşırsınız: Dil fanatikleri.

Kullandığı programlama dilini bir araç olarak değil de, adeta bir din, bir futbol takımı veya bir “namus meselesi” gibi savunan geliştiricilerden bahsediyorum. Twitter’da, Reddit’te veya şirket içi kod inceleme (code review) toplantılarında sırf kendi sevdiği syntax’ı kullanmadığınız için size üstten bakan o malum kitle…

Açıkçası, sektörde en gıcık olduğum konulardan biri budur. Gelin bu “benim çekicim seninkini döver” mantığının neden bu kadar toksik ve mühendislik ruhuna aykırı olduğunu biraz deşelim.

Çekiç ve Çivi Meselesi

Meşhur bir söz vardır: “Elinizdeki tek araç bir çekiçse, dünyadaki her sorunu bir çivi olarak görmeye başlarsınız.”

Dil fanatizmi tam olarak budur. Sırf bir dilde uzmanlaştığı ve o ekosisteme aylarını/yıllarını gömdüğü için (batık maliyet yanılgısı - sunk cost fallacy), dünyadaki tüm teknik problemlerin sadece ve sadece o dille çözülmesi gerektiğine inanan bir kitle var.

Oysa gerçek dünyada, üretim (production) ortamında işler böyle yürümez.

Bir veri kazıma (scraping) operasyonu yapacaksanız veya bir yapay zeka modelini ayağa kaldıracaksanız, devasa kütüphane desteğiyle Python kullanmak en mantıklı yoldur. Ancak saniyede on binlerce istek alacak, Redis ve veritabanı arasında köprü kuracak yüksek performanslı bir mikroservis yazıyorsanız, Python’ın hantallığıyla boğuşmak yerine Go’nun muazzam eşzamanlılık (concurrency) gücünden faydalanırsınız.

Mesele hangi dilin “daha üstün” olduğu değil, hangi dilin masadaki spesifik problemi en az maliyet, en yüksek hız ve en kolay bakımla çözdüğüdür.

Ego vs. Mühendislik

Peki bu fanatizm nereden besleniyor? Çoğunlukla egodan.

Bir aracı (framework, dil, kütüphane) kişiliğinin bir parçası haline getiren geliştirici, o araca yapılan herhangi bir teknik eleştiriyi doğrudan kendi zekasına yapılmış bir hakaret olarak algılar. Rust’ın öğrenme eğrisinin dik olduğunu mu söylediniz? Bir Rust fanatiği bunu “Sen yeterince zeki değilsin” olarak çevirir. JavaScript’in tip sistemindeki garipliklerden mi bahsettiniz? Bir JS fanatiği size “Modern web mimarisini anlamıyorsun” diyecektir.

Bu toksik savunma mekanizması, ekipler içindeki yenilikçiliği öldürür. Yanlış teknoloji seçimlerinin sırf “birileri o dili çok seviyor” diye projelere entegre edilmesi, günün sonunda o kodu sunucuda çalıştırmak, hatalarını ayıklamak ve ölçeklendirmek zorunda kalan ekibe bir çile olarak geri döner.

Sadakat Dile Değil, Çözüme Olmalı

Yazılım dilleri, biz onlara duygusal bağ kuralım diye değil, CPU’ya ne yapması gerektiğini bizim anlayabileceğimiz bir formatta iletelim diye varlar. Hepsi birer metin dosyasından ibaret.

Günümüzün hızla değişen teknoloji dünyasında, tek bir dile körü körüne bağlanmak, bir marangozun sadece yıldız tornavida kullanarak ev inşa etmeye çalışması kadar komiktir.

İyi bir mühendis, alet çantasındaki araçları duygusal bağına göre değil, işin doğasına göre seçer. Araçlar eskir, diller popülaritesini yitirir, frameworkler ölür. Baki kalan şey; temiz mimari kurabilme yeteneği, algoritma mantığı ve problem çözme becerisidir.

O yüzden bırakalım dil savaşlarını ergenlik çağındaki “fanboy"lar Reddit’te yapsın. Biz işimize, mimarimize ve ortaya çıkardığımız değere odaklanalım.