Agile Neydi? Agile Emekti.

Agile. Sözlükteki Türkçe karşılığı “Çevik”.

Yazılım geliştirme ortamlarındaki karşılığı ise; -müşteriyi memnun etmek için- uzun vadeli katı planlama ve geliştirme süreçleri yerine, değişen koşullara hızla adapte olup (hem değişen koşulların getirdiği riskleri bertaraf etme anlamında hem de değişen koşulların doğurduğu fırsatları yakalayabilme anlamında) çok kısa aralıklarla yeni sürümler çıkarmayı öne çıkaran bir yazılım geliştirme disiplini.

Değişen planların doğuracağı sıkıntıyı minimize etmek için bireyler arası iletişime önem verir ve takımları küçük tutup onların kendi kendilerini organize etmelerini bekler.

Çevik Yazılım Geliştirme Manifestosu (Manifesto of Agile Software Development – http://agilemanifesto.org/iso/tr/)

Bizler daha iyi yazılım geliştirme yollarını

uygulayarak ve başkalarının da uygulamasına yardım ederek ortaya çıkartıyoruz.

Bu çalışmaların sonucunda:

Süreçler ve araçlardan ziyade bireyler ve etkileşimlere

Kapsamlı dokümantasyondan ziyade çalışan yazılıma

Sözleşme pazarlıklarından ziyade müşteri ile iş birliğine

Bir plana bağlı kalmaktan ziyade değişime karşılık vermeye

değer vermeye kanaat getirdik.

Özetle, sol taraftaki maddelerin değerini kabul etmekle birlikte,

sağ taraftaki maddeleri daha değerli bulmaktayız.

Çevik Bildirinin Temelindeki İlkeler (Principles behind the Agile Manifesto – http://agilemanifesto.org/iso/tr/principles.html)

Bizler şu ilkeleri izliyoruz:

  1. En önemli önceliğimiz değerli yazılımın erken ve devamlı teslimini sağlayarak müşterileri memnun etmektir.
  2. Değişen gereksinimler yazılım sürecinin son aşamalarında bile kabul edilmelidir. Çevik süreçler değişimi müşterinin rekabet avantajı için kullanır.
  3. Çalışan yazılım, tercihen kısa zaman aralıkları belirlenerek birkaç haftada ya da birkaç ayda bir düzenli olarak müşteriye sunulmalıdır.
  4. İş süreçlerinin sahipleri ve yazılımcılar proje boyunca her gün birlikte çalışmalıdırlar.
  5. Projelerin temelinde motive olmuş bireyler yer almalıdır. Onlara ihtiyaçları olan ortam ve destek sağlanmalı, işi başaracakları konusunda güven duyulmalıdır.
  6. Bir yazılım takımında bilgi alışverişinin en verimli ve etkin yöntemi yüz yüze iletişimdir.
  7. Çalışan yazılım ilerlemenin birincil ölçüsüdür. Çevik süreçler sürdürülebilir geliştirmeyi teşvik etmektedir.
  8. Sponsorlar, yazılımcılar ve kullanıcılar sabit tempoyu sürekli devam ettirebilmelidir.
  9. Teknik mükemmeliyet ve iyi tasarım konusundaki sürekli özen çevikliği artırır.
  10. Sadelik, yapılmasına gerek olmayan işlerin mümkün olduğunca arttırılması sanatı, olmazsa olmazlardandır.
  11. En iyi mimariler, gereksinimler ve tasarımlar kendi kendini örgütleyen takımlardan ortaya çıkar.
  12. Takım, düzenli aralıklarla nasıl daha etkili ve verimli olabileceğinin üzerinde düşünür ve davranışlarını buna göre ayarlar ve düzenler.

XP (eXtreme Programming) ve Scrum gibi proje yönetim çerçeveleri (framework) bu çevik prensipleri temel almaktadır.

dt071126

http://dilbert.com/strip/2007-11-26

XP ve Scrum gibi çerçeveler uyguladıkları çevik pratikler (Agile Practices – http://guide.agilealliance.org/) yoluyla çevik prensipleri somutlaştırırlar.

Prensiplerinden bazıları gözden kaçırılarak uygulanmaya çalışılmamalıdır.

Evet;

“En önemli önceliğimiz değerli yazılımın erken ve devamlı teslimini sağlayarak müşterileri memnun etmektir.”

Ancak;

“Projelerin temelinde motive olmuş bireyler yer almalıdır.”

prensibi gözden kaçırılmamalıdır. Bu prensip gözden kaçırıldığında çevik yazılım geliştirme “acele yazılım geliştirme” olarak uygulanmaya başlar. Acele demek mesai demektir. Motivasyonu kaybolmuş bireylerden oluşan bir takımdan çeviklik beklenemez.

Çünkü;

“Teknik mükemmeliyet ve iyi tasarım konusundaki sürekli özen çevikliği artırır.”

Fakat acele yapılan işten mükemmeliyet ve kalite beklemek mümkün değildir. Ayrıca birinci ve “en önemli” prensipte “…yazılımın erken ve devamlı teslimi…”’den söz edilmektedir. Yani çeviklikte devamlılık beklenmektedir. Ancak kaliteden yoksun, acele işin devamında gelen işlerde çeviklik beklenmesi yanlış olur.

Prensiplerinden bazıları gözden kaçırılarak uygulanmaya çalışılması teoride çeviklik ve uygulamada çeviklik gibi bir ikilik oluşturmakta ve kötü uygulamalar “Agile” kavramının bir bütün olarak eleştirilerin hedefi olmasına neden olmaktadır. Örneğin şu ekşisözlük entrysine bir bakalım: https://eksisozluk.com/entry/27083680

Sevgili sözlük yazarımız “agile yazılım geliştirme” konusuna “fordizmin software geliştirme üzerindeki izdüşümü…” diye bir giriş yapmış. “Fordizm”, yani -yine bir eşkisözlük entrysinden alıntı yapacak olursak- “henry ford’un icat ettiği, yürüyen şerit üzerinde imalat yapma usulü. parça taşıyan şerit geçerken her işçinin kendisine ait iş kısmını bu şerit üzerinde hemen yapması prensibine dayanmaktadır.” (https://eksisozluk.com/entry/996395)

Görüldüğü gibi yanlış uygulamalar “Agile”ın bir fabrikasyon kod üretme metoduymuş gibi algılanmasına sebep olabiliyor. Yaratıcılıktan ve özenden yoksun bir şekilde tek amacı müşterinin isteğini karşılamak olan bir çalışma şekli yazılımcının motivasyonunu düşüreceği açıktır. Çünkü yazılımcı, diğer zanaatkarlar gibi “iyi” bir şeyler ürettiği, başardığı duygusunu hissetmek ister. Ayrıca Çevik Manifesto’nun temelindeki ilkelerde söz edildiği üzere “Teknik mükemmeliyet … çevikliği arttırır.”

Yalnız dikkat! Yukarıda sözü edilen teknik mükemmeliyet müşteri gereksinimi çerçevesinin dışına çıkmamalı. Yazılımcı fanteziye kaçma eğiliminde olabilir. “Ya şöyle bir şey de olsa, kullanılır.” gibi cümleler duyulduğunda sirenler çalacak bir alarm sistemi geliştirme ortamlarında önceden hazır edilmelidir. Mükemmeliyet üründe değil gerçekleştirimde aranmalıdır. Ürünün mükemmeliyeti müşterinin sorumluluğundadır.

Yazılımcı kardeşlerim! Özetle; bana sorulursa, “Agile” candır derim. Ama unutmayalım! Onu -bilerek yada farkında olmadan- kölelik düzenine çevirmek eğiliminde olanlara karşı uyanık olmak da yine bizim görevimiz.

Saygı, sevgi

Reklamlar

Bir Yorum Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s