Selamlar arkadaşlar,
Bu yazımda kötü kodu neden yazıyoruz, neden kötü ürün çıkartıyoruz konusunu biraz irdelemek istiyorum.
Şu an çalıştığım firmada ilk işe başladığım zaman her gördüğüm kod karşısında daha hiddetleniyor, daha fazla insanlara kızıyor, sürekli eleştiriyordum. Aradan yıllar geçtikçe doğal olarak benim kodlarım da bayağı çoğaldı firmamızın kod tabanında. Bir gün bir analist arkadaşım bir sorun için geldi ve bana sorunun neden kaynaklandığını sordu. Ben de kodu incelerken yine kızmaya başladım. Bu kod böyle mi yazılır, bu nasıl hata! gibisinden sürekli laf ediyordum. Sonra gayri ihtiyari kim yazmış bu kodu diye loglarına bakma ihtiyacı duydum. Kodu yazan ve depoya atan kişi olarak kendi adımı görünce Ata Demirer’in Tek Kişilik Dev Kadrosu’ndaki ben neymişim, hay ben kendimin ağzına diye başladım. O gün çok önemsemesem de zamanla bakıyorum ki bu hataları hepimiz yaptık, yapıyoruz ve muhtemelen yapmaya devam edeceğiz. Kendinin çok iyi olduğunu düşünen insanlar da, herhangi bir şekilde bir bilgisi olmadığını düşünen insanlar da aynı yolu izleyecek.
İnsanın kötü iş çıkarmasının üç farklı sebebi olabilir diye düşünüyorum. Birincisi bilmemek/tecrübesizlik. Gayet tabii bir şekilde iş yaparken öncelik olarak yaptığımız işin bitmesini istiyoruz. Bunu da en hızlı yoldan nasıl yaparsak kendimizi o kadar başarılı görüyoruz veya bazı arkadaşlarda (ben bu grupta çokça bulundum) yaptığı şeyi sanat eseri gibi düşünerek çok ince eleyip olayın sonunu getiremeyebiliyor, bu da başka bir sorun tabii, bunu başka bir yazıda konuşuruz. Doğru bir iş yaptığını sanmak, ama aslında doğrudan çok uzakta bir şeylerle uğraşıyor olmak genelde yaşadığımız/yaşanılan, zamanla da yaşamaktan ziyade tecrübelerimiz sayesinde gözlemlediğimiz bir durum olmaya başlıyor. Bariz bir şekilde Dunning-Kruger etkisinde oluyoruz sanırım. Birileri bu bilgisizlik sorunlarının farkına varıp düzeltmek adına karar almazsa, deneyimsiz arkadaşlar her zaman daha iyiye gittiklerini düşünüyor. Bu durum için gerçekten insanları eleştirecek bir nokta bulamıyorum. Tecrübe olmaması zamanla geçecek bir durum. Bu durumun daha da kötüsü ikinci sebep oluyor, bilmemek/tecrübelilik. Yani edinilen tecrübenin de yanlış olması. Zaten birinci durum düzeltilmezse devamı bu oluyor.
Yıllarca kod yazmışsınız, bir sürü alışkanlık edinmişsiniz, öğretmeyi de seviyorsanız bu bilgileri aktarmışsınız ve en nihayetinde bilginiz doğru/geçerli değil. Üzücü. Bu tür bir durum sanıyorum eskilerin açtığı yolu izlemek ve yeni bir yol açamamakla daha sık karşılaşılan sorunlardan birisi oluveriyor bir anda. Biz yıllardır böyle yapıyoruz. Sen de böyle yap! Tutucu olmak bu sektörde çok iyi sonuçlar doğurmuyor. Firma içinde bir yapı kurulmuş, yıllarca geliştirilmiş. Bu yapının yanlış olması pek mümkün değil, keza yanlış olsa firma yıllarca duramaz. En olası ihtimal güncelliğini yitirmiş olması olabilir. Siz henüz yirmili yaşların başındasınız(genç arkadaşlar için söylüyorum), yazılım dünyası neredeyse her yıl yeni bir trend çıkarıyor, siz daha kullandığınız dilin 5 yıl önceki versiyonunu kullanıyorsunuz, üstüne yenisine geçmek sürekli olarak erteleniyor veya istenmiyor. Bu durum da çok büyük ihtimalle size kötü bir ürün çıkarmanız için gerekli altyapıyı sunar. Bugün değilse bile yavaş yavaş ürün çıkarma maliyetleri ile ürün bakım maliyetleri arasındaki oran sapıtacaktır. Normalde beklenen ürün çıkarma maliyetleri artsa bile destek/bakım maliyetinin çok artmamasıdır. Bu maliyetlerin artması için birkaç yol var. Bunları da başka bir yazıda konuşalım. Sanıyorum ikinci maddedeki söylemek istediğimi aktarabildim. Burada şöyle bir istisna var. Firmanız çok iyi bir ürün altyapısına sahipse (yazılım anlamında) eski teknoloji sorun olmayabilir. Ben başarılı ve başarısız diyebileceğim bazı kodlara ve kararlara tanık oldum.
En son ve en büyük sıkıntı ise bilmek/tecrübe/art niyet(ego). Kişisel çıkarların grup çıkarlarının önüne geçmesi durumu. O zaman ortada birkaç sorun birden oluyor. Birincisi bu üç özelliğin yan yana olduğuna tanık olmak bayağı can sıkıyor. İkincisi burada bir etik sorunumuz var. Üçüncüsü genellikle siz iyi yapmak isteseniz bile sizin eliniz kolunuz o kadar uzun olmuyor. Gerek kendi tecrübelerimden gerekse çeşitli firmalarda duyduğum arkadaşlarımdan bu tür durumların çok yaşandığını öğreniyoruz. Bu gruptaki olayların nasıl yaşandığını açıkçası detaylandırmak istemiyorum. Belki ileride bir gün detaylı da yazarım. Ama en önemlisi ve sanıyorum ki en çok yapılanı; tiyatro perdesi açıldığında güzel bir oyunculuk çıkarmak, kapandığındaysa arkada oyunla alakasız kalmak, diyelim. Tabi seyirci önemli, sonuçta yükselten de alçaltan da seyirci, e tabi seyirci de biraz yüksekten olursa daha da güzel olur, pek de iyi olur.
İlk iki grupta yer aldım, ama sonuncusunda almadım sanıyorum (en azından bilerek hiç almadım).
Peki bu ilk iki grupta yer almamak için ne yapabiliriz? Aslında ilk grupta yer almamak gibi bir seçenek yok. Her türlü orada biraz ya da bir hayli zaman geçireceğiz. Birincisini hızlı geçmek, ikincisinde az kalmak içinse; biraz akademik, biraz da Mahmutpaşa esnafı olmak lazım. Ne demek bu? Ben profesörüm edasında açıp kitap/dergi/haber (yazılım) okumak, özellikle temelleri iyi öğrenmek lazım. Diğer yandan insanlarla aramız iyi olursa, çevremizde kimin konuyu bildiğini çabuk kavrayabilirsek, her türlü işi yaparız abicim şeklinde çalışırsak muhtemelen burnumuz pislikten kurtulmaz. Ne kadar pisliğe girersek de o kadar güzel tecrübe edinmiş oluruz. Aksini düşünenler de var. Bu kişisel düşüncem. Pisliğin kokusunu çabuk alırız. Genellikle şunu da unutmamak lazım; ortada bir pislik varsa o pisliği temizleyen birileri olur. O adam her zaman kıymetlidir. Tabi üçüncü grupta takılmak için temizlemiş gibi de yapabilirsiniz. Seçim sizin. Diğer bir yöntem de, bence en etkili olanlarından birisi, etrafınızdaki çalışkan ve bilgili insanları enayi yerine koymayıp, onlara saygı gösterdikçe onları sömürmekten çekinmeyin. Sorun. Biraz egolarının şişirir siniz en fazla. Ama önce soru sormayı öğrenin.
“Soru da bilgiden doğar cevap da”
Mevlana
Burada belirttiklerim genel anlamda kendi görüşlerim. Tabii ki eksik / yanlış görüşlerim olabilir. Katılmadığınız düşünceler olabilir. İnsanların tecrübeleri her zaman aynı doğrultuda değil. Bir diğer açıdan üçüncü grupta olmak, o grupta olan insanlar için güzel bir duygu bile olabilir olayları hep bizim değer yargılarımızla düşünmemek lazım. Önemli olanı biz neredeyiz, nereye gidiyoruz…
Saygılar.