Yazılım projelerinde başarısızlığın nedeni çoğu zaman teknik başlıklar üzerinden açıklanır. Altyapı, teknoloji seçimi veya ekip yeterliliği konuşulur. Oysa sahada uzun süre proje yönetenlerin bildiği temel gerçek şudur: projelerin önemli bir kısmı teknik olarak değil, iletişim eksikliği nedeniyle sorun yaşar.
Projenin ilk aşamalarında taraflar genellikle aynı noktada buluştuklarını düşünür. Hızlı olsun, kullanıcı dostu olsun, ileride geliştirilebilir gibi ifadeler ortak bir anlayış hissi yaratır. Ancak bu tür tanımlar netleştirilmediği ve yazılı hale getirilmediği sürece, herkesin zihninde farklı anlamlar taşır.
Müşteri projeye kendi iş süreçleri ve beklentileri üzerinden yaklaşır. Yazılım ekibi ise sistemin sürdürülebilirliği ve teknik gereklilikleri açısından değerlendirir. Bu iki bakış açısı arasındaki boşluk, çoğu zaman proje ilerleyene kadar fark edilmez. Sorunlar ortaya çıktığında ise artık mesele teknik olmaktan çıkar.
Projelerde yaşanan pek çok kriz, konuşulmuş ancak dokümana yansımamış kararların doğal sonucudur. Başlangıçta esneklik olarak görülen bu durum, ilerleyen aşamalarda kapsam belirsizliğine ve güven kaybına dönüşür.
Uzun yıllar boyunca defalarca şahit olduğum bir durum var: Teknik olarak doğru inşa edilmiş bir proje, yalnızca başlangıçta netleştirilmeyen beklentiler nedeniyle başarısız algılanabiliyor. Bu noktada kod değil, iletişim sorgulanır.
Sağlam yazılım projeleri güçlü teknolojilerle değil, net tanımlanmış beklentiler ve disiplinli iletişimle başlar. Kod zamanla iyileştirilebilir. Yanlış anlaşılmalar ise çoğu zaman kalıcı izler bırakır.