Bir yazılım projesinde en çok anlaşmazlık yaratan konu fiyat değil, süredir. "3 ayda biter" cümlesi nasıl 8 aya dönüşür? Bunu anlamak için önce tahminlerin neden tutmadığını bilmek gerekiyor.
Süre tahminleri neden kayar?
Yazılım geliştirme, inşaat gibi değil. Bir bina yaparken malzeme miktarını ve işçilik süresini önceden hesaplayabilirsiniz. Yazılımda ise çoğu zaman ne yapılacağı projenin ortasında netleşiyor.
Sektördeki araştırmalar bu konuda tutarlı bir tablo çiziyor. Standish Group'un CHAOS raporlarına göre yazılım projelerinin yalnızca %29'u zamanında ve bütçe dahilinde tamamlanıyor. Kalanların önemli bir kısmı ya gecikmeli bitiyor ya da kapsam daraltılıyor.
Bunun birkaç temel nedeni var:
- Gereksinimler proje başında tam netleşmiyor. Müşteri ürünü kullanmaya başlayınca ne istediğini daha iyi anlıyor. Bu normal, ama planlanmamışsa süreyi uzatıyor.
- Entegrasyonlar tahmin edilenden zor çıkıyor. Ödeme sistemi, kargo API'si, muhasebe yazılımı... Her biri kağıtta basit görünür, pratikte sürpriz çıkarır.
- Test ve düzeltme süreleri küçümseniyor. Geliştirme bittikten sonra test, geri bildirim, düzeltme döngüsü projenin en az %20-30'unu alır.
- İletişim gecikmeleri birikirken görünmez olur. Onay bekleyen bir ekran, cevapsız kalan bir soru, ertelenen bir toplantı. Bunlar tek tek küçük, toplamda büyük.
Gerçekçi süreler nasıl görünüyor?
Proje türüne göre genel bir çerçeve vermek mümkün. Bunlar tavan değil, iyi koşullarda geçerli olan aralıklar.
Kurumsal web sitesi
Tasarım + geliştirme + içerik entegrasyonu dahil: 4-8 hafta. İçeriği müşteri sağlıyorsa bu sürenin yarısı çoğu zaman içerik beklemeyle geçiyor. Biz RadKod'da bu tür projelerde içerik teslim tarihini sözleşmeye yazıyoruz, çünkü içerik gecikmesi projeyi durduruyor.
E-ticaret sitesi
Hazır altyapı üzerine (Shopify, WooCommerce): 4-10 hafta. Özel yazılım: 3-6 ay. Fark bu kadar büyük çünkü ödeme güvenliği, stok yönetimi, kargo entegrasyonu gibi kritik modüller sıfırdan yazılıyor.
Mobil uygulama (iOS + Android)
MVP seviyesinde, temel özelliklerle: 3-5 ay. Çoğu müşteri MVP'yi hafife alır. "Sadece temel özellikler" dediğinizde bile kullanıcı girişi, bildirimler, ödeme, uygulama mağazası onay süreci gibi kalemler listeye giriyor.
Kurumsal yazılım (ERP, CRM, özel panel)
Kapsama göre çok değişiyor ama 4 ayın altı nadiren gerçekçi. Mevcut sistemlerle entegrasyon varsa bu süre uzuyor.
Süreyi kısaltan şeyler, uzatan şeyler
Deneyimlerimize göre projeyi en çok uzatan şey teknik zorluklar değil. Asıl beklentiler şunlar:
- Geç gelen geri bildirimler: Ekip bir özelliği geliştirip sunar, müşteri tarafından onay 2 hafta gelirse o modül bekler. Çarpan etkisiyle tüm proje kayar.
- Proje ortasında değişen kapsam: "Şunu da ekleyelim" cümlesi masum görünür. Ama her ekleme analiz, tasarım, geliştirme, test döngüsü demek.
- Eksik veya çelişkili gereksinimler: "Kullanıcı giriş yapabilsin" yeterli bir gereksinim değil. Hangi yöntemlerle? Sosyal giriş olacak mı? Şifre sıfırlama? İki faktörlü doğrulama?
Süreyi kısaltan şeyler ise basit: hızlı geri bildirim, net gereksinimler ve projeye ayrılmış zaman. Müşteri tarafında projeyi takip eden, kararları hızlı alabilen bir kişi olması tek başına haftalarca zaman kazandırıyor.
"Acil" projeler için gerçek tablo
Zaman zaman "2 haftada bitmesi lazım" talebiyle geliniyor. Bunu bazen yapabiliyoruz, ama neyin feda edildiğini açıkça söyleyelim:
Hız, kapsam ve kalite üçgeninde ikisini seçebilirsiniz, üçünü birden değil.
Çok kısa sürelerde ya kapsam ciddi ölçüde küçülüyor ya da teknik borç birikiyor. Teknik borç, hızlı yazılmış kodun ilerleyen süreçte bakım, hata düzeltme ve geliştirme maliyetini artırması demek. Bugün kazandığınız 2 haftayı önümüzdeki 6 ayda ödeyebilirsiniz.
Doğru soruyu sormak
Bir yazılım ekibinden teklif alırken "ne kadar sürer?" sorusu yerine şunları sorun:
- Bu süreye ne dahil, ne dahil değil?
- Hangi durumlarda bu süre uzayabilir?
- Proje boyunca iletişim nasıl yürüyecek?
- Teslimattan sonra destek nasıl işliyor?
Bu soruların cevapları net değilse, verilen süre tahminine güvenmek zor.
Proje başlamadan önce kapsamı yazılı olarak netleştirmek için biraz zaman harcamak, ilerleyen süreçte haftalarca tartışmayı önlüyor. Biz her projede bunu bir keşif aşamasıyla yapıyoruz. Kapsam ne kadar net olursa, verdiğimiz süre tahmini de o kadar güvenilir oluyor.