Bir feature eklemem gerekiyordu, aynı modülün içine. Dosyayı açtım, commit geçmişine baktım, altı ay önce ben yazmışım. Ve içim sıkıştı. Kod refactoring deneyimi yaşamak için önce o koda bakmalısın. Bakmalısın ki ne kadar kötü yazdığını anlayasın. Değişken adları tek harf. Bir fonksiyon beş farklı iş yapıyor. Yorum yok, test yok, logic iç içe geçmiş spaghetti. "Ben mi yazdım bunu?" diye kendi kendime sordum. Cevap acı verici biçimde evetti. O gün yeni feature'ı hemen yazmadım. Önce refactoring kararı aldım. Küçük adımlarla başladım, önce anlamlı değişken adları, sonra büyük fonksiyonu parçalara bölmek, sonra tekrar eden mantığı ayrı bir yere taşımak. Kod refactoring deneyimi bana şunu öğretti: İyi kod yazmak tek seferlik bir eylem değil, tekrar eden bir süreç. Refactoring sürerken bir noktada durdum. Şunu fark ettim: O altı ay önceki ben, elinden gelenin en iyisini yazmaya çalışmıştı. Sadece bilgisi bugünkü kadar değildi. Utanç yerini anlayışa bıraktı yavaş yavaş. Ama yine de o kodu daha iyi hale getirmeye devam ettim. Yeni feature'ı sonunda iki günde bitirdim. Normal şartlarda belki dört gün sürerdi. Refactoring yapmak zaman kaybı gibi görünüyor başta, ama aslında ilerleyen her adımı hızlandırıyor. Temiz kod üzerine inşa etmek, çamura inşa etmekten kat kat hızlı. Kod refactoring deneyimi benim için bir alçakgönüllülük dersi oldu. Geçmişte iyi niyetle yaptıklarım mükemmel değildi. Bugün yazdıklarım da altı ay sonra bana hantal görünecek. Bu döngü sona ermiyor, ve bu aslında güzel bir şey. Büyümeye devam ettiğimin kanıtı.