Yazdığımız her kod bizi biraz daha geliştirir. Zaman bulduğunuzda veya yazdığınız koddan kaynaklanan bir hatadan dolayı daha önceki kodlarınızı incelediğinizde bunu en çok fark edersiniz. Çünkü bu durumda geçmişinizle gününüzü karşılaştırabiliyorsunuz. Eğer geçmiş kodlara baktığınızda ne güzel yazmışım diyorsanız ve her yönüyle çok iyi yazmışım diyorsanız kişisel gelişmenizde bir problem var demektir.
Konuyla alakalı diğer bir husus ise bilgi depomuz doldukça bu bilginin kullanımında da cömert oluyoruz ve çoğu zaman bu da yazdığımız kodun sadece kendimiz anlayabileceği, hatta seneler sonra bizim bile anlayamayacağımız bir kod kalabalığına dönüşmesine neden olabiliyor.
Maalesef günümüz reel sektörde bir çok yazılımcı kimsenin anlamayacağı kod yazmayı da marifet sanıyor. Ekiple birlikte çalışmakta zorlanan "eski kafalı" yazılımcılar bu konuda biraz daha ön plana çıkıyor. Belki de yazılım sektörü için eski kafalılığın da tanımı budur. (Benim gözlemim daha fazla maaş aldıkları için ve bunu ispatlamak için, yada vazgeçilmeyecek kişi olup işlerini garantiye almak için bu tarza yöntemleri benimsemiş olabilecekleri yönünde)
İşin özü bir yazılım geliştirdiğinizde o yazılımı işe yeni başlayan birine bile kolayca anlatabiliyorsanız işinizi iyi yapıyorsunuz demektir.
Algoritmaların zorluğu bir çok durumda yazılan güzel kodlarla basitleşir. Bazen yazılım analistlerinin sayfalarla anlatamadıkları analizler yazılım tasarımcısı ve kod yazarlarının elinde öyle bir hale gelir ki analistler de kod okuyarak veya yazarak süreci devam etmek isterler. Bazen kod o kadar kötü yazılır ve süreç planlaması o kadar yanlış gider ki kod yazıldıktan sonra bile programcılar her problemle karşılaştığında ne yapıyorduk biz burada deme noktasına gelirler. Bu iki durumda da olayın temel bir noktası vardır.
İşi basitleştirmek!
İşin özü seneler sonra bile yazdığınız kodu açıp belirli bir süre incelediğinizde kodu kısa sürede anlayıp işin mantığını koddan çıkarta biliyorsanız iyi iş yapmışsınız demektir.
Bir "basitlik" sözünü açıkladıktan sonra artık asıl konumuz olan yazılımlarda KISS prensibi konusunu detaylı inceleyebiliriz.
KISS ingiliczede öpmek veya öpücük anlamına gelir.
Yazılım prensibi olarak KISS ise biraz bu anlamdan uzaktır ve ingilizce karşılıklarını aşağıda vereceğimiz sözlerin ilk harflerinin birleşmesinden oluşur. Her halde konuyu sırf öpücüğe bağlamak da istemiş olabilirler:
“Keep it short and simple”
“Keep it simple, stupid”
“Keep it simple, silly”
“Keep it simple and straightforward”
"Keep It Small and Simple"
gibi açılımlar yapıldığını görürüz.
KISS Prensibi en basit çözüm ihtiyacın olan çözümdür mottasının kalıplaşmış halidir.
1960’lı yıllarda Amerikan donanmasında ilk olarak ifade edilen bu prensip günümüzde en önemli programlama prensiplerinden biridir. Bir problemi çözerken olabilecek en basit ve yalın çözümü seçmeyi önerir. Hatta o kadar basit olmalıdır ki ilk bakışta “Bunu bir aptal bile yapar ve anlar” demeliyiz.
KISS Prensibi aslında terim ve mantık olarak tüm mühendislik dallarında, hatta hayatımızın her alanında yol gösterici ve önemli kriterdir diye düşünüyorum. Makalenin konusu itibari ile yazılım sektörü hedef alındığı için olayları bu açıdan değerlendiriyorum.
KISS Prensibi , karmaşık çözümlerin daha “zekice” çözümler olduğu fikrini reddeder. Çoğu mühendis/yazılımcı karmaşık çözümler bularak, karmaşık yapılar inşa ederek “zekice” işler yaptığını düşünür. Dışarıdan bakan bir insan ne kadar zor anlar ise o kadar artı değer ürettiğini sanır. Ancak zor olan basitleştirmektir.v,0
Yazılımda KISS Prensibi belirli bir problemin çözümünün mümkün olan en basit yoldan yapılması ve aynı zamanda kullanıcıların da en kısa yoldan ve basitçe işlerini hallede bilmeyi sağlayan projeler geliştirilmesi amacıya düşünülmüş ve amacı da temelinde yazılım geliştiricilerinin işlerini kolaylaştırmak olduğunu vurgulamak istiyorum. Çünkü bir problemin basit ve en uygun çözümünü uygularsan 1 sene sonra konuyu incelediğinde senin de anlaman kolay olacak.
Son olarak bahsetmek istediğim bir konu daha var. Hiç bir yazılımcı bir günde yetişmiyor. Çoğu zaman iş tecrübesi ve daha önce çalıştığı eşip arkadaşları ve kendi kültürel değerlerini de topladığımızda çok farklı yazılımcı profilleri ve kültürleri ortaya çıkıyor. Her ülkeden bir c# yazılımcısı getirip benzer konularda yazdıkları kodları mercek altına aldığımızda muhtemel bu kodların içinde o ülkenin kültürel ve sosyoekonomik durumunun belirtilerini fark edeceğiz. Benim düşüncem ise özellikle KISS gibi prensiplerin ekonomik düzeyi orta ve düşük olan ülkelerde daha iyi anlatılması gerektiğidir.
Yorumlar
Yorum Gönder