Blog
Bitmiş, üzerinde durulmuş yazılar.
İskelet aşamasında bile nötr kalınamıyor
'Teknoloji seçimi henüz yapılmadı' diyen bir proje, devcontainer ve dependabot yapılandırmasında zaten dotnet ve npm ekosistemini seçmiş oluyor.
Tek kişilik projede AI'ın onay yetkisi olmaz
Kurucu hem karar hem onay otoritesiyken bunu gizlemek yerine yazıp, AI destekli incelemenin resmi onay yerine geçemeyeceğini ayrıca sertleştirmek.
Mimari sınır ile sürüm planı aynı şey değil
Bir özelliğin 'ilk sürümde yok' olması ile 'bunun için tasarlamıyoruz' olması farklı kararlar. Karıştırınca scope creep kaçınılmaz oluyor.
CORS'u çözmenin en iyi yolu: ona hiç ihtiyaç duymamak
React SPA ve API'yi aynı origin altında Caddy ile servis edip CORS'u devreden çıkarmak, systemd biriminde Type=exec ile sahte 'başarısız' hatasından kaçınmak.
Toplu içe aktarımda bir satır patlarsa hepsi durmasın
Excel içe aktarımında her satırı ayrı try/catch'e almak, dry-run için tek transaction içinde rollback yapmak — gerçek dosyalar hep beklenmedik satır içerir.
Şifrelenmiş alanda mükerrer kontrolü: kör indeks
AES-GCM her seferinde farklı şifreli metin ürettiği için mükerrer kaydı DB'de yakalayamıyorsun. Ayrı bir HMAC-SHA256 hash sütunu bu sorunu çözüyor.
SQLite göreli yolu, çalıştığın dizine göre farklı dosya bulur
Content root'a göre çözülen göreli bağlantı dizesi, dotnet run farklı dizinden çalıştırılınca veritabanının sessizce ikinci kopyasını oluşturuyor.
Plan dokümanı taahhüt değil, niyettir
Hedef mimari listesi Redis, Elasticsearch, Kubernetes derken gerçek kod SQL Server ve düz useState kullanıyorsa, bu başarısızlık değil, doğru sıralama.
Katmanlı mimariye geçerken eski klasörü silmeyi unutmak
Aynı entity üç ayrı yerde, birbirinden habersiz üç kopya olarak duruyorsa, o mimari geçiş bitmemiş, yarım bırakılmış demektir.
Performans bütçesi hedef değil, sınırdır
Sayı koymadan hızlı kalmak mümkün değil. Bütçe, hayır demenin yazılı hali.
Randevu çakışması: sadece başlangıç saatine bakma
İki zaman aralığının kesişip kesişmediğini doğru kontrol etmek tek satır, ama yaygın hata sadece start zamanını karşılaştırmak.
KPI enflasyonuna karşı: az ama anlamlı
PMO raporlamasında her ekip kendi metriğini eklediğinde sayı büyür ama sinyal küçülür. Az sayıda, gerçekten karar aldıran KPI daha değerli.
Agile ile PMI aynı projede: sürtünme nerede çıkıyor
Sprint bazlı çalışma ile PMI'ın kapsam/zaman/bütçe raporlama gereksinimi çelişmiyor, ama raporlama sıklığı farkı gerçek bir sürtünme noktası.
Risk kayıt defteri, olasılık-etki matrisinden ibaret değil
Bir riski matriste renklendirmek risk yönetimi değil. Risk sahibi atamadan ve yanıt stratejisi seçmeden matris sadece bir gözlem listesi.
Değişiklik kontrolü, değişikliği durdurmak için değil
Change Control Board'un işi 'hayır' demek değil, değişikliğin kapsam/zaman/bütçe üzerindeki etkisini görünür kılmak. Amaç görünürlük, engel değil.
WBS bir görev listesi değil, kapsam ayrıştırmasıdır
Work Breakdown Structure'ı 'yapılacaklar listesi' gibi kullanmak en yaygın hata. WBS'in işi kapsamı görünür kılmak, sırayı değil.
Statik site jeneratörü seçerken neye baktım
Astro, Hugo ve Eleventy arasındaki seçimin gerçek kriterleri.