Agile Manifesto Agile yaklaşımını yazılım geliştirmeye yönlendiren 4 temel değerden ve 12 destekleyici ilkeden oluşur. Resmen “Çevik Yazılım Geliştirme Manifestosu” olarak adlandırılan belge, Utah’daki Snowbird kayak beldesindeki 11-13 Ocak 2001 tarihlerinde gerçekleşen bir gezi sırasında 17 geliştirici tarafından üretilmiştir.
Agile Manifesto – 4 Değer
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 iş birliğine
Bir plana bağlı kalmaktan ziyade değişime karşılık vermeye
değer vermeye karar verilmiştir.
Bu 4 değerle ilgili bilmemiz gereken en önemli şey, sağ taraftaki kavramlara değer verirken, sol taraftakilere (kırmızı yazılan) daha fazla değer vermektir.
Her Agile metodolojisi dört değeri farklı şekillerde uygular, ancak hepsi yüksek kaliteli, çalışan yazılımların geliştirilmesi ve sunulması için onlara rehberlik eder. Bu bakış açısıyla Agile Manifesto’nun değerlerini kısaca açıklayacak olursak:
Süreçler ve araçlardan ziyade bireyler ve etkileşimlere değer vermek:
Bu ilk değer, takım çalışmasına ve iletişimine önem verir. Takım yazılım sistemleri oluşturmalı ve bunu yaparken araçlarla (tools) çalışmaya boğulmamalıdır ve kullanılmaya zorlanmamalıdır.
Araçlar, yazılım geliştirmenin önemli bir parçasıdır ancak takımın birbiri ile olan etkileşimini etkilememelidir. Yani kullanılacak araçlar, yazılım geliştirme döngüsünün herhangi bir brokrasi/hiyerarjiye takılmasına sebep olabilecek seviyede olmamalıdır. Takım ihtiyacına yönelik ve yazılım geliştirme döngüsüne en uygun aracı seçmeli ve takım üyelerinin birbiri ile olan etkileşimlerinin önüne geçirmemelidir.
Kapsamlı dokümantasyondan ziyade çalışan yazılıma değer vermek:
– Kullanıcı: Bu özellik çok karışık nasıl kullanacağımı anlamadım?
– Geliştirici: El kitabını okuyabilirsiniz.
Belgelerin yeri kesinlikle önemlidir ve yazılımın ne olduğunu ve nasıl çalıştığını merak eden kullanıcılar veya iş arkadaşları için harika bir kaynak veya referans olabilir. Fakat, Agile çalışan bir takımın, ilerlemeye engel olan ve/ya üretilen değerden daha büyük bir yük olacak bir dokümanyasyonu yazmamaları gerekir. Sadece değer ifade eden bir dokümantasyon çalışması yapılmalıdır.
Sözleşme pazarlıklarından ziyade müşteri iş birliğine değer vermek:
Müşterinin ihtiyaçlarının ne olduğunu bilen ve bunu takıma iletebilecek olan kişi yine müşteridir. O yüzden takımın başarılı bir geliştirme yapabilemesi için müşteri ile yakın çalışması, onlarla sürekli iletişim halinde olması gerekir. Müşteri elbette tüm ihtiyaçlarını tek seferde iletemeyecektir. Ama takım müşteriden geri bildirimler alarak, son kullanıcının ihtiyacına en uygun geliştirmeyi ancak bu yolla sağlayabilir.
Sözleşmeler çoğu zaman, ihtiyaca yönelik ürün geliştirmekten uzak ve işlerin ilerlemesini zorlaştıran bir unsur haline gelebiliyor. Oysa ki müşteri ile iş birliği içinde çalışmak her zaman daha kolay ve doğru işi yapma konusunda en iyi yöntemdir. Müşteri, yazılım geliştiren takım için “karşı taraf” olarak değil, takımın bir parçası olarak görülmelidir.
Bir plana bağlı kalmaktan ziyade değişime karşılık vermeğe değer vermek:
Geleneksel yazılım geliştiren şirketler, geliştirmeye önce tüm süreci planlayarak başlarlar. Bu oldukça zahmetli, tahmin etmesi zor ve riskli bir iştir. Çünkü zaman geçtikçe planlanan unsurlarda değişiklikler olabilir. Teknoloji değişebilir, iş ihtiyacı değişebilir hatta müşteri değişebilir. Bu değişime ayak uydurabilmek gerekir. Bu da ancak Agile bir yaklaşım ile gerçekleşir.
Agile Manifesto – 12 Prensip
Agile Manifesto’da ifade edilen 4 değeri destekleyici 12 prensip ise şunlardır:
En önemli önceliğimiz değerli yazılımın erken ve devamlı teslimini sağlayarak müşterileri memnun etmektir.
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.
Ç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.
İş süreçlerinin sahipleri ve yazılımcılar proje boyunca her gün birlikte çalışmalıdırlar.
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.
Bir yazılım takımında bilgi alışverişinin en verimli ve etkin yöntemi yüzyüze iletişimdir.
Çalışan yazılım ilerlemenin birincil öçüsüdür.
Çevik süreçler sürdürülebilir geliştirmeyi teşvik etmektedir. Sponsorlar, yazılımcılar ve kullanıcılar sabit tempoyu sürekli devam ettirebilmelidir.
Teknik mükemmeliyet ve iyi tasarım konusundaki sürekli özen çevikliği artırır.
Sadelik, yapılmasına gerek olmayan işlerin mümkün olduğunca arttırılması sanatı, olmazsa olmazlardandır.
En iyi mimariler, gereksinimler ve tasarımlar kendi kendini örgütleyen takımlardan ortaya çıkar.
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.