Yazılımcının En büyük Hatası
Cevabı hemen söylüyorum: Yazılımı sıfırdan tekrar yazmak.
Bunun için yazılım dünyasında çok büyük örnekler var. En büyüğü Netscape. Eğer wikipedia olsaydı linki şu derdim: https://en.wikipedia.org/wiki/Netscape
O Nestcape ki Javascript’i geliştiren firma. O Nestcape ki yıllarca Inter Explorer gibi başka hiç bir rakibi olmayan bir firma. O Nestcape ki zamanında AOL firmasına 10 Milyar Dolara satılmış. Ne varki versiyon 4’den sonra tüm tarayıcı kodlarını tekrardan yazmaya karar vermişler ama yeniden yazmaları 3 yılı bulmuş. Bu sırada da tarayıcı pazarında yok olup gittiler. En sonunda tüm kaynak kodlarını açmaya kara vermişler ve Mozilla bu şekilde doğmuş.
Bu yazıyı yazmamın sebebi Netscape değil. Bizim şirketinin büyük bir uygulaması var. Şu anki sürümün yazımı 2 yıla yakın sürmüş ve bir kaç müşteri tüm işlevleriyle sorunsuz kullanıyor. Derken yeni bir yazılımcı geldi. İşe başlar başlamaz bu uygulamanın kodlarının çok karmaşık olduğunu ve kendisinin tüm uygulamayı birkaç haftada yeniden yazabileceğine patronu ikna etmiş. Patron da sağolsun hiçkimseye danışmadan tamam yaz demiş.
Biz yeni eleman işlere yadımcı olacak diye mutluyken bir de baktık adamın hep işi var, hiç bir işe yardımcı olmuyor bir de sürekli yardım istiyor.
Yazılımcılar bir anlamda mimardırlar bir anlamda da mütahhittir ve ilk yapmak istedikleri iş her şeyi silip sıfırdan yeniden yapmaktır. Geliştirme ve düzeltme konusunda pek istekli olan yoktur. Bunun ilk nedeni eski kodun bir çöplük olarak görülmesidir. Bunun da ilk nedeni kodu okumanın yazmaktan daha zor olmasıdır.
Bu yüzden kodların tekrar kullanımı çok zordur. Bu yüzden herkesin kendi extension ve fonksiyonları vardır. Şu anda hangi yazılıcıya sorarsanız sorun çalıştıkları projeyi sıfırdan yapmak istemeyen bulamazsınız. Nedenleri şunlar olarak sıralayabilirler:
- Bu fonksiyona benziyor ama ne olduğu belli değil
- İki sayfa uzunluğunda, ne yaptığı belli olmuyor
- Bu kadar çok API çağırıyor ki nedenini bir türlü anlayamıyorum
Şöyle bir durum var ki: eski kod uzun zamandır kullanılıyor, test ediliyor ve çalışıyor. Bir metodun bu kadar uzun olmasının nedeni eski hatalar olmasın sakın. Oradaki her bir satır olası bir hatayı engellemek için yazılmış olabilir. Hadi diyelim ki projeyi sıfırdan yazdınız. İlk sefer yaqzdığınızdan daha iyi yazacağınızı nereden biliyorsunuz? İki sene sonra gelen yazılımcı sizin yazdığınızı yine beğenmeyecek.
Siz en iyisi nasıl iyi refactoring yapılır onu öğrenin: