Geçtiğimiz günlerde Joel Spolsky'nin Asla Yapmamanız Gereken Şeyler, Bölüm 1 başlıklı yazısına denk geldim. Oldukça eski tarihli bu yazı, Netscape 6 örneğinden başlayarak halihazırda varolan bir yazılımı sıfırdan yeniden yazmanın ne kadar yanlış bir hareket olduğundan bahsediyordu.
Profesyonel yazılım geliştirme ortamlarında her daim bir tartışma konusu olan bu soruyu, herkesin "abi bunu xyz ile sıfırdan yazarım ben x günde" dediği bir dünyada, bir de Fazlamesai'ye soralım dedim: Eğer elinizde bir şekilde çalışan, gereksinimleri karşılayan bir ürün varsa, bunu yeniden yazmak ne kadar doğru bir harekettir? Ne koşullar altında kabul edilebilir bir eylem sayılır? Hangi koşullar altında şirketinizin sonunu getirecek bir hamle olur?
Buyurun bakalım tartışmaya.
Kendimce bu soruyu yanıtlamaya çalışayım: Yazmamak! (uygun koşullarda)
Daha çok web geliştirme ile uğraşan bir insan olarak o bağlamda cevaplamak istiyorum. Web uygulamalarının en güzel yönü tamamen sunucu tarafından idare ediliyor olmaları. Bu sayede yazılımın bir veya birden fazla kısmını dilediğiniz zaman dilediğiniz şekilde değiştirme imkanınız oluyor. Bu nedenle herhangi bir yazılımı güncel tutmak için sıfırdan yeniden yazmak gerektiğine inanmıyorum.
Kişisel tecrübemden yola çıkarak söyleyebilirim ki, bu konuda en sıkıntılı konulardan biri üzerinde çalıştığınız sistemin düzgün bir şekilde katman izolasyonuna sahip olmamasıdır. Bu nedenle herhangi bir sistemi güncel hale getirmek gerektiği zaman genelde izlenebileceğine inandığım bir çizelge var:
Bu konuyla daha çok ilgilenen arkadaşlara Bob Amca'nin efsanvi kitabı Clean Code ve Michael Feathers'ın Working Effectively With Legacy Code kitaplarını tavsiye ederim. İyi okumalar.