Bir şirkette işe yeni başladığınızda genellikle size sistemin mimarisini, veritabanı şemalarını ve şirketin büyük hedeflerini anlatırlar. Ancak o projede gerçekten neler yaşandığını, ekibin ruh halini ve projenin gizli travmalarını anlamak istiyorsanız bakmanız gereken tek bir yer vardır: Git Commit Geçmişi.

Git, teoride kaynak kodu versiyonlamak (version control) için tasarlanmış harika bir araçtır. Ancak pratikte, yazılımcıların sessiz çığlıklarını, çaresizliklerini ve anlık aydınlanmalarını kaydettikleri devasa bir dijital günlük işlevi görür.

Commit Mesajlarının Psikolojik Evrimi

Bir projenin başlangıç evresi her zaman umut doludur. İlk haftalardaki commit mesajları o kadar temiz, o kadar profesyoneldir ki bir şiir kitabı gibi okunabilir:

  • feat: kullanıcı giriş modülü eklendi
  • refactor: veritabanı bağlantı havuzu optimize edildi
  • docs: README dosyası güncellendi

Bu mesajları yazan kişi, 8 saatlik sağlıklı uykusunu almış, sabah kahvesini içmiş ve hayatından memnun bir geliştiricidir. Her şey kuralına uygundur. Linter hataları çözülmüş, kod formatlanmıştır.

Fakat proje yavaş yavaş canlıya (production) yaklaşmaya başladığında, o kusursuz profesyonellik yerini ufak bir telaşa bırakır:

  • fix: login butonu ara sıra çalışmıyor düzelttim
  • chore: gereksiz consol.log'lar silindi
  • WIP: henüz bitmedi ama kodu alıyorum

Artık geliştiricimiz ufak tefek pürüzlerle karşılaşmaktadır. Ürün yöneticisinin (Product Manager) ensesinde hissettiği nefesi, commit mesajlarındaki o hafif gerginliği hissettirmeye başlar.

Gece 03:00 Cinnetleri

Gerçek travma ise canlı ortama geçişin (deployment) hemen öncesinde, Cuma gecesi saat 02:45'te atılan o acil durum commitlerinde gizlidir. Bu evrede artık geleneksel yazılım kuralları (SemVer, Conventional Commits) tamamen çökmüş, insan doğasının en ham, en çaresiz hali klavyeye yansımıştır:

  • fix: abi neden calismiyor localde calisiyordu
  • test: ulan cache yuzundenmis 4 saattir ariyorum
  • asdasdsadsa
  • YETER CALIS ARTIK LUTFEN
  • fix: son_duzeltme_gercekten_son_v4_final

Eğer bir projenin geçmişinde üst üste 15 tane "asdasdsadsa" mesajı görüyorsanız, o satırlarda sadece kod değişikliği yoktur. O satırlarda, ocağın üstünde unutulmuş bir çay, iptal edilmiş bir sinema bileti ve sinirden kemirilmiş tırnaklar vardır.

Kodu Okumak vs İnsanı Okumak

Yeni bir projeyi devraldığımda her zaman git log --oneline komutunu çalıştırır ve ekibin geçmişine bakarım. Eğer tüm proje başından sonuna kadar kusursuz, kitabi mesajlarla doluyorsa, o projede gerçek bir tutku olmadığını bilirim.

Çünkü kod hata verir. Sistemler çöker. Ve eğer o sistemleri yazan insanlar bu çöküşlere tamamen duygusuz, robotik bir şekilde tepki veriyorsa, ortada bir gariplik vardır. Gerçek yazılımcıların klavyesine arada sırada kan, ter ve gözyaşı damlar. Ve bu damlalar, versiyon kontrol sistemimizin bir köşesinde sonsuza dek saklanır.

Bir dahaki sefere koda bakarken sadece algoritmaları değil, o algoritmaları yazan insanın saat 03:00'teki o çaresiz yalnızlığını da görmeye çalışın. Çünkü kodumuz, bizim en dürüst aynamızdır.