polyglot programming, yazılımcının “tek dil yeter” masalını bırakıp gerçek dünyanın kirli mutfağına girmesidir.
çünkü gerçek projeler ders kitabı gibi yaşamaz.
backend başka konuşur, frontend başka konuşur, veritabanı başka trip atar, script başka yerden kafasını uzatır, deployment zaten ayrı bir tarikat dilidir. sonra biri gelir “abi her şeyi tek dille yazalım daha temiz olur” der.
temiz olur.
ama bazen çalışmaz.
polyglot programming’in olayı şudur: her işi tek çekice benzetmezsin. çiviye çekiç, vidaya tornavida, cam kesmeye balyoz kullanmazsın. performans gereken yerde rust/go/c++ dersin. web tarafında javascript/typescript zaten kapıda bekliyordur. veri işinde python sırıtıyordur. jvm tarafında java/kotlin/scala ayrı imparatorluk kurmuştur. shell script ise bodrumdaki yaşlı tesisatçı gibidir; kimse sevmez ama boru patlayınca herkes onu çağırır.
tek dil fanatizmi tatlıdır.
ta ki gerçek proje başlayana kadar.
polyglot programming biraz da yazılım dünyasının koalisyon hükümetidir. her dil kendi bakanlığını ister. python “veriyi bana bırakın” der. java “enterprise benim işim” diye dosya açar. javascript “ben her yerde çalışırım” diyerek zaten içeri girmiştir. rust köşede güvenlik ve performans diye diş biler. bash ise kimsenin sahiplenmediği ama bütün sunucuyu ayakta tutan kirli sırdır.
dışarıdan bakınca kaos.
içeriden bakınca mimari.
tabii bu işin bokunu çıkarırsan mimari değil, teknoloji pazarı kurarsın. bir mikroservis node.js, diğeri go, öbürü python, yan tarafta java, arada rust, üstüne bir de kimsenin hatırlamadığı perl script. sonra production patlayınca ekip slack’te arkeolojik kazı yapar.
“bu servisi kim yazdı?”
“2019’da ayrılan serkan.”
“hangi dil?”
“bilmiyoruz, dosya uzantısı tehdit gibi.”
işte polyglot programming burada güzel fikir olmaktan çıkıp kurumsal korku filmine döner.
çünkü çok dil bilmek güçtür ama çok dilin birbirine bağırdığı sistem cehennemdir. her dilin dependency yöneticisi ayrı, build sistemi ayrı, runtime derdi ayrı, logging huyu ayrı, hata mesajı ayrı, deployment kaprisi ayrı. bir yerde versiyon uyumsuzluğu çıkar, başka yerde encoding trip atar, öbür tarafta package manager kendini imha eder.
yani polyglot programming özgürlüktür.
ama özgürlüğün yanında fatura gelir.
iyi kullanılırsa sistem nefes alır. kötü kullanılırsa kod tabanı birleşmiş milletler’e döner: herkes konuşur, kimse birbirini anlamaz.
polyglot programming’in en doğru hali, “her dile yer açalım” romantizmi değildir. doğru soru şudur:
bu dili buraya koymanın bedeli ne?
eğer cevap “performans kazanıyoruz, bakım maliyeti makul, ekip biliyor, sınırlar net” ise tamam.
eğer cevap “cool duruyor” ise geçmiş olsun.
o artık mühendislik değil, teknoloji cosplay’idir.
zaten yazılımda en tehlikeli cümlelerden biri şudur:
“bunu da şu dille yazalım, öğrenmiş oluruz.”
hayır kardeşim.
production eğitim kampı değildir.
polyglot programming, doğru elde çok güçlüdür. yanlış elde ise şirketin kod tabanına açılmış çok dilli kanalizasyondur. bir süre sonra herkes kendi dilinde haklıdır ama sistem hiçbir dilde anlaşılır değildir.
bu yüzden mesele çok dil kullanmak değil.
hangi dili, nerede, neden kullandığını bilmektir.
iyi polyglot sistem, farklı dillerin birbirini tamamladığı sistemdir.
kötü polyglot sistem, her geliştiricinin cv’sine satır eklemek için production’a mayın döşediği sistemdir.
özetle polyglot programming; doğru araçla doğru işi yapma sanatıdır.
ama disiplinsiz yapılırsa sanat değil, backend’e gömülmüş babil kulesidir.
ve o kule yıkılınca altında genelde junior değil, ops ekibi kalır.
çünkü gerçek projeler ders kitabı gibi yaşamaz.
backend başka konuşur, frontend başka konuşur, veritabanı başka trip atar, script başka yerden kafasını uzatır, deployment zaten ayrı bir tarikat dilidir. sonra biri gelir “abi her şeyi tek dille yazalım daha temiz olur” der.
temiz olur.
ama bazen çalışmaz.
polyglot programming’in olayı şudur: her işi tek çekice benzetmezsin. çiviye çekiç, vidaya tornavida, cam kesmeye balyoz kullanmazsın. performans gereken yerde rust/go/c++ dersin. web tarafında javascript/typescript zaten kapıda bekliyordur. veri işinde python sırıtıyordur. jvm tarafında java/kotlin/scala ayrı imparatorluk kurmuştur. shell script ise bodrumdaki yaşlı tesisatçı gibidir; kimse sevmez ama boru patlayınca herkes onu çağırır.
tek dil fanatizmi tatlıdır.
ta ki gerçek proje başlayana kadar.
polyglot programming biraz da yazılım dünyasının koalisyon hükümetidir. her dil kendi bakanlığını ister. python “veriyi bana bırakın” der. java “enterprise benim işim” diye dosya açar. javascript “ben her yerde çalışırım” diyerek zaten içeri girmiştir. rust köşede güvenlik ve performans diye diş biler. bash ise kimsenin sahiplenmediği ama bütün sunucuyu ayakta tutan kirli sırdır.
dışarıdan bakınca kaos.
içeriden bakınca mimari.
tabii bu işin bokunu çıkarırsan mimari değil, teknoloji pazarı kurarsın. bir mikroservis node.js, diğeri go, öbürü python, yan tarafta java, arada rust, üstüne bir de kimsenin hatırlamadığı perl script. sonra production patlayınca ekip slack’te arkeolojik kazı yapar.
“bu servisi kim yazdı?”
“2019’da ayrılan serkan.”
“hangi dil?”
“bilmiyoruz, dosya uzantısı tehdit gibi.”
işte polyglot programming burada güzel fikir olmaktan çıkıp kurumsal korku filmine döner.
çünkü çok dil bilmek güçtür ama çok dilin birbirine bağırdığı sistem cehennemdir. her dilin dependency yöneticisi ayrı, build sistemi ayrı, runtime derdi ayrı, logging huyu ayrı, hata mesajı ayrı, deployment kaprisi ayrı. bir yerde versiyon uyumsuzluğu çıkar, başka yerde encoding trip atar, öbür tarafta package manager kendini imha eder.
yani polyglot programming özgürlüktür.
ama özgürlüğün yanında fatura gelir.
iyi kullanılırsa sistem nefes alır. kötü kullanılırsa kod tabanı birleşmiş milletler’e döner: herkes konuşur, kimse birbirini anlamaz.
polyglot programming’in en doğru hali, “her dile yer açalım” romantizmi değildir. doğru soru şudur:
bu dili buraya koymanın bedeli ne?
eğer cevap “performans kazanıyoruz, bakım maliyeti makul, ekip biliyor, sınırlar net” ise tamam.
eğer cevap “cool duruyor” ise geçmiş olsun.
o artık mühendislik değil, teknoloji cosplay’idir.
zaten yazılımda en tehlikeli cümlelerden biri şudur:
“bunu da şu dille yazalım, öğrenmiş oluruz.”
hayır kardeşim.
production eğitim kampı değildir.
polyglot programming, doğru elde çok güçlüdür. yanlış elde ise şirketin kod tabanına açılmış çok dilli kanalizasyondur. bir süre sonra herkes kendi dilinde haklıdır ama sistem hiçbir dilde anlaşılır değildir.
bu yüzden mesele çok dil kullanmak değil.
hangi dili, nerede, neden kullandığını bilmektir.
iyi polyglot sistem, farklı dillerin birbirini tamamladığı sistemdir.
kötü polyglot sistem, her geliştiricinin cv’sine satır eklemek için production’a mayın döşediği sistemdir.
özetle polyglot programming; doğru araçla doğru işi yapma sanatıdır.
ama disiplinsiz yapılırsa sanat değil, backend’e gömülmüş babil kulesidir.
ve o kule yıkılınca altında genelde junior değil, ops ekibi kalır.