> “Bunu yapmak ne kadar sürer sence?”
- Yazılım geliştiricilerin korktuğu ve nefret ettiği bu soruya çamaşır makinem bana yeniden düşündürdü
- Çamaşır makinesinin gösterdiği yazılım efor tahmini (Software Effort Estimation) zorluğu
- Yeni eve taşınırken çamaşır makinesini kurma süreci beklenenden çok daha fazla zaman aldı
- Normalde 10 dakikada bitecek bir işti ama bu kez 4 saat sürdü
- Önceden öngörülmeyen engeller (blocker'lar) ortaya çıktı ve kurulum gecikti
- Bu sürecin, yazılım geliştirmede efor tahminini neden zorlaştırdığıyla benzer olduğunu fark ettim
- Engeller ve çözümler
- Engel 1: Elektrik bağlantısı için delik yoktu, bu yüzden çamaşır makinesini prize bağlayamadım
- Çözüm 1: Hırdavatçıdan 60 mm'lik bir panç testere ucu alıp delik açtım
- Engel 2: Tüketici tipi matkapla panç testere ucu kullanılamıyordu
- Çözüm 2: Daha güçlü bir matkap ödünç alıp kullandım
- Engel 3: Gider ve temiz su hortumları yeni evde beklediğimden daha kısa kaldı
- Çözüm 3: Yeni bir uzatma hortumu almaya çalıştım ama mevcut hortumun uzatılamadığını fark edip yeniden yeni hortum satın aldım
- Engel 4: Musluğa sıkıca sabitlenmiş metal kapak çıkarılamıyordu
- Çözüm 4: Daha büyük bir İngiliz anahtarı alıp kapağı çıkardım
- Engel 5: Giderin spigot'u PVC bir duvarla kapalıydı
- Çözüm 5: Matkapla PVC duvarı delip gider hortumunu bağladım
- Toplam 5 hırdavatçı ziyareti ve 4 saatlik çalışmanın ardından çamaşır makinesini sonunda sorunsuz kurabildim
- Engel 1: Elektrik bağlantısı için delik yoktu, bu yüzden çamaşır makinesini prize bağlayamadım
- Yazılım geliştirmede efor tahmini neden zordur?
- Tanıdık bir iş olsa bile ortam değiştiğinde beklenmedik değişkenlerin ortaya çıkma ihtimali yüksektir
- Geçmiş deneyime dayalı tahminlerin sık sık yanlış çıkmasının nedeni “bilinmeyen bilinmezler (Unknown Unknowns)”dir
- Bazı örnekler:
- Kullanmayı planladığınız kütüphanenin artık bakım almıyor olması ve doğrudan kendiniz düzeltmek zorunda kalmanız
- Geliştirme araçları güncellendiğinde eski yöntemin artık geçerli olmaması
- OS sürümü değiştiğinde mevcut bağımlılıkların düzgün çalışmaması
- Altyapıya yeni bir bileşen eklendiğinde onun beklendiğinden farklı davranması
- Sonuç
- Yeni evdeki bu deneyim, yazılım geliştirmede efor tahmininin ne kadar zor olduğunu gösterdi
- Geliştirmeye başlamadan önce gereksinimleri olabildiğince ayrıntılı incelemek gerekir, ancak beklenmedik blocker'ların ortaya çıkması kaçınılmazdır
- Yazılım projeleri tanıdık işler gibi görünse bile yeni bir ortamda bambaşka zorluklar ortaya çıkabilir
- Bu değişkenleri hesaba katarak takvimi ve kaynakları esnek şekilde ayarlamak gerekir
1 yorum
Hacker News görüşleri
Yazılım tahmini bir şaka gibi; çünkü düşük tahmin yapmanın bir cezası yok
Harika bir yazı, ama yazılım deneyimiyle ilgili temel bir fark eksik
DIY projeleri her zaman böyledir
Delik açtıktan sonra 25 dakika boyunca düz kalmayı korumayı ve gürültü engelleyici kulaklıkların şaşırtıcılığını öğrendim
Hikâye güzel. Ama benim deneyimim neredeyse tam tersi
Bu bana “gerçekliğin şaşırtıcı ayrıntıları vardır” sözünü hatırlatıyor
Yazar elektrik kablosu için delik açarken plastik parçayı tertemiz oturtuyor
Çoğu iş arkadaşım, proje başlamadan önce araştırma ve envanterin çok zaman aldığını söylediğimde şaşırıyor
Bir dahaki sefere bir teknisyenin fiyatına şaşırdığınızda düşünmeye değer ilginç bir nokta
Bir yazılım projesine başlamadan önce hangi soruları sormanız gerektiğini bilmiyorsanız ne yapmalısınız?