Agile Programming – Esnek Programlamanın temel ilkeleri

Esnek programlamayı özetlersek:

  • Kullanışlı yazılımın müşteriye hızlı ve sürekli çıkarılması ile müşteri memnuniyeti
  • Çalışan haldeki yazılım sık aralıklarla çıkarılır (Aylar yerine haftalar)
  • Çalışan haldeki yazılım devam eden işleyişin temel ölçütüdür
  • Yazılıma başladıktan sonra ortaya çıkan ihtiyaçlar da karşılanır
  • Müşteri ile yazılımcı arasında sıkı, günlük iletişim ve kooperasyon
  • Yüzyüze konuşmak iletişimin en iyi yöntemidir
  • Projeler motive olmuş ekip elemanları üzerinden yürür, ekip elemanlarına sorumluluk almaları konusunda güvenilmelidir.
  • Teknik olarak mükkemmeliyetçiliğe ve güzel tasarıma sürekli dikkat edilir
  • Basitlik
  • Kendi kendini organize eden takımlar
  • Değişken çevre koşullarına sürekli adaptasyon

Notlar…

Müşteri

Burada müşteri illa bir firma ya da kişinin hizmet verdiği diğer firma ya da kişi olmak zorunda değil.

Müşteri proje elemanlarının kendisi de olabilir, proje yöneticisi olabilir, patron olabilir ya da web2.0 projeleri için kullanıcılardır. Web2.0 projeleri için kullanıcı geribeslemeleri değerlendirilerek müşteri talepleri ekip tarafından çıkartılır.

Çalışan yazılım? Çıkarmak? Ha ne ?!?

“Çıkarmak” olarak bahsettiğimiz “release” ya da “deliver” olarak geçer. Yazılımın ufak versiyonlarıdır.

Çalışan haldeki yazılımdan kasıt ise kağıt üzerinde ya da önizleme görüntüleri değil gerçekten çalışan yazılımdır.

Yap Boz

Esnek yazılımın en büyük özelliği sonradan gelen taleplerin de karşılanmasıdır. “Bu değişikliği yapmak için veritabanında değişiklik yapmamız gerekir ki bu da çok uzun süren bir işlem olduğu için bu özelliği eklemeyelim” bir mazeret değil. Altyapı bu tür değişikliklerin pratik bir şekilde yapılabilmesini sağlayabilecek türden olmalıdır.

Teknik yeterlilik ve estetik

Teknik olarak mükemmeliyet ve güzel tasarım ne yazık ki Türkiye’nin kanayan yarası. En baba programcıları tasarımcıları görüyorum ve üzülüyorum. Öğrenmekten çok atıp tutmaktan anlayan bir millet olduğumuz için üzülüyorum…

Basitlik

Basitlik: Arabirim veritabanına erişmek için bir araç değildir. Onun yerine kullanıcı neyi görmek istiyorsa o verilmelidir. Son kullanıcı olarak beni ilgilendiren son 1 haftanın fotoğraflarıysa gidip iki tane tarih kutusundan bugünü ve geçen haftayı seçmemeliyim, o veritabanı yaklaşımı: x tarihi ile y tarihi arasındaki fotoğrafları göster. Benim ilgilendiği “yeni neler gelmiş (yeni = son 1 hafta)”

Basitlik var olan arabirimden eleman eksilterek kullanıcının hala aynı işleve sahip olmasını sağlama sanatıdır…
Basitlik kullanıcıların ekrandakileri “okuyarak” değil “tarayarak” işleyişi anlamalarını sağlama sanatıdır…
Basitlik eğitime ihtiyaç duyulmadan yazılımın kullanılabilmesini sağlama sanatıdır…

Her eleman bir proje yöneticisidir aslında

Proje yöneticisi yapılacak işleri insanlara atayan değil insanların kendi işlerini organize etmelerini ve birbiriyle organize olmalarını sağlayan kişi olmalıdır. Ekipteki her eleman projeyle ilgili sorumluluğunu alabilir ve kendi kendinin bekçiliğini yapabilir. Bu konuda ekiptekilere güvenmek gerekir, tabii ekiptekilerin de bu yapıya uyum sağlamaları…

Kendi kendini organize olan ekipler bu güven ortamının oluştuğu ekiplerdir. Ekip kendi kendini organize ederken proje lideri koordinasyonu sağlamalı.

Değişken, koşul, adaptasyon ?!?

Yazılım yapılır, “usability testing”e sokulur, imkan varsa istatistikler incelenir (mesela Google analytics), MySQL’in yeni versiyonu çıkar, müşteriden ek özellik istenir ya da var olan özellik farklılaştırılır. Çok kullanıcı gelir altyapının birden fazla sunucuya gereksinimi olur. İşte değişken koşullar bunlar ve diğerleri…

Bunlar sürekli olacak, yazılımı yaptım bitti yok artık. Sorunlar sürekli olacak ve çıkacak, genelde de adet olarak çok olmasına rağmen aynı sorunlar ortaya çıkar. Esnek olmak demek bunlara adapte olmak demek, hem de sürekli adapte olmak…

İlgili Yazılar