Agile aşağı Agile yukarı... Herkes bir agile'dır gidiyor ama malesef çoğu kişi için agile bir kaç cümle veya kelimeden ibaret.
Bir çok Yönetici & Patron için çabucak at koşturur gibi işi yapıp bitirme,
Bir çok çalışan için ise agile jira'da bulunan bug'ları çözmekten ve scrum yapmaktan ibaret..
Malesef Türkiye'de biraz gerilerde ancak güzel haberlerde gelmiyor değil, öyle ki bazı kurumsal bankalar dahi yazılım departmanı olmadığı halde kendi iç birimlerinde agile'ı test etmeye başladığı söyleniyor ve Türkiye'de bulunan çok büyük bir bankanın da bütün birimleriyle agile'a %100 geçtiğiyle ilgili geçenlerde bir haber okumuştum. Tabi bunlar agile doğru anlaşıldığı zaman güzel haberler oluyor.
Sektörde bulunan yazılım firmalarında ki bir çok development takımı kendi içlerinde agile yaptıklarını söylüyorlar ancak işin aslını konuşmaya çalıştığınızda anlıyorsunuz ki sadece agile'a ait bir kaç işi yaptıkları ortaya çıkıyor.
Scrum için ise aslında yapılan şey iş yoğunluğa göre bazı sabahlar proje müdürünün ekibi toplayıp sadece kendisinin konuşması...
Peki Agile olmak neleri gerektirir ?
Daha önce okuduğum ve bir çok kişininde referans alarak uygulamaya çalıştığı "What Do We Know About Scientific Software Development’s Agile Practices ?" makalesinde belirtilen 35 Agile Best Practice'i baz alarak takım olarak ne yapıp ne yapmıyorsunuz, ne kadar agile'sınız yorumlayabilirsiniz.
- Önceliklendirmeler projede en yetkili kişi olan product owner tarafından (ekibin fikrini alarak) yapılmalı,
- Development sürecindeki sorunlar scrum master tarafından scrum'larda çözüm aranmalı,
- Spring backlog oluşturmak için Spring planlama toplantıları yapılmalı,
- Efor verirken Planning Poker oyunu gibi eğlenceli bir seçiminiz olmalı,
- Kısa ve Orta vadede koşan sprint'leriniz olmalı,
- Product owner ve ekip arasında sürekli bir communication olmalı,
- Mevcut konuları konuşmak için kısa daily meeting'ler düzenlenmeli,
- Self-organization yani kendiliğinden organize olabilen bir ekip uluşturulabilmeli,
- Grafikler ile sprint süreci gözlemlenmeli,
- Sprint sonlarında review toplantıları düzenlenmeli,
- Retrospective yaparak geçmiş sprintle ilgili değerlendirmelerde bulunulmalı,
- Short & Fast product release'ler çıkılmalı,
- User storie'ler yazılmalı,
- Takıma dedike bir şekilde çalışabileceği açık çalışma alanları yaratılmalı,
- Sürdürülebilir bir çalışma ortamı sunulmalı,
- Proje ivmesi ölçülebilmeli,
- Ekipte bulunanlar her konuda fikrini söyleyebilmeli,
- Müşteriye ihtiyaç duyulduğunda hemen ulaşılabiliyor olmalı,
- Ekip olarak kod standartları belirlenmeli,
- İlk önce unit-test'ler yazılmalı,
- Prod'a alınan kod'un bir pair-programming ürünü olduğu unutulmamalı,
- Geliştirmeler branch'lere ayrılarak yapılmalı ve test sonuçlarına göre merge işlemi yapılmalı,
- Sürekli olarak yeni şeyler entegre edilebilecek altyapıya sahip bir altyapı,
- Repository yönetimini iyi yapıp release günü geldiğinde sorunsuz bir şekilde release çıkılabilmeli,
- Collective bir biçimde developer'lar atayın bir sorumluluğu tek bir kişiye yüklemekten kaçının,
- Basit bir tasarıma desenine sahip olmalı,
- Bir sistem metforu seçilmeli,
- Design&Development için Class-responsibility-collaboration kartlarını kullanmaya çalışın,
- Riski azaltmak için çözümler üretilmeli,
- İhtiyaç duyulmayan hiç bir fonksiyonalite önceden entegre edilmemeli,
- Ne zaman-Nerde olduğuna bakılmaksızın refactor edilebilmeli,
- Bütün kod'un unit-test'i yazılmış olmalı,
- Proje prod'a alınmadan önce bütün unit-test'lerden geçmeli,
- Yeni bir bug bulunduğunda testler anında oluşturulmalı,
- Acceptence-test'ler sıklıkla uygulanmalı ve skor yayınlanmalı.
Agile hakkında söylenecek oldukca fazla şey bulunuyor ancak kısa bir özetle yukarıda ki rule'ları sıralamış olduk. İyi bir agile-team oluştururken bu kurallardan faydalanmak çöğunlukla iyi olacaktır ama belirttiğim gibi liste genişletilebilir de.