Yazılım projeleri neden bütçeyi aşar — ve nasıl aşmaz
Bütçe aşımının sebebi çoğu zaman kötü tahmin değil, tanımsız kapsam. Sabit fiyatın ne zaman işe yaradığı, keşif aşamasının niye ucuz olduğu ve sözleşmede olması gerekenler.
Yazılım projelerinin bütçeyi aşması bir tahmin problemi gibi görünür ama değildir. Tahmin, bilinen bir işin ne kadar süreceğini kestirmektir. Bütçeyi aşan projelerde sorun, işin ne olduğunun baştan bilinmemesidir.
Aşımın dört gerçek sebebi
1 · Kapsam yazılı değil, konuşulmuş
“Kullanıcı giriş yapabilsin” bir cümledir, kapsam değil. İçinde şunlar var mı: şifre sıfırlama, e-posta doğrulama, iki adımlı doğrulama, Google ile giriş, oturum süresi, çoklu cihaz, hesap silme, rol yönetimi?
Bunların her biri ayrı bir iş. Sekizi de “giriş” başlığının altında sayılırsa, teklifi veren üçünü, isteyen sekizini kastediyor olabilir. Fark üçüncü ayda ortaya çıkar.
Çözüm: kapsamı özellik listesi olarak değil, kabul kriteri olarak yazın. “Kullanıcı şifresini unuttuğunda e-postasına 15 dakika geçerli bağlantı gelir” cümlesi tartışmaya kapalıdır.
2 · Entegrasyonun karşı tarafı bilinmiyor
Projelerin en öngörülemez kalemi, başka bir sistemle konuşmaktır. Muhasebe yazılımının API’si dokümansız çıkabilir, kargo firmasının test ortamı olmayabilir, bankanın entegrasyon süreci altı hafta sürebilir.
Bu risk teklif aşamasında bilinemez. Bilinemeyen bir şeye sabit fiyat vermek, ya müşterinin ya tedarikçinin zarar etmesi demektir.
Çözüm: entegrasyon içeren projelerde önce ücretli keşif yapın. Bir hafta, karşı sistemlerin dokümanı okunur, test hesabı açılır, bir uçtan uca deneme yapılır. Sonunda gerçekçi bir rakam çıkar. Bu hafta pahalı görünür; alternatifi altı aylık bir anlaşmazlıktır.
3 · Karar verecek kişi projede yok
Geliştirme sırasında haftada birkaç küçük karar çıkar: bu alan zorunlu mu, bu liste kaça bölünecek, bu hata mesajı ne desin.
Bu kararları verecek yetkili kişi haftada bir toplantıda ulaşılabiliyorsa, ekip ya bekler ya tahmin eder. Beklemek gecikmedir; tahmin etmek yeniden yapımdır. İkisi de para.
Çözüm: müşteri tarafında tek bir karar sahibi belirleyin ve bu kişinin 24 saat içinde cevap verebileceğini sözleşmeye yazın.
4 · “Küçük” istekler toplanır
Tek başına hiçbiri iki günü geçmeyen otuz istek, altmış gün eder. Her biri makul olduğu için hiçbiri reddedilmez, ama toplamı projenin yarısı kadardır.
Çözüm: kapsam dışı her istek için sürenin ve bedelin yazılı olarak onaylandığı basit bir değişiklik kaydı tutun. Amaç istekleri engellemek değil, toplamı görünür kılmak.
Sabit fiyat mı, zaman-malzeme mi?
İkisi de doğru — farklı işlerde.
| Sabit fiyat | Zaman & malzeme | |
|---|---|---|
| Kapsam netliği | Yüksek olmalı | Belirsiz olabilir |
| Risk kimde | Tedarikçide | Müşteride |
| Değişikliğe uyum | Zor, her değişiklik pazarlık | Kolay |
| Tipik kullanım | Tanımlı, tekrarlanan iş | Ürün geliştirme, keşif |
Sabit fiyatın gizli maliyeti şudur: riski üstlenen taraf onu fiyata ekler. Yani belirsiz bir işe sabit fiyat isterseniz, ödediğiniz rakamda görünmeyen bir sigorta primi vardır. Kapsam gerçekten netse bu prim küçüktür; net değilse, ya siz fazla ödersiniz ya tedarikçi zarar eder ve kalite düşer.
Pratik yol: keşif sabit fiyatla, geliştirme aşamalı sabit fiyatla. Her aşamanın kapsamı bir önceki aşamanın sonunda netleşir.
Sözleşmede olması gerekenler
- Kabul kriterleri. Hangi cümle sağlandığında iş “bitti” sayılıyor.
- Değişiklik yönetimi. Kapsam dışı istek nasıl fiyatlanır, kim onaylar.
- Kaynak kodun sahipliği. Teslimde depo kimin hesabında.
- Ortam erişimleri. Alan adı, barındırma, veritabanı ve üçüncü taraf hesaplar kimin adına açılacak.
- Garanti süresi. Teslimden sonra kaç gün boyunca hatalar ücretsiz düzeltilir; “hata” ile “yeni istek” nasıl ayrılır.
- Devir paketi. Kurulum dokümanı, ortam değişkenleri listesi, mimari özeti.
Son madde en çok atlanandır ve en pahalıya patlayandır. Devir dokümanı olmayan bir proje, tedarikçi değiştiğinde baştan yazılır.
Tahmin verirken dürüstlük
Bir ekip size tek bir sayı veriyorsa dikkatli olun. Dürüst tahmin bir aralıktır ve aralığın genişliği belirsizliğin ölçüsüdür.
“6–8 hafta” diyen ekip düşünmüştür. “7 hafta” diyen ekip ya işi çok iyi biliyordur ya da rakamı satmak için söylüyordur. Hangisi olduğunu anlamak için tek soru yeterli: bu tahminin en riskli varsayımı ne?
Cevap verebiliyorsa tahmin gerçektir.