Yazılım Projelerinin Zaman Planmasında 12 Problem

Bir yazilim projesinde zaman planlamasi yapmak zor bir istir, fakat hala çogu firma bu zaman planlamalarina dayanarak projelerini yürütmeye devam ederler. Bu yazida yazilim projelerinde yapilan zaman planlamalarinda yapilan en temel 12 hataya dikkat çekmeye çalisacagim.

  1. Bilinmeyen üzerine plan yapmak imkansizdir
  2. Çogu yazilim birbirinden farklidir, ve her projede neredeyse daha önce hiç yapilmamis bir ürün gelistirilir. Projede yapilacaklar belirli olsa bile, karmasik bir sistemi gelistirmek istenen belli olmasina ragmen bile zordur.
    Bir program bir çok farkli yöntem ile yapilabilir. Zaman planlamasi asamasinda net olarak belirlenemeyen dizayn seçimleri, bir yazilimin bitis zamanini dogrudan etkiler.
    Yapilan zaman planlarinin, istenildigi sekilde yürüyebilmesi için kabul görmüs belli basli yöntemler vardir fakat, en iyi yöntemle bile yapilan plan, yazilim gelistirme aktif olarak baslamadigi için öngörü ve varsayimdan ibarettir.

  3. Yapilan Planlar Genelde Iyimserdir
  4. Çogu programci planlarini oldukça iyimser varsayimlar üzerine yapar. Proje basladiginda daha üretken olacaklarini düsündüklerinden veya projenin karmasikligini tam olarak anlayamadiklarindan iyimser varsayimlarda bulunmus olabilirler. Bu planlari degerlendiren kisiler genelde bu iyimser planlamari biraz daha genisletip daha gerçekçi hale getirirler. Örnegin kodun yazilmasi bir haftada biter gibi bir tahminde bulunulmussa bunu 2 hafta veya bir aya çikarmakla daha gerçekçi planlar elde edilebilir.

  5. Verilen Zaman Sonuna Kadar Kullanilir
  6. Çogu programci verilen zamani sonuna kadar kullanmaya meyillidir. Yaptiklari isi erken bitirseler bile, kalani zamani projeye katkisi olmayacak kod düzeltmeleri yapmak, kodu birazcik hizlandirmak için harcarlar. Bazende isini bitirdikten sonra verilen zamanin bitmesini bekleyip farkli bir ise baslamazlar. Bu yaklasimla isler asla planlandigindan çabuk bitmez, ya saydigim nedenlerden ötürü zamaninda biter, ya da isler yolunda gitmez ve gecikir.

  7. Firmalar Zaman Planlamarina Oldukça Fazla Itimat Eder
  8. Ürün çikis tarihleri, fuarlara katilim ve tanitim tarihleri hepsi projenin zaman planmasi baz alinarak yapilir. Satis ve pazarlama birimleri anlasmalarini bu tahminler üzerine yapar ve yapilan planlamada olusacak bir gecikme daha baska yapilan bir çok planinda gecikmesine neden olur.

  9. Önrülemeyen Seyler Üzerine Çok Fazla Zaman Harcanir
  10. Yapilan tahminler mükemmel bile olsalar, proje üzerinde çalisirken karsimiza öngöremedigimiz bir çok problem çikar. Eski versiyonlarda problemler çikar bunlari düzelmek için kaynak ayirmamiz gerekir, çalisanimiz hastalanmis olabilir, proje esnasinda bekledigimiz yeni isler çikmis olabilir. Çogu sirket planlarini yaparken bu gibi durumlar için ekstra zaman ayirir, fakat varsayimlar üzerine yapilmis bir plana varsayimlar üzerine ekstra zaman eklemekle nekadar güvenilir birsey elde etmis oluruz ?

  11. Zaman Planlamasina Tahmi Gözüyle Bakilmamasi
  12. Yapilan zaman planlari aslinda bir tür tahmindir fakat insanlar buna tahmin gözüyle bakmazlar, bu planlara kesinlikle aksamayacak gerçeklesecek gözüyle bakilir ve baska planlarda buna güvenerek yapilir. Ilk planda olacak bir gecikme bu yüzden zincir etkisiyle diger planlari da etkiler.

  13. Programcilar Arasindaki Verimlilik Farklari Gözardi Edilir
  14. Bu durum yapilan zaman planlamarini daha da zorlastirir. Insaat sektöründe duvar ustalarinin ortalama bir duvari örme hizini bilebilirsiniz fakat bir isi yapma hizi programcilar arasinda çok büyük farklilik gösterir. Is yapma hizi ve bir isin bitmesi için gerek efor: bu iki bilinmeyeni kullanarak tahmin yapmaya çalistiginiz da isiniz daha da zorlasir.
    Programci kendi yapacagi isin zaman planlamasini kendi yaptiginda isiniz az da olsa kolaylasir çünkü kendi üretkenlikleri hakkinda sizden daha çok bilgileri vardir. Fakat bu tahminleri onlar yerine genelde proje yöneticileri yapar ve bütün programcilara esit üretkenlikteymisler gibi davranir.

  15. Müsterinin Isteklerindeki Degisiklik Proje Planina Yansitilmaz
  16. Proje devam ederken, ortaya ufak ufak birseyler çikmaya basladiginda müsteri ortaya çikan bazi özelliklerden memnun olmaz degistirtmek ister veya memnun kalir ve ekstra bir kaç sey daha eklenmesini ister. Bu gibi degisiklikler proje planina bazen yansitilmaz fakat her gelen istek yapilacak fazladan is oldugu için bu gibi durumlar plana yansitilmak zorundadir.

  17. Gerçek Anlasildiginda Genelde Çok Geç Kalinmistir
  18. Önceki maddelerde belirtmistik programcilar genelde iyimser tahminlerde bulunurlar. Çogu zaman iyimser tahminde bulunduklarina ve projeyi yetistiremeyeceklerine inanmazlar taa ki son gün gelipte daha yapilacak bir çok isin kaldigi anlasilincaya kadar. Fakat artik çok geç kalinmistir, proje gecikmis ürün çikis tarihi ertelenmistir.

  19. Bir Plan Geciktiginde Digerleri de Güncellenmeli
  20. Programcilar genelde projenin planlanan bir kismini zamaninda bitiremediklerinde, diger yapacaklari islerin planlarini güncellemezler. Arada kaybolan zamani sonraki isleri daha hizlari yaparak kapatacaklarina inanirlar fakat genelde tam tersi. Böyle bir durum genelde iyimser tahmin yapildiginda isarettir

  21. Planlar Gerçeklesmediginde Programcilar Suçlanir
  22. Planlar geciktiginde suçlanacak birileri bulunmaya çalisilir ve bu genelde plana ayak uyduramayan programcilar olur. Bu stresli bir çalisma ortami yaratir ve programci sonraki projelerde suçlanmamak için yaptigi zaman planlamarinda genis davranir.

  23. Planlari Yanlis Insanlar Yapar
  24. Programcilar üzerinde çalistiklari konuyla ilgili tahminleri kendileri yapmalilar. Proje yöneticisi bu tahmini onun yerind yaptigi zaman zamanlama konusunda sikintilar yasanir. Eger çalistiginiz yerde MBA yapmis biri sizin yerinize çalistiginiz is üzerinde plan yapiyor ise orada durmayin

12 Problems With Software Estimation yazisinin çevirisidir.

Comments

Yazılım Dünyasında Kariyer

Bruce Eckel tarafından yazılan A Career in Computing yazısının çevirisidir.

Sık sık insanlar benden kariyerleriyle ilgili tavsiye isterler. Bütün cevapları bu yazımda bir araya toplamaya çalıştım. Bana yazip da cevap veremediklerimden özür dilerim, sorularınız tavsiye istekleriniz beni bu yazıyı yazmaya teşvik etti. İnsanlar kariyerle ilgili genelde “C++ mı Java mı öğrenmeliyim” gibi yanlış soruyu sorarlar. Bu yazımda yazılım dünyasında kariyer yaparken, kariyerimize yön verirken gerçekte hangi soruları sormalı, hangi konularla ilgilenmeliyiz, onu tartışacağım.

Read the rest of this entry »

Comments

Etkili Çalışma mı Verimli Çalışma mı ?

Etkili ve verimli birbirlerinin yerine kullanılabilen iki kelimedir. Bir çok metodoloji “etkili ve verimli çalışmayı” arttıracağından bahseder. Fakat yazılım mühendisliği gibi çok hızlı değişen bir sektörde bu iki kelime birbirine benzer değil, birbirinden tamamen ayrı kavramlardır. Çevik (Agile) yazılım geliştirme metodunu anlayabilmemiz için bu iki kavramı iyice anlamış olmak, nerelerde birbirlerinin yerine kullanılabileceklerini nerelerde kullanılamayacaklarını öğrenmek gerekir.

Read the rest of this entry »

Comments

Test Güdümlü Yazılım Geliştirme – 1

Çevik Yazilim – Agile Development
Test Driven Development – Test Güdümlü Yazilim Gelistirme
Refactor – Yazilimin islev ve davranisini degistirmeden kod yapisi üzerinde yapilan degisiklik.

Yazının ikinci bölümü için tıklayınız…

Çevik süreçlerde kullanilan en önemli yazilim gelistirme metodlarindan biri test güdümlü gelistirmedir. Önce test kodunun yazip sonra islevsel kodu yazdiginiz için, testleri yazdiginiz esnada aslinda ne için ve ne sekilde kod yazacaginizida kafanizda tasarlamis olursunuz.

Çogu gelistirici test güdümlü yazilimin en büyük faydasinin, elinizde ürünle beraber onu test edecek kodunda olmasi olarak görür. Tam olarak uygulandiginda test güdümlü yazilim gelistirmenin bunun çok ötesinde faydalari vardir. Test siniflarini yazmaya basladigininz anda aklinizdaki dizayn bu testlerin etrafinda daha iyiye giderek sekillenir.

Read the rest of this entry »

Comments (1)

Çalışan Kod Yazmanın 4 Adımı

Kod çalışır hale gelsin, bunun dışında başka birşeyin önemi yok diye mi düşünüyorsunuz ? Fakat kodunuzun yeterince iyi olup olmadığına karar vermek için çalışıyor olması yeterli değil. Bir yazılım projesinin de baştan sona götürülmesine tekabül eden bu dört adım, sizin şuanda hangi safhada olduğunuzu nelere ihtiyacınız olduğu ve olacağını görmenizde yararlı olacaktır.

Read the rest of this entry »

Comments (1)