Yazılım projelerinde bazı fikirler o kadar yaygındır ki, yanlış oldukları fark edilmeden doğru kabul edilirler.
Bu yanlış kabuller çoğu zaman:
- iyi niyetlidir,
- mantıklı görünür,
- ama uzun vadede ciddi karar hatalarına yol açar.
Aşağıdaki başlıklar, sahada en sık karşılaşılan ve en pahalıya patlayan yanlış bilinenlerdir.
“Teknoloji doğruysa proje zaten başarılı olur”
Bu, en yaygın ve en tehlikeli kabullerden biridir.
Doğru teknoloji seçimi önemlidir, evet.
Ama başarısız projelerin çok büyük bir kısmı:
- yanlış framework kullandığı için değil,
- yanlış problem çözdüğü için başarısız olur.
Teknoloji, kararların sonucudur.
Kararların yerini tutmaz.
“Baştan iyi planlarsak sorun kalmaz”
Planlama gereksiz değildir ama fazla güvenilen planlar en kırılgan olanlardır.
Özellikle erken aşamada:
- kullanıcı net değilken,
- ihtiyaçlar tam şekillenmemişken,
- ürünün nereye evrileceği bilinmezken
yapılan detaylı planlar hız kazandırmaz,
yalnızca değişimi pahalı hale getirir.
Planlar, belirsizliği ortadan kaldırmaz.
Sadece onunla nasıl yaşayacağınızı belirler.
“Sonra temizleriz” yaklaşımı zararsızdır
Bu cümle tek başına yanlış değildir.
Ama ne zaman ve hangi kapsamda temizleneceği belli değilse,
bir karar değil, ertelemedir.
Sahada sık görülen tablo şudur:
- “sonra” hiç gelmez,
- geçici çözümler kalıcı hale gelir,
- kimse o alana tekrar dokunmak istemez.
Bu noktada problem teknik değil,
kararların sahiplenilmemesidir.
“Teknik borç sadece kötü kod demektir”
Teknik borç çoğu zaman yanlış anlaşılır.
Gerçek hayatta teknik borç:
- belirsiz sorumluluklar,
- yanlış soyutlamalar,
- net olmayan sınırlar
gibi yapısal kararların sonucudur.
Kod temizliği önemlidir ama tek başına yeterli değildir.
Borcu yaratan kararlar değişmedikçe, borç geri gelir.
“Büyüme olunca her şey daha net olur”
Birçok ekip büyümeyi belirsizliği azaltan bir şey olarak görür.
Gerçekte ise büyüme, belirsizliği daha görünür hale getirir.
Küçükken idare eden kararlar:
- kullanıcı arttıkça,
- senaryo çeşitlendikçe,
- ekip genişledikçe
çatlamaya başlar.
Büyüme, sorunları çözmez.
Sorunların üzerindeki örtüyü kaldırır.
“Legacy sistem demek eski teknoloji demektir”
Bu yanlış bilinen, modernizasyon projelerinde en çok zarar veren kabuldür.
Legacy sistem demek:
- mutlaka eski teknoloji demek değildir.
- Çoğu zaman zaman içinde birikmiş kararlar demektir.
Yeni teknolojiyle yazılmış ama:
- kimsenin dokunmak istemediği,
- neden çalıştığı bilinmeyen,
- değişimi riskli görülen
bir sistem de fiilen legacy’dir.
“Baştan yazmak her zaman daha temiz bir çözümdür”
“Baştan yazalım” fikri cazip görünür.
Ama çoğu zaman:
- mevcut sistemin neden o hale geldiği anlaşılmadan,
- iş kuralları tam çözülmeden
alınır.
Sonuç olarak:
- aynı problemler yeniden üretilir,
- yeni sistem eskisini yakalayamaz,
- ekip iki sistem arasında sıkışır.
Baştan yazmak çözüm değildir.
Doğru yapılmazsa sadece reset atılmış bir hatadır.
Kapanış
Yanlış bilinenlerin en tehlikeli yanı şudur:
çoğu zaman mantıklı görünürler.
Bu yüzden sorgulanmazlar.
Ama yazılım projelerinde asıl risk,
yanlış teknolojilerden değil,
yanlış ama sorgulanmayan kabullerden doğar.
Asıl fark yaratan ekipler:
- her şeyi doğru bildiğini sananlar değil,
- hangi kabullerin yanlış olabileceğini sürekli sorgulayanlardır.