Değişime Karşılık Verebilme Esnekliği ve Değer Üretebilme Kapasitesi.
Agile Nedir?
Agile, belirsiz bir ortamda dahi başarılı olabilmek için değişime karşılık verebilme ve geliştirme yapabilme esnekliği, kapasitesi ve yeteneğidir.
Agile, proje yönetimi ve yazılım geliştirmenin etkinliğini, duyarlılığını ve adaptasyonunu artırmak için tasarlanmış bir dizi metodoloji ve uygulamayı kapsayan geniş bir terimdir.
Geleneksel, lineer (şelale) geliştirme uygulamalarının sınırlarını ele almak için yazılım geliştirmeden ortaya çıkan Agile, o zamandan beri pazarlama, proje yönetimi, ürün geliştirme ve daha fazlası dahil olmak üzere çeşitli endüstrilere ve fonksiyonlara yayılmıştır. Agile,
- Değişime hızlı karşılık verebilmeyi
- Kendi kendisine organize olabilen ve çapraz fonksiyonlu takımlar oluşturabilmeyi
- Projelerin bir bütün olarak bitmesini beklemek yerine projeleri değer üreten ve test edilebilir parçalar halinde pazara çıkmayı
- Teslim edilen her proje parçasından kaliteden ödün vermemeyi
- Müşteri için değer üretmeye odaklanmayı
- Çalışanların mutluluğunu arttırmayı
- Sürekli gelişen ve tüm bunları bir yaklaşım ve hareket biçimi olarak benimsemiş bir kültür oluşturmayı
- İletişimin arttırılmasını ve şeffaflığı temel alan bir yaklaşım biçimidir. Çeviklik ancak pratikle kazanılabilen bir beceri, yaklaşım ve kültür olarak ifade edilebilir.
Çevik Bildiri
Agile Değerler
“Agile nedir?” sorusunu cevaplayabilmemiz için Agile değerler ve prensipleri detaylı olarak incelememiz gerekir.
Yazılım geliştirme gurusu 17 kişi, 2001 yılında Amerika’da 2 gün süren bir toplantı yaptılar. Toplantıya katılan 17 yazılım geliştirme ustası, bu toplantıyla ortaya çıkan Çevik Manifesto‘dan önce geleneksel yöntemlerde yaşadıkları sorunlara kendi çözümlerini birbirlerinden bağımsız olarak bulmaya çalışıyorlardı. 2 gün süren toplantının sonucunda Çevik Manifesto’yu yayınladılar. Çevik Bildiri, 4 değerden ve 12 ilkeden oluşmaktadır.
Agile Manifesto’nun Türkçe uyarlaması şu şekildedir:
“Bizler uygulayarak ve başkalarının da uygulamalarına yardım ederek daha iyi yazılım geliştirme yollarını ortaya çıkartıyoruz
Bu çalışmaların sonucunda:
Süreçler ve araçlardan ziyade bireyler ve etkileşimlere
Kapsamlı dökü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.
Agile Bir Kurum Kültürünün Temelleri
Agile Prensipler
On iki prensip, Agile metodolojilerin benimsediği yaklaşımı yönlendirirken aynı zamanda bir kültürü de şekillendirir. Bu prensipler, değişime açıklık, müşteri memnuniyetinin merkeze alınması ve işbirliği gibi değerleri vurgulayarak bir organizasyonda yaygınlaşan Agile kültürünü tanımlar. Bu kültür, değişimin bir avantaj olarak kabul edildiği, müşteri gereksinimlerinin önceliklendirildiği ve çalışanların katılımının teşvik edildiği bir ortamı yaratır. Agile prensipler, iş süreçlerinin sürekli olarak gözden geçirilmesi, iyileştirilmesi ve esnekliği vurgulayarak organizasyonların hızla değişen pazar koşullarına uyum sağlamasını destekler. Bu şekilde, Agile prensipler sadece bir yönetim tarzı olarak işlev görmekle kalmaz, aynı zamanda bir iş kültürünün temelini oluşturarak organizasyonların dönüşümünü teşvik eder.
1. En önemli önceliğimiz değerli yazılımın erken ve devamlı teslimini sağlayarak müşterileri memnun etmektir.
7. Çalışan yazılım ilerlemenin birincil ölçüsüdür.
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.
8. Ç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.
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.
9. Teknik mükemmeliyet ve iyi tasarım konusundaki sürekli özen çevikliği artırır.
4. İş süreçlerinin sahipleri ve yazılımcılar proje boyunca her gün birlikte çalışmalıdırlar.
10. Sadelik, yapılmasına gerek olmayan işlerin mümkün olduğunca arttırılması sanatı, olmazsa olmazlardandır.
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.
11. En iyi mimariler, gereksinimler ve tasarımlar kendi kendini örgütleyen takımlardan ortaya çıkar.
6. Bir yazılım takımında bilgi alışverişinin en verimli ve etkin yöntemi yüzyüze iletişimdir.
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.
Neden Agile?
Agile nedir? sorusunun cevabını daha iyi anlayabilmemiz için sağladığı avantajlara ve geleneksel lineer yaklaşımlara göre üstünlüklerine bakmamız gerekir. Geleneksel proje yönetimi ve ürün geliştirme yöntemlerine göre birçok avantaj sunar:
- Esneklik ve Uyarlanabilirlik: Takımlar, geliştirme sürecinin son aşamalarında bile müşteri gereksinimlerine yanıt verebilir.
- Müşteri Memnuniyeti: Müşteriyi dahil ederek, ürünün işlevsel ve değer üreten parçalarını düzenli olarak teslim etmeye odaklanarak, müşterinin gerçek gereksinimlerini karşılama olasılığı artar.
- Kalitenin İyileştirilmesi: İteratif üretim, sorunların hızlı bir şekilde tespit edilip çözülmesini sağlar, bu da nihai ürünün genel kalitesini artırır.
- Risklerin Azaltılması: Düzenli iterasyonlar ve projenin yönünün sık sık değerlendirilmesi, geliştirme ile ilişkili riskleri azaltır.
- Kaynakların Etkin Kullanımı: Yüksek değerli özelliklere odaklanarak ve atığı azaltarak, takımlar mevcut kaynakları daha verimli bir şekilde kullanır.
Kompleks Sistemlerde Kalıcı Çözümlerin Temeli
Uygulama Düşünceleri
Agile önemli faydalar sunsa da, başarılı bir uygulama için iyi bir strateji dikkatli bir şekilde düşünülmelidir:
- Kurumsal Kültür: Agile, işbirliğini, esnekliği ve müşteri odaklılığı değerlendiren bir kültür değişikliği gerektirir.
- Takım Dinamikleri: Takımların kendi kendine örgütlenmesi, yüksek derecede işbirliği ve iletişim gerektirir.
- Yönetim Desteği: Agile dönüşümleri genellikle tüm yönetim düzeylerinden aktif destek gerektirir.
- Eğitim ve Uyum: Takımlar eğitim alabilir ve süreçler benimsendiğinde adapte edilebilir.
Agile metodolojiler, özellikle dinamik ve belirsiz ortamlarda modern proje görevlerinin karmaşıklıklarına adapte olmak için sağlam bir çerçeve sunar. Pratiklik formaliteden, yanıt vermeyi planlara katı bağlılığa tercih eder, bu da gereksinimlerin ve çözümlerin kendiliğinden örgütlenmiş ve çapraz fonksiyonlu takımların işbirliğiyle evrilmesi durumunda özellikle uygundur.
Yaygın Agile Çerçeve ya da Metodolojiler
Agile ilkelerini hayata geçirebilmek için ana Agile Metodolojiler / Framework’lerden bazıları:
Scrum: Belki de en yaygın uygulanan Agile çerçeve olan Scrum, takımların bir öncelikli liste olan ürün backlog’undan belirli bir özellik kümesini tamamlamaya taahhüt ettiği sabit uzunluktaki iterasyonlar olan sprint’leri (genellikle iki hafta ile bir ay arasında) ile karakterizedir. Scrum rolleri Ürün Sahibi, Scrum Master ve Geliştirme Takımını içerir.
Kanban: Toyota üretim sisteminden köken alan Kanban, görsel yönetime odaklanır. Görevler, bir Kanban tahtasında görselleştirilir, böylece takımlar herhangi bir zamanda her iş parçasının durumunu görebilir. İşin ilerlemesini iyileştirmeye ve döngü süresini azaltmaya yardımcı olmak için işlem sırasını sınırlamayı vurgular.
Extreme Programlama (XP): Bu metodoloji, yazılım kalitesini ve değişen müşteri gereksinimlerine duyarlılığı artırmayı amaçlar. Sürekli entegrasyon, otomatik testler, çift programlama ve basit bir tasarımın korunması gibi teknik uygulamalara vurgu yapar.
Lean Yazılım Geliştirme: Lean üretim uygulamaları ve prensiplerinden esinlenen bu metodoloji, atığı en aza indirgeyerek değeri en üst düzeye çıkarmayı hedefler. Verimliliği optimize etmeyi, gereksiz faaliyetleri (israfı) ortadan kaldırmayı ve müşteri ihtiyaçlarını karşılamak için hızlı bir şekilde teslim etmeyi vurgular.
Feature Driven development (FDD): Bu model, tüm seviyelerde durum raporlamayı, sürekli nesne yönelimli gelişimi ve özellik odaklı çalışma paketlerini teşvik eder.