Yazılım geliştiricilerinin gizli bir süper gücü vardır: Geçmişle pazarlık edebilirler. Bir satır kod üretimi çökerttiğinde git revert derler; yanlış dosya silindiğinde eski bir commit’e dönerler; deneysel bir fikri güvenle denemek için yeni bir branch açarlar. Hayatta ise çoğu zaman tek bir ana dalda çalışırız: konuştuğumuz söz, seçtiğimiz meslek, bitirdiğimiz ilişki ya da kaçırdığımız tren, canlı sisteme doğrudan gönderilmiş bir commit gibi görünür. Bu yüzden pişmanlık, insan zihninin en ısrarlı hata kaydıdır.
Commit atmak: Karar vermenin geri alınamaz görünüşü
Her karar, belirsizliği azaltmak için atılmış bir commit’tir. Bir işi kabul ettiğimizde, bir şehirden taşındığımızda veya bir tartışmada susmayı seçtiğimizde, sayısız olasılığı geçici olarak kapatırız. Pişmanlığın can yakan tarafı, çoğu zaman seçtiğimiz yol değil, seçmediğimiz branch’tir. Zihin, alternatif geçmişi kusursuz biçimde derler: O okula gitseydim daha mutlu olurdum; o mesajı atsaydım her şey değişirdi; o toplantıda itiraz etseydim hayatım başka olurdu. Ne var ki bu derleme işlemi gerçek verilerle değil, bugünün bilgisiyle yapılır. Geçmişteki benliğimizi, geleceği bilen bir geliştirici sanmak adil değildir.
Versiyon kontrolü burada öğretici bir disiplin sunar. İyi bir geliştirici, her değişikliği geri dönülemez bir kader olarak görmez; küçük, anlamlı ve izlenebilir commit’ler üretir. Hayatta da büyük kimlik kararlarını tek hamlede almak yerine küçük deneylere bölmek mümkündür. Yeni bir alana yönelmek istiyorsanız hemen tüm düzeni yıkmak zorunda değilsiniz: kursa katılmak, bir prototip üretmek, bir uzmanla konuşmak veya kısa süreli bir proje denemek, düşük riskli branch’lerdir. Cesaret her şeyi yakmak değildir; kontrollü deneme ortamı kurmaktır.
Ctrl+Z isteği ile sorumluluk arasındaki fark
Yine de insan, yalnızca geri alma tuşu isteyen bir makine değildir. Bazı kararların sonuçları başka insanların hayatına dokunur. Kırılan güven, terk edilen sorumluluk, söylenmiş ağır bir söz; bunlar dosya sisteminden silinince yok olan geçici çıktılar değildir. Bu noktada hayali bir Ctrl+Z arayışı, sorumluluktan kaçma arzusuna dönüşebilir. Olgunluk, geçmişi silmek değil, onun üzerine daha doğru bir commit eklemektir: özür dilemek, zararı telafi etmek, sınır koymak, yeniden öğrenmek ve gerekirse aynı hatayı tekrarlamayacak bir süreç tasarlamak.
Yazılım dünyasında revert, tarihi inkâr etmez. Hatalı değişikliği kayıtlarda bırakır, fakat etkisini tersine çeviren yeni bir değişiklik oluşturur. Hayat için daha sağlıklı model de budur. “Hiç olmamış gibi davranmak” yerine, “oldu; sonuçlarını görüyorum; şimdi daha iyi bir yön seçiyorum” diyebilmek gerekir. Geçmişi değiştiremeyiz, ancak geçmişin bugünkü davranışlarımız üzerindeki yetkisini yeniden yapılandırabiliriz. Hafıza salt bir arşiv değil, her açıldığında yeniden yorumlanan canlı bir depodur.
Bir başka tehlike de sürekli rollback yapma isteğidir. Her seçimden sonra eski sürüme dönmeye çalışan kişi, hiçbir yeniliğin yeterince çalışmasına izin vermez. İlk zorlukta ilişkiyi, işi ya da hedefi terk etmek; sistemde hata ayıklamak değil, sistemi hiç çalıştırmamaktır. Bazı problemlerin çözümü eski commit’e dönmek değildir; logları okumak, testi geliştirmek ve mimariyi sabırla iyileştirmektir. Pişmanlık bazen gerçekten yanlış yola girdiğimizi söyler; bazen de büyümenin sürtünmesini hata mesajı sanırız.
Belki hayatın trajik güzelliği tam burada yatar: Ana branch korunmaz, canlıdır; her gün yeni değişiklik alır. Elimizde mutlak bir Ctrl+Z yoktur, ama daha değerli araçlar vardır: dikkat, muhakeme, telafi, öğrenme ve yeniden seçim yapma kudreti. Geçmişin kötü commit’leri kim olduğumuzu tek başına belirlemez. Asıl belirleyici olan, bir sonraki değişikliği hangi bilinçle yazdığımızdır.