1.
"her işin bir ustası, her dilin bir raconu vardır" felsefesinin, yazılım ekiplerinin (bkz: cv) 'sine yansımasıdır. türkçesi: çok dillilik.
olay, tek bir projeyi veya sistemi (bkz: baştan sona java yazmak) gibi (bkz: amele sümüğü) bir yaklaşımla değil de, "işin hangi kısmı neyi gerektiriyorsa, o işi en iyi yapan dili kullanalım" aydınlanmasıdır. (bkz: right tool for the job) mottosunun (bkz: resume driven development) ile kesiştiği o tehlikeli kavşak.
(bkz: mikroservis mimarisi) denen hadisenin "abi madem servisleri böldük, herkes istediği dilde yazsın o zaman?" diye gazı vermesiyle popüler olmuştur.
ideal senaryo (hayaller):
yapay zeka / data science işi mi var? bas oraya (bkz: python) 'ı. (bkz: jupyter notebook) 'ta takılsın data'cılar.
yüksek performanslı, saniyede milyon request alacak (bkz: network) servisi mi lazım? (bkz: go) veya (bkz: rust) çaksın geçsin.
web arayüzü mü? zaten mecbursun, (bkz: javascript) ve onun (bkz: framework) 'lerine (bkz: react), (bkz: vue) vs.
ana iş yükü (backend), kurumsal hafıza, banka entegrasyonu mu? sal gelsin (bkz: java) veya (bkz: c#).
küçük scriptler, otomasyon işleri mi? (bkz: bash) veya (bkz: perl) (perl mü kaldı?).
kulağa ne kadar mantıklı, ne kadar medeni geliyor, değil mi? "herkes mutlu, her servis performanslı..."
gerçek hayat (acı gerçekler):
(bkz: resume driven development): asıl sebep genelde budur. (bkz: tech lead) bir yerde "abi (bkz: elixir) diye bi dil çıkmış, (bkz: erlang) falan, coşuyormuş" okur. ertesi gün "notification servisini elixir ile yeniden yazıyoruz" diye gelir. neden? çünkü cv'ye "elixir ile proje yönettim" yazacak. o servisin 6 ay sonra (bkz: yetim) kalması kimsenin umrunda olmaz.
devops'un dramı:
java için (bkz: jvm) ayarı yap.
python için (bkz: venv) ve (bkz: dependency) cehennemiyle boğuş.
(bkz: node js) için (bkz: npm audit) 'te çıkan 1500 güvenlik açığıyla uğraş.
go için statik binary'i al.
hepsine ayrı (bkz: dockerfile) optimize et, (bkz: ci/cd) pipeline'ı kur. devops'çu intiharın eşiğine gelir. (bkz: ben sadece boru döşeyecektim).
haskell'ci çocuk işten ayrıldı: o (bkz: süper performanslı) olması için (bkz: scala) veya (bkz: haskell) ile yazılan (bkz: kutsal) servise, onu yazan çocuk 3 ay sonra (bkz: booking com) 'a transfer olduğunda kimse dokunamaz. o servis (bkz: black box) olarak orada durur. dua edersin ki patlamasın.
yeni eleman (onboarding) çilesi: yeni başlayan (bkz: junior developer) 'a "hoş geldin, projeyi ayağa kaldırman için önce java, sonra go, sonra python kurman, bir de şu (bkz: lisp) koduna bakman lazım" dersin. çocuk ertesi gün "abi ben (bkz: kurumsal) 'a geçiyorum" diye kaçar.
kütüphane tutarlılığı: bir serviste (bkz: json) parse etmek için kullandığın kütüphane, diğer dildekinin davrandığı gibi davranmaz. (bkz: tarih formatlama) bir serviste (bkz: iso 8601) iken, diğeri (bkz: unix timestamp) basar. (bkz: distributed tracing) yaparken kafayı yersin.
özetle: polyglot programming, (bkz: tecrübeli) ve (bkz: olgun) ekiplerin elinde bir (bkz: isviçre çakısı) 'dır.
ancak, çoğunlukla, "abi şu yeni dili de deneyelim" diyen heyecanlı yazılımcıların, 3 yıl sonra (bkz: arap saçına dönmek) deyimini birebir yaşadığı, yönetilemez bir (bkz: teknoloji mezarlığı) yaratma sanatıdır.
(bkz: just because you can doesn t mean you should)
olay, tek bir projeyi veya sistemi (bkz: baştan sona java yazmak) gibi (bkz: amele sümüğü) bir yaklaşımla değil de, "işin hangi kısmı neyi gerektiriyorsa, o işi en iyi yapan dili kullanalım" aydınlanmasıdır. (bkz: right tool for the job) mottosunun (bkz: resume driven development) ile kesiştiği o tehlikeli kavşak.
(bkz: mikroservis mimarisi) denen hadisenin "abi madem servisleri böldük, herkes istediği dilde yazsın o zaman?" diye gazı vermesiyle popüler olmuştur.
ideal senaryo (hayaller):
yapay zeka / data science işi mi var? bas oraya (bkz: python) 'ı. (bkz: jupyter notebook) 'ta takılsın data'cılar.
yüksek performanslı, saniyede milyon request alacak (bkz: network) servisi mi lazım? (bkz: go) veya (bkz: rust) çaksın geçsin.
web arayüzü mü? zaten mecbursun, (bkz: javascript) ve onun (bkz: framework) 'lerine (bkz: react), (bkz: vue) vs.
ana iş yükü (backend), kurumsal hafıza, banka entegrasyonu mu? sal gelsin (bkz: java) veya (bkz: c#).
küçük scriptler, otomasyon işleri mi? (bkz: bash) veya (bkz: perl) (perl mü kaldı?).
kulağa ne kadar mantıklı, ne kadar medeni geliyor, değil mi? "herkes mutlu, her servis performanslı..."
gerçek hayat (acı gerçekler):
(bkz: resume driven development): asıl sebep genelde budur. (bkz: tech lead) bir yerde "abi (bkz: elixir) diye bi dil çıkmış, (bkz: erlang) falan, coşuyormuş" okur. ertesi gün "notification servisini elixir ile yeniden yazıyoruz" diye gelir. neden? çünkü cv'ye "elixir ile proje yönettim" yazacak. o servisin 6 ay sonra (bkz: yetim) kalması kimsenin umrunda olmaz.
devops'un dramı:
java için (bkz: jvm) ayarı yap.
python için (bkz: venv) ve (bkz: dependency) cehennemiyle boğuş.
(bkz: node js) için (bkz: npm audit) 'te çıkan 1500 güvenlik açığıyla uğraş.
go için statik binary'i al.
hepsine ayrı (bkz: dockerfile) optimize et, (bkz: ci/cd) pipeline'ı kur. devops'çu intiharın eşiğine gelir. (bkz: ben sadece boru döşeyecektim).
haskell'ci çocuk işten ayrıldı: o (bkz: süper performanslı) olması için (bkz: scala) veya (bkz: haskell) ile yazılan (bkz: kutsal) servise, onu yazan çocuk 3 ay sonra (bkz: booking com) 'a transfer olduğunda kimse dokunamaz. o servis (bkz: black box) olarak orada durur. dua edersin ki patlamasın.
yeni eleman (onboarding) çilesi: yeni başlayan (bkz: junior developer) 'a "hoş geldin, projeyi ayağa kaldırman için önce java, sonra go, sonra python kurman, bir de şu (bkz: lisp) koduna bakman lazım" dersin. çocuk ertesi gün "abi ben (bkz: kurumsal) 'a geçiyorum" diye kaçar.
kütüphane tutarlılığı: bir serviste (bkz: json) parse etmek için kullandığın kütüphane, diğer dildekinin davrandığı gibi davranmaz. (bkz: tarih formatlama) bir serviste (bkz: iso 8601) iken, diğeri (bkz: unix timestamp) basar. (bkz: distributed tracing) yaparken kafayı yersin.
özetle: polyglot programming, (bkz: tecrübeli) ve (bkz: olgun) ekiplerin elinde bir (bkz: isviçre çakısı) 'dır.
ancak, çoğunlukla, "abi şu yeni dili de deneyelim" diyen heyecanlı yazılımcıların, 3 yıl sonra (bkz: arap saçına dönmek) deyimini birebir yaşadığı, yönetilemez bir (bkz: teknoloji mezarlığı) yaratma sanatıdır.
(bkz: just because you can doesn t mean you should)
devamını gör...