Yazılımda Otopilot

yazar:

kategori:

Akıllı ev projem çerçevesinde lavabolara sensörlü musluklar taktım. Doğal olarak kısa bir zaman sonra, musluğu açmadan, sadece ellerimi musluğun altına tutatak, el yıkama işlemi beynimde rutinleşti. Evin içinde olduğum sürece bu bir sorun teşkil etmiyor. Lakin iş yerinde iken ellerimi lavaboda yıkamak istediğimde, garip bir durumla karşılaşıyorum ve beynimin bu durumu anlaması saniyeler alıyor. Öylece saniyeler boyunca musluğu açmadan, suyun akmasını bekliyorum, ta ki evde olmadığımı anlayana kadar! Bu gerçekten garip bir durum.

Beyin sürekli işlemleri rutin hale getirmeye, yani onları otomatize etmeye çalışıyor. Bu otomasyon sayesinde günlük işlerimizin üstesinde kolaylıkla gelebiliyoruz, çünkü ne yapmamız gerektiğini uzunca düşünmemiz gerekmiyor. Bu bir nevi otopilot. Bu rutinleşme olmadan örneğin mutfağa gidip, bir bardak su içmek bile bizim için tahammülü zor bir prosedür haline gelebilirdi. Düşünsenize, su içmek istediğinizde her defasında mutfağın nerede olduğunu, sizin evin neresinde olduğunuzu, bulunduğunuz yerden mutfağa gitmek için gerekli yol planlamasını nasıl yapacağınızı, bardağı bulup, suyu bardağa nasıl koyacağınızı ve suyu içtikten sonra tekrar geriye nasıl döneceğinizi her defasında düşünmek zorunda kalmanız, beyninizi müthiş derecede zorlardı. Mutfağa giderek, bir bardak suyun nasıl içildiğini daha önce en az bir kere yaptığımız ve bu işlemin nasıl yapıldığını öğrendiğimiz için, daha sonraki su içme seanslarını düşünmeden gerçekleştirebiliyoruz. Bunun beynin otopilota bağlaması neticesinde başarabiliyoruz.

Yazılımda da bu söz konusu. Program yazarken yapmamız gereken işlemleri çok fazla düşünmek zorunda kalmadan beynimizde yer alan rutinler aracılığı ile gerçekleştiriyoruz. Beynimizde yer alan bu rutinlerin çoğu bazı problemleri çözmek için ilk öğrendiğimiz bilgilerden ve uyguladığımız ilk yöntem ve davranış biçimlerinden oluşuyor. Beyin bir işlemi rutinleştirmek için gerekli bilgileri topladığı andan itibaren otomasyon için gerekli kodu oluşturup, gerekli gördüğü anlarda bu kodu koşturmaya başlıyor.

Buna örnek olarak switch komutunu verebiliriz. Switch komutunu ilk defa uygulayan bir programcı, daha sonra hiç düşünmeden bu yapıyı kullanmaya meğil gösterecektir, çünkü beyni onu alışık olduğu bir rutin kullanmaya teşvik edecektir. Oysaki if/else ya da switch yapılarını nesneye yönelik programlama teknikleri ile ortadan kaldırılabilir. Ama önce switch kullanmak için beyinde yer alan rutinin silinmesi ve yeni bir rutin oluşturulması gerekmektedir. Bunu mümkün mü? Mümkün ise, nasıl yapılabilir?

Benim musluk problemini çözmem mümkün değil. Büyük bir ihtimalle beynim mevcut musluk kullanma rutinlerini bulunduğu ortama göre zaman içinde adapte edecektir. Aktif olarak benim bir şey yapmam gerekmiyor. Ama beynim bir şeyler yapması gerektigini kısa zamanda anladı ya da anlayacak, çünkü musluğun başında durup, açılmasını beklemek sadece beni değil, onu da zaman içinde rahatsız edecektir. Bu gerekliliği gördüğü için mevcut musluk rutinlerini adapte edeceğini düşünüyorum.

Lakin bu durumu switch kullanan bir programcı ile kıyasladığımızda, durumun çok farklı olduğunu görmekteyiz. Programcı switch komutunu kullandığında, benim gibi anormal bir durumla karşılaşmıyor. Programcı için bir iritasyon söz konusu değil. Bu yüzden switch komutunu kullanmayı öğrenmiş bir programcı ömrü boyunca switch komutuna sadık kalacaktır. Ama programcının beynide switch komutunu kullanma rutininin oluşması, bu komutun kullanımının doğru olduğu anlamına gelmez. Burada, ne yazık ki programcı gözünü ilk açtığında switch komutunu gördüğünden, switch komutunu ilk uygularken beyni gizlice olup, bitenlerin fotoğrafını çekmiş ve hemen gerekli rutinleri oluşturmuştur.

İşte daha iyi bir programcı olamamanın başlıca sebebi budur. Ne yazık ki birçok programcı ilk öğrendiklerinin esiri olarak kalırlar. Bu durumu sorgulamadıkları sürece, mevcut kod yazma rutinlerinin kullanımı devam eder. Onların da ne kadar iyi oldukları ortadadır.

Bu durumu sorgulamaya başlamış ve daha iyi kod yazmak isteyen bir programcı ne yapmalıdır? Bu sorunun cevabı çok kolay olmakla birlikte, uygulama zorluk derecesi kişiye göre değişecektir. Kısaca cevap vermek gerekirse, eski rutinleri silip, beynimizi yeni rutinler oluşturmaya tesvik etmemiz gerekmektedir. Bunu sağlayan tek bir yöntem tanıyorum: pratik yapmak! Bu konuda daha önce yazmış olduğum yazılara aşağıdaki linkler üzerinden ulaşabilirsiniz.

Mevcut rutinleri silip, yenilerini oluşturmak mümkün. Ama bunun bir bedeli var.


EOF (End Of Fun)
Özcan Acar


Yorumlar

“Yazılımda Otopilot” için 3 yanıt

  1. Ahmet Burak Demirkoparan avatarı
    Ahmet Burak Demirkoparan

    Başkalarının kodunu okumakta çok fazla ilham verebiliyor.

  2. fatih acar avatarı
    fatih acar

    Hocam guzel bir yazı olmuş ancak bir konuya takılıyorum. Ben bir kamu kurumunda çalışıyorum ve resmi yazışmalar yapıyoruz ve bazı yazılar matbu gelir ancak ben her defasında yeniden yazmayı tercih ederim çünkü matbuda hatalar olabilir. Beynimizde otomatiklesen işler için yorumlama gereği duymayiz ama her seferinde yorumlarsak beynimiz daha aktif olmaz mı? Eskiden cep telefonu yokken numaralar akılda tutuluyor du şimdi kalmıyor gibi düşünüyorum.

    1. Özcan Acar avatarı
      Özcan Acar

      Bulmaca cözmenin ya da sudoku yapmanin da akli zinde tuttugu söylenir, ama bu dogru degil. Sadece belli bir konuda beyni calistirmis olmak ne IQ derecegini artirir ne de beyni aktiflestirir.