Yazılım Geliştirme süreçlerinde küçük çevrimler

Ekim 2011 | Hakan Köse, İnternet Girişimcisi
Yazılım geliştirme, oldukça zahmetli ve sabır isteyen bir iş. Aynı zamanda, sabır isteyen bir iş için ise fazlasıyla çeviklik gerektiren bir iş. Bu yüzden yazılım geliştirme süreçlerinde Deadline dediğimiz, bitiş tarihlerini yakalamak ve zamanlamayı tutturabilmek oldukça zor hale geliyor. Bu sorunla ilgili olarak uygulanmasını tavsiye ettiğim (tecrübelerime dayanarak) çeşitli sıralamaları paylaşmak istiyorum.

Öncelikle her yazılım projesinde olduğu gibi bir projenin genel tanımı ve projenin genel tanımına uygun şekilde hazırlanmış bir task listesi yazılım geliştiricinin önünde hep durur. Bu listeler için TFS (Team Foundation Server) içinde gömülü gelen ve buna benzer bir çok araç kullanılabilsede, en basit ve bence en etkili olan yol, ortak bir liste tutmak ve bu check list üzerinden iş paketlerinin üzerine gitmektir. Biraz daha detay girelim isterseniz.

Nasıl bir task listesi üzerinde nasıl çalışmalı?

  1. Task, yani görev, açıklayıcı biçimde yazılmış ve gerekirse örneklendirilerek belirtilmiş olmalıdır. (ör. Kullanıcının sitede herhangi bir içerik üzerinde Upvote veya Downvote yapabileceği bir Vote Control geliştirilmesi)
  2. Her taskın yanına tamamlayacağınız ortalama süreyi belirleyerek, saat olarak not ediniz. (ör. 1 saat, 0.5 saat, 5 saat, 13 saat..gibi)
  3. Listede belli miktar task alınır ve bu iş paketlerine başladığınız tarihi listenin altına not ediniz. Başlama tarihini yazdıktan sonra saati belirtilmiş işleri bitirene kadar diğer tasklar için saat eklemesi yapmayınız. (ör. 5 maddenin yanına saatlerini yazdı iseniz, ve tüm liste 13 madde ise, task  dökümanında sadece işaretli 5 maddeye başladığınız tarih olmalıdır.)
  4. İşaretlediğiniz taskları tamamladığınız zaman bitiş tarihini yine altına not düşünüz.
Böylelikle elinizde hem belirlediğiniz süre, hem de kronolojik bir iş listesi edinmiş olacaksınız.

Taskın tamamlandığını nasıl anlarım?

Genellikle yazılım projelerinde yazılan kodlar çalışır durumda bırakılır. Ancak bu yetersiz olduğu kadar yanlıştır da. Çünkü, kod çalışır ama sadece belirtilen tanımdaki işlevini yerine getiriyorsa başka büyük problemlere yol açacaktır. Bunu engellemek için ise kodu tam olarak test etmemiz gerekir. Nasıl mı ?

Bir taskın tamamlandı olarak işaretlenmesi için aşağıdaki şartların tümüyle gerçekleştirilmiş olması gerekmektedir.

  1. Development (Geliştirme): Yazılan kod taskın tanımladığı işlevi yerine getiriyor mu?
    (ör. Upvote'a tıklayınca UpVote yapıyor. DownVote'a tıklayınca DowVote yapıyor.... gibi)
  2. Fully Qualified Test (Tam Kalite Testi): Yazılan kod tüm ortamlarda çalışıyor mu? ör:
    • Admin geldiğinde UpVote ve DownVote yapabiliyor mu.
    • Kullanıcının kendi yazdıgı yoruma Vote edememesi lazım, çalışıyor mu?
    • Oturum açmamış bir kullanıcı sayfaya geldiğinde Vote Control Disable oluyor mu?
    • UpVote ve DownVote geri alınabiliyor mu  (kullanıcı vote'dan vazgeçebilmeli)?
    • .......
    • ....
    • ...   diye devam edilebilir.
  3. Functionality Conflict Test (Kullanım Çakışma Testi): Yazılan kod tüm yazılım üzerinde bir başka fonksiyonun çalışmasını engelliyor mu?
    ör. Vote control devreye alındıktan sonra, yorum gönderme işlemi çalışmaz hale geldi!!!... gibi bir durum var mı?

[Vote Control örneği]
Yazılım Geliştirme

Bu 3 altın kuralı yerine getiriyorsanız, yazdığınız kod çalışıyor ve taskınız tamamlanmış demektir. Bundan sonra kodunuzla ilgili çıkacak sorunların maliyeti size ve yazılımınıza daha az olacaktır. Genellikle browser uyum sorunları, tasarım geliştirmeleri ve bunlara benzer düzenlemeler dışında fazla bir ek iş ortaya çıkmayacaktır.    

Tabii ki işin tümü bunlarla bitmiyor. İş planlamanızı doğru yapabilmek ve zamanlamayı tutturmak için, task ile ilgili bir noktada takılıp kalmamak, her takıldığınız yerde, önce Google Search, sonra ise sonuca daha tecrübeli yazılımcılardan destek alarak ilerlemek hızınızı arttıracaktır.

Şimdilik bu kadar, daha sonraki deneyimlerde daha farklı süreçlere değinebilmek üzere, tüm yazılım geliştirici arkadaşlara başarılar diliyorum.