Delirmeyelim, kod yazalım…

Farklı programlama dillerini öğrenmenin bende ki en büyük faydası diğer diller de sorgulamadan kabul ettiğim bazı şeyleri sorgulatması. Bazen başka programcılar ile de konuşurken bu sorunun aslında daha genel olduğunu görüyorum. Çoğu insanın fikirlerini şekillendiren başkalarından öğrendikleri ön kabüller. Tecrübesel veya deneysel yaklaşımlar ile fikir sahibi olmak çoğu insanın ilgilenmediği ve açıkcası zaman almasından dolayı üşendikleri bir fikir edinme yöntemi. Bunu benzer şekilde yazılımcılarda da görmek gayet olası ve hatta sıradan. Önceki yazımı okuduysanız düşünmenin öneminden bahsetmiş ve kitap okur gibi düşünme ve sorgulama zamanlarımız olmalı demiştim. O ifadelerin fazlasıyla önemli olduğu yerlerden bir tanesi de fikir işçileri sayılabilecek yazılım mühendisliği alanı. Hayatı problemleri analiz etmek ve bunları farklı yöntemler ve araçlar ile çözmesi gereken insanların zamanla fikir sahibi olmada ki sorunlarını görebiliyorsunuz. Her ne kadar tam olarak anlatmak istediklerimi anlatabilecek miyim emin olmasam da bir deneyim: İşleyen demirin paslanmaması ilkesinden yola çıkarsak başkalarının fikirlerine her daim dayanma ihtiyacı zamanla öğrenme ve düşünme biçimimizi de ciddi oranda etkiliyor ve kendimiz olarak yeni fikirler üretme ya da var olan fikirleri anın şartlarına uydurma fakültelerimiz sekteye uğruyor. Bu belki de rutin iş yapan başka meslek erbaplarında bizim ki kadar kötü olmayabilir. Belki onlar aynı bilgi ile hayatlarının sonuna kadar devam ediyor olabilirler, ama kendi fikirlerini oluşturmaları için gerekli kırılma noktaları, çözümleri hep başkalarından almak ile hayatlarına devam eden yazılımcılardan daha düşük olacaktır. Dedim ya işleyen demir ışıldar. Başka fikirlere devamlı ihtiyaç duymayan ile devamlı ihtiyaç duyan arasında bir fark olacaktır elbette. Bu arada tüm yazılımcılar böyle demiyorum, yazılımcılar içerisinde böyle insanların olduğunu ve bunların sorunlarının boyutunu anlatmaya çalışıyorum.

Bu ifadelerimi çok uç nokta görebilirsiniz. Uzaktan bakınca öyle durduklarında şüphe yok. Ama insanın karakterini şekillendirenin de gözünden kaçırdığı ve dikkat etmediği ufak tefek şeyler olduğunu unutmamak lazım. Bazı şeylerin yok olması zincirleme bir reaksiyon ile başka şeylerin de yok olmasına neden olacağı gibi, önem vermediğimiz zihni melekelerimiz de bizimle devamlı yaşamayacaklar.

Anlatmak istediğim kısım için uzun bir giriş yazısı oldu. Ama anlatmak istediklerime nereden geldiğimi, hangi açılarıdan baktığımı anlatabilmem için gerekliydi. Şimdi gelelim yazılım geliştirmenin zevkinin programcıların kendilerine aptal muamelesi yapmalarında kaybolduğuna dair ki görüşüme. Bu meslekten zevk almak istediğimiz aşikar. Hatta bu güne kadar geldiysek zevk aldığımız açık. Ama işin realiteler boyutunda her zaman zevk almadığımız var. Bunun da normal olduğunu kabul etmek zorundayız, ve çoğumuzun başından geçen tecrübelerde bunu çok defa yaşadık ama hala bu mesleğe devam ediyoruz. Neyse buraya kadar aynı sayfadayız diye umuyor ve devam ediyorum. Kendi fikirlerimiz oluşmadığında ve var olan fikirleri zamanın ve ortamın şartlarına uygun olarak yeniden değerlendiremediğimiz de her çözümü her şarta uygulamaya çalışıyor ve ileride hata yapacağımızdan ve dolayısıyla şimdi herşeyi önümüze sunulan prensipler ile kodlamamız gerektiğinin baskısını yaşıyoruz. Bu kısımlar çok hızlı yanlış anlaşılmaya müsait olduğundan bir kaç şey söylemek önemli: Evet kaliteli kod yazma prensiplerin değerli ve yararlı olduğunu düşünüyorum, evet onların olması gerekiyor, evet yardımcı oluyorlar… Ama sorun hangi prensiplerin tam olarak nerede ortaya sunulan emeğe değecek kadar değerli olduğu. Ya da bazen kaybedilen heyecan, motivasyon, ve zevke değdiği…

Yukarı da anlatmak istediklerimi bir örnek ile açıklayayım. Go dilini kullandıysanız private gibi encapsulation seviyesinin package olduğunu ve sınıf olmadığını bilirsiniz. Şimdi diğer dillerden gelen insanlar için sınıf yapısının Go da olmaması sorun bile olabiliyor ama benim amacım daha çok package kısmından bahsetmek. Kullanıcılardan birisi bunun ile alakalı şikayet ediyordu. Nedeni ise insanların kafasının karışabileceği korkusu. Yani neden sınıf seviyesinde access modification yok diye. Bence biraz bakınca siz bile sorunun ne olduğunu çok rahat gördünüz. Sorun alışkanlıkların fikir üretimi ile desteklenmemesi. Binlerce insanın birbirlerini etkilemek sureti ile sınıf seviyesinde access vermelerinin insanlar da kırılmaz ön yargılar oluşturması. Halbuki bu noktada yazılım mühendislerinin zannedilenden daha zeki olduklarının farkına varılması ve package seviyesinde encapsulate edilen kodu rahatlıkla anlayacak kapasiteye sahip olduklarının bilinmesi gerekiyor. Bazen kendimizi bu şekilde değmeyecek yada çözümü bizim istediğimiz gibi olmadı diye ön yargılarımız ile sabrımızı ve heyecanımızı döveceğimiz alışkanlıklardan kurtarmamız gerekiyor. Aynı zamanda değersiz yargılardan korumak ve olaylara kutunun dışından bakmak lazım.

Konu kafamda hala şekilleniyor ama umarım anlatmak istediklerimi basit bir şekilde anlatabilmişimdir.

Bir sonraki yazımda görüşmek üzere, happy coding…

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.