Agile proje yönetimi değişime açık, müşteri ile iletişime önem veren, sürekli test ile çalışan yazılım ortaya çıkarmayı hedefleyen bir proje yönetim şeklidir. Agile ekiplerde en önemli hedef, yazılımın erken ve sürekli gelişen şekilde çalışır olarak müşteriye sunularak memnuniyet sağlanmasıdır. Ekibe proje geliştirme, yeni fikirler sunma, problem çözme fırsatı ve becerisi verir. Müşteri isteklerinde sadece öngörülen talepleri değil, gerçek sorunlar ve çözümler üzerinde düşünülerek yapılmış uygulamalar müşteriye sunulur.
Agile ekiplerin 5-9 kişiden oluşması genel olarak istenilen durumdur. Ekibin önemli amaçlarından biri geliştirmeleri kısa süreli parçalara bölerek her sprint’in sonunda çalışır bir uygulama elde etmektir. Sprint süresi 2-3 hafta olarak değişebilir. Sprint boyunca her sabah 15 dk lık günlük toplantı ile ekipteki kişiler önceki gün neler yaptığını, bugün neler yapacağını, işini engelleyen herhangi bir sorunun olup olmadığını diğer ekip arkadaşları ile paylaşır. Bu durumda herhangi bir sorun var ise scrum master bu sorunu ortadan kaldırır veya takım içerisinde yardımcı olacak kişiyle toplantı sonrası iletişime geçer.
Sprintlerde yapılacak olan geliştirmeler küçük görev adımlarına (tasklara) ayrılarak düzenlenir. Geliştirmeleri tasklara ayırma işlemini analist yapar ancak, sprint planlama toplantısında, tüm ekip üyeleri taskların ayrılması hakkında fikir vererek değişiklik yapılabilir. Ekiple birlikte taskların içeriği, nasıl yapılacağı, müşterinin istekleri ve beklentisi doğrultusunda daha iyi nasıl geliştirileceği konuşulur ve bir sonuca varılır.
Sprint boyunca tamamlanmış olan tasklar test edilir. Amaç müşteriye sunulacak olan geliştirmede hataların kullanıcı tarafından bulunmadan sprint sürecindeki testler sırasında bulunmasıdır. Bulunan hataların geliştiricilerin tarafından düzenlenmesi ve en kötü ihtimalle eğer kalan kısa sürede düzeltilemeyen hatalarla karşılaşılırsa bunların bilinmesidir. Test mühendisi bu süreçte müşteriye çıkmadan önce ürünün “bu ürün hazır ancak şu durumlarda böyle bir sorunla karşılabiliriz” açıklamasını ekip ile paylaşması gerekir.
Sprintlerin belli ve önceden anlaşılmış net bir bitiş gününün olması, ekibin performasının artması açısından pozitif bir etki oluşturuyor. Bazı durumlarda sprintin bitimine az kalması ve yapılacak olan taskların yetişmemesi geliştirici ve test mühendisi üzerinde bir strese neden olabiliyor. Geliştirmeyi son gün bitiren geliştirici test mühendisine işi teslim ettiğinde test için ayrılan zaman düşüyor. Test sonucu bulunan hataların geliştirici ile görüşülerek tekrar çözülmesi ve tekrar test edilmesi gerekiyor. Gittikçe daralan bir zaman dilimi de testin kalitesinin düşmesine neden oluyor. Bu konuda benim çözümüm, sprintin son gününü task kapatmak yerine, varolan hataların çözümüne ve onların testine ayırmaktır.
Her sprint sonu, test mühendislerinin yapılan ve testi biten geliştirmeleri son kez tekrar gözden geçirmesi gerektiğini düşünüyorum. Bunun için vakit ayırmak, son gün kapatılan task olduğunda gerçekten çok zor. İstisna olan durumları göz ardı edersek, son kontrolle yapılan geliştirmelerde herhangi bir sebeple bozulmalar olmadığını son kez kontrol ederek, yapılan geliştirmenin gereksinimlere uygun olduğundan emin olmalıdır.
Agile proje yönetiminde ekip birlikte çalışır ve projede kendi üstüne düşeni herkes almasını bilir. Sürekli ekip üyelerinden ve müşterilerden geri dönüş alarak gelecekteki iterasyonları iyileştirirler. Ekip, kendi içinde “Neleri, nasıl daha da iyi yapabiliriz?” sorularına çözüm üreterek bir sonuca ulaşır.
Agile proje yönetimi uygulanmayan firmalarda müşterilerle bir kişi irtibata geçerek müşterinin isteğini öğrenir ve bu konuda bir task açarak geliştiriciye sunar. Bu geliştirme hakkında ekipte çalışanların hiçbir fikri veya düşüncesi göz önüne alınmadan sadece verilen iş yapılarak müşteriye sunulur. Agile proje yönetimde “Müşteri ne istiyor?” dan çok müşterinin asıl problemine inerek ona çözüm sunulması, yapılan geliştirmeyi daha sağlıklı hale getiriyor. Sorunun çözülmesinde ekipteki herkesin fikrinin alınarak ilerlenmesi ürünün kalitesini arttırıyor. Bu şekilde müşteri memnuniyeti arttırılıyor.
Agile bir ekipte test mühendisi hata bulmaktan çok hataları önlemeye daha çok odaklanmalıdır. Agile proje yönetimde erken test uygulanıyor, test yazılımın sonunda değil erken safhalarında devreye giriyor. Kullanıcı hikayesi oluşturulmasında, “refinement” toplantılarında test mühendisi olarak verilen geri bildirimler, hataları önlemeye yönelik çalışmalardır. Agile ekipteki test mühendisi, değişikliklere hızlı adapte olabilen, müşteri bakış açısına sahip, kalitenin yükselmesine katkı sağlayan, sistemin analizini yapıp çabuk öğrenebilen, iletişim yeteneği yüksek kişiler olmalıdır. Test sürecinin, uygulama geliştirme sürecinden ayrı olarak değerlendirilmesi düşünülemez. Taskların hazırlanmasından sonra en önemli iki süreç olan geliştirme ve test süreci bir bütün olarak görülüp, bu şekilde ilerlenmelidir. Tes mühendisleri de kendilerini teknik olarak geliştirip, geliştiriciler ile aynı dili konuşabilmelidir. Bu süreçte ürünün kalitesinden ve hatasız olmasından sadece test yapan sorumlu değildir, tüm ekip sorumludur(!).
Test mühendisleri testlerini yaparken müşteri odaklı testler, sistemi hataya zorlayıcı, şüpheci, alternatif test senaryoları ile geçmiş deneyimlerini kullanarak test etmelidir. Hatayı en erken safhada ortaya çıkarmalı ve öngörmelidir.
Agile bir ekibin başarılı olması için takım ruhu olmalıdır. Bir ekip olarak çalışılmalı, gelişime ve yeniliklere her zaman açık olmalı, kolay adapte olmalı, geri bildirimler almalı ve vermeliyiz. Takım içerisinde iletişimimiz her zaman çok iyi olmalıdır.