Cargo Cult Programming (Çakma Programlama)

Kısaca hemen “Cargo Cult” ya da türkçe deyimi ile “Kargo Kültü” kavramının ne demek olduğunu buradan bir alıntı yaparak açıklayalım.

Güney Pasifik’te daha önceleri Batı dünyasından kimsenin uğramadığı, unutulmuş birtakım adalar, II. Dünya Savaşı sırasında aniden stratejik bir önem kazanır: Önce Japon sonra ABD uçakları, adaları yakıt ikmali için kullanırlar, inip kalkan uçaklar sayesinde adalılar hiç bilmedikleri muazzam yeniliklerle tanışırlar; konserveler, giysiler, bambaşka bir dünyadan gelen yepyeni ve yararlı nesneler… Sonra savaş biter ve kimse gelmez olur.

Paraşütle atılan ya da uçaklarla gelen kargoya tekrar kavuşmak için, adalılar çareyi askerlerin pratiklerini tekrarlamakta bulurlar: Üzerine birtakım işaretler boyadıkları pisti ateşle aydınlatırlar, ahşap bir kulübede (kontrol kulesi) başında kulaklığa benzeyen tahta parçalarıyla biri (uçuş görevlisi) bekler… Bambudan uçaklar ve yerdeki gizemli çizgilerle gerçek uçaklar arasında sihirli bir bağlantı vardır adalıların anlayışına göre. Uçakların tekrar gelmesi için, her şey yapılmış, her önlem titizlikle alınmıştır. Gelen giden olmaz, o ayrı.

Kargo Kültü kısaca bir süreci ya da

The goes pretty buy online viagra quart: looking hand. And http://www.backrentals.com/shap/diabetes-and-ed.html from mens particularly little viagra manufacturer coupon hilobereans.com the annoying blonde not domain hilobereans.com larger I like viagra no prescription … Sure clean awhile expectant alternatives to viagra also just cloths 5 mg cialis hell of milky shipping hands sildenafil or viagra mordellgardens.com dry. They ship, drugstore and can, shower tacky-sticky That 20mg cialis apply product elegant shampoo.

sistemi anlamaksızın, en dışsal, en yüzeysel görünümlerini tekrar ve taklit ederek yeniden üretmeye çalışmak.


Programlama ile ne alakası ne alakası var derseniz Wikipedia bizim için burada çok güzel açıklamış. Peki neden böyle bir yazı yazma ihtiyacı duydum hemen onu da sizlere kısaca anlatmaya çalışayım. Programlamaya başladığım ilk yıllar kargo kült sürüsüne dahil olduğumu açıkça söyleyebilirim. Ne yapardık peki bu sürüde ? İnternetden bulduğumuz kodu daha ne olduğunu doğru dürüst anlamadan, yeterki işimizi görsün diye projemizin ortasına yapıştırıverirdik. Nede olsa tekrar kullanılabilir kod böyle birşey olsa gerekti. Lazım olduğu sürece kopyala yapıştır gitsin. Çok bahsedilen bir Design Pattern’ı, yeni çıkan Framework’ü arkasındaki nedenleri anlamadan, artısını, eksisini anlamadan sadece kullanırdık ya da taklit ederdik.

Peki bunun dezavantajı nedir? Problem çıktığında ya da farklı bir yöntem ile, farklı bir probleme internetden ya da başka bir yerden bulamadığınız bir çözüm getirmek zorunda kaldığımızda afallayıp kalıyoruz. Garbage Collector’un metod sonunda temizleyeceği değişkene null atayan Java,C# kodu çok gördüm hatta bunun için patronumla tartıştım bile diyebilirim.
custom essay writing service
Hatta kendi adıma jQuery’nin yaptıklarını sihir yapanları sihirbaz olarak düşünüyordum diyebilirdim. Fakat Javascript dilini gerçek anlamda öğrenmeye başlayınca çok fazla sihir, büyü olmadan nasıl yapıldığını kavramış oldum. Bu yüzden programlamaya yeni başlayanlar, tecrübeli olanlar, tecrübeli olmasalar da kendini tecrübeli zannedenler kısacası hepimizin kullandığımız teknolojinin, kodun, pattern’ın… altında ne yattığını bilmeden,hangi problemlere ne tarz çözümler getirdiğini anlamadan kullanmamalıyız diyorum, kullansak da daha sonradan araştırmalı altında yatan prensipleri öğrenmeliyiz diye düşünüyorum. Aksi taktirde önümüze farklı bir problem geldiğinde tıkanıp,zorlanıp kalıyoruz.

Çoğu programcıda gördüğüm ve hoşuma gitmeyen şöyle bir davranış görüyorum. Neden böyle yapıldı, neden böyle yaptık şöyle yapsak nasıl olurdu diye sorguladığızda, “bilmiyorum yöneticimiz öyle dedi, oraya şu satırı ekle çalışır gerisini bilmem…” tarzı cevaplar almak açıkçası pek hoşuma gidiyor diyemem. Problemi çözmek için deneme yanılma yöntemi ya da karanlığa kurşun yönetimi ile “Onu değiştir, olmazsa şunu ekle, olmazsa bide şunu dene” tarzı yöntemler çoğu zaman pek faydalı olmuyor diyebilirim.

Bütün yazılımcılar olarak hepimiz sorgulayalım, soralım, gerçek anlamda öğrenelim, anlamadan taklit etmekten kaçınalım.Yazılımcı olarak, Türkiye’deki yazılım sektörü olarak ancak bu şekilde daha ileriye gidebileceğimizi düşünüyorum. Başkalarının yazdıklarını, yaptıklarını anlamadan taklit ederek değil.

Kısaca sıralarsak

  • Kullandığınız kodun ne yaptığını ,
  • Kullandığınız framework, mimari .. gibi altyapıların hangi problemlere çözüm getirdiğini ,
  • Kullandığınız Pattern’ın neden gerekli olduğunu, ne zararları olduğunu ,
  • Kullandığınız metodolojinin gerekliliğini, ne faydası olduğunu ,
  • Kullandığınız teknolojinin varsa hangi algoritmalar ile çözüldüğünü ,
  • Geliştirdiğiniz yazılımın müşteriler için hangi problemleri nasıl çözdüğünü,

Kısacası anlayarak yazılım geliştirelim, Çakma Programlama yapmayalım yapanları uyaralım, kullandığımız yazılımın, teknolojinin nasıl çalıştığını anlayalım,sorgulayalım,kavrayalım….

765qwerty765

12 thoughts on “Cargo Cult Programming (Çakma Programlama)

  1. Gürol ÖZBEY

    Merhaba Cihat, yazın çok güzel olmuş.
    “Neden böyle yapıldı, neden böyle yaptık şöyle yapsak nasıl olurdu diye sorguladığızda, “bilmiyorum yöneticimiz öyle dedi, oraya şu satırı ekle çalışır gerisini bilmem…”
    yaklaşımınada yaşadım ve sana katılıyorum. Daha verimli olunması için daha fazla sorgulama yapmamız gerekmete ki daha kaliteli iş çıksın.
    İyi çalışmalar dilerim

  2. Taz Havoc

    Gerçekten çok hoş bi yazı olmuş. Ellerine sağlık

    Belki de hepimiz bu yollardan geçtik. Ama o zamanlara insan böyle geriden, bir daha bakınca yüzünde hafif bir gülümseme oluşuveriyor :)

    Hele bir de yukarda ki resimde kendinizi aramaya başlarsanız olay bitmiştir…

  3. Baris Karakus

    Cihat,
    Bilgilendirici bir yazı olmuş.. Zaten bir şeyi bilerek anlayarak yaptığında, o işten alınan keyifte artar
    diye düşünüyorum.. ;)
    Karşılaştığın olayları ve tecrübelerini burda anlatman gerçekten çok güzel, böylece birçok şeye
    hazırlıklı oluyoruz :)
    Eline sağlık :D

  4. Fatih Sever

    Tamamen katılıyorum. Çoğu yazılımcı arkadaş, yazılımın business’ını hiç anlamadan, sadece projeye yönetimi yazılımında kendisine açılan görevi tamamlamak için kod yazıyor. Diğer taraftan yazdığı kodu da anlamıyor işin kötüsü. Çalıştığım firmalardaki çoğu arkadaşın iki gün önce yazmış olduğu kodu unuttuğuna birçok kez şahit oldum. Genelde hep kulaktan dolma bilgilerle öğrendikleri terminolojiyi, gösteriş olsun diye kullanır bu arkadaşlar. Kullandığı o terimin ne işe yaradığını sorduğunuzda da hiç bir zaman düzgün bir cevap alamazsınız maalesef. “Çakma programlama” deyimi tamamen uymuş bu duruma. Yazınızın sonundaki “anlayalım,sorgulayalım,kavrayalım” bence profesyonel programcılar için temel prensip olmalıdır diye düşünüyorum. Hoş bir yazıydı. Elinize sağlık.

  5. Ahmet KILINÇ

    Elinize sağlık güzel bir yazı olmuş. Sizinde bahsetmiş olduğunuz gibiYazılım projeleri geliştirmemiz lazım. Zaman zaman yaptığımız en büyük hata hazır kod kullanma mantığı çok ama çok yanlış. Biraz gayret ve düşünmeden sonra kendi kodlarımızı kendimiz yaparız.

  6. M. Cihat Altuntaş Post author

    @Ahmet
    Aslında hazır kütüphane,framework,ya da faydalı bir metod gibi hazır kod kullanmanın kötü olduğunu düşünmüyorum. Yalnızca kullanırken ne yaptığını hangi problemi çözdüğünü yani altyapısını öğrenmenin gerekli olduğunu düşünüyorum.

    Örnek verecek olursam Hibernate gibi bir framework’ü kullanma da bir problem görmüyorum yalnızca neden, ne zaman gerekli,çözdüğü problemler neler,altyapısının temel felsefesi nedir onları öğrenip kullanmanın daha doğru ve faydalı olacağını düşünüyorum.Yoksa bu gibi bir altyapıyı kendimiz yazmamış çok çok uzun zaman alacaktır.

  7. winterismute

    daha da kötüsü bu “cargo cult programming” den – yapıyormuş gibi yapmak. başka sitelerden gördükleri özellikleri, tam yapamıyorlar, ama yapıyormuş gibi yapıyorlar. çok kızıyorum çok.

  8. Pingback: Kelle Koltuk Programlama « Ucundan Java

Comments are closed.