Agile ürün geliştirme süreçlerinin anayasası diyebileceğimiz 2001 yılında yayımlanan ve daha önceki yazılarımızda detaylıca değindiğimiz “Agile Manifesto” ile birlikte hayatımıza yeni kavramlar girdi.
Böylece Agile metodolojilere inanan, bu metodolojileri uygulayan ve destekleyen organizasyonlar olarak;
- 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
karar verdik. Bu temel kavramları destekleyen on iki bileşeni de kendimize rehber edindik.
SCRUM ROLLERİ
Yukarıdaki temel kavramlar ve bileşenlerin oluşturulmasında Scrum, Kanban, XP, DSDM gibi Agile metodolojiler referans alınmıştır. Yapısal bir süreç, rol ve etkinliklere sahip olması dolayısıyla bu metodolojilerden ülkemizde ve dünyada en çok kabul gören Scrum’da bazı tanımlı roller bulunmaktadır. Bunlar;
- Scrum Master: Scrum’ı bireylere ve organizasyona öğreten kişi
- Product Owner: Değer odaklı yaklaşım ile müşteriyi temsil eden kişi
- Development Team: Hedeflenen ürünü ortaya koyacak tüm yetkinliklere sahip kişilerden oluşan, Cross-Functional, Self-Organizing takım
Development Team’in ürünü ortaya koymak için gerekli tüm yetkinliklere sahip olması, ürünle ilgili tüm uzmanların takım içerisinde yer alması gerektiğini ifade etmektedir. Üzülerek söylemem gerekiyor ki bu konuda kurumları yönlendiren destek olan bazı alan uzmanı danışmanların bile buradaki mantığı doğru algılamadığını ve dolayısıyla kurumlara doğru aktarmadığının farkına vardık(“Development Team’de sadece yazılımcılar olmalı” gibi!).
Biraz daha açmak gerekirse, eğer bir yazılım projesinden bahsediyorsak Development Team içerisinde Analiz, Dizayn, Yazılım, Test gibi uzmanlıklara sahip kişiler olmalı. Fakat tüm takım üyelerinin tek bir unvanı olmalı oda da “Developer” yani “Geliştirici”.
“İyi de kafamız iyice karıştı şimdi” diye sesler duyuyorum 🙂
CROSS – FUNCTIONAL TEAM
Takım üyelerine tek bir unvanın verilmesinin amacı, her üyenin birbirinin yaptığı işin farkında olması, birbirine destek olması, kimsenin bir diğer takım üyesinden hiyerarşik ve teknik farkının olmaması için önemsenmektedir. Asıl hedeflenen ise bir yazılımcı ve test uzmanının analiz sürecinde analist gibi düşünüp katkı sağlaması, bir analistin ve yazılımcının bir testçi gibi düşünmesi ve test sürecine katılmasıdır. Scrum bunu da güzel bir ifade ile bizlere sunmaktadır “Cross-Functional Team”.
Şimdi yazımızın başlığı ile hedeflediğimiz noktaya geliyoruz. Eğer takım Cross-Functional olacaksa, yani bir önceki paragrafta ifade ettiğimiz gibi takım üyeleri her fonksiyona destek olmalıysa o zaman atmamız gereken iki önemli adım;
- Yazılım ve Test uzmanlarını da Analiz süreçlerine/tekniklerine hakim kılmak
- Yazılım ve Analiz uzmanlarını da Test süreçlerine/tekniklerine hakim kılmak
SCRUM VE ANALİZ
Scrum metodolojisi ve “Analiz” yetkinliği arasındaki bağlantının özellikle üzerinde durmak istiyorum. Scrum metodolojisinde hedeflenen, müşterinin ihtiyacını karşılayacak “değer yaratan” fonksiyon ve ürünleri ortaya çıkarmaktır. Peki ama neyin değerli olduğunu nasıl tespit edeceğiz? Scrum değer konusundaki ana sorumluluğu Product Owner’a verse de geliştirme takımının doğru ürünü geliştirmek için iş birimi temsilcisi olan Product Owner’a doğru soruları sorması ve soyut bir konu olan müşteri ihtiyacını somut bir ürüne dönüştürmek için yeterli analiz bilgisine sahip olması gerekir.
Analiz yetkinliği güçlü olan bir takım, ürünün nasıl bir süreç üzerinde kurgulanması gerektiğini, ürün fonksiyonlarının hangi modüler yapıda, hangi Sprint’ler içerisine yerleştirilerek ne zaman Release edilmesi gerektiği kararını doğru bir şekilde verebilecektir.
Verimliliği ve ekip içi iş birliğini artırması ile bilinen Agile metodolojilerde, elimizdeki tüm sınırlı kaynakların ve insan gücümüzün doğru işlere harcanması, Agile metotların temelini oluşturan Lean yaklaşımının ortaya koyduğu gibi israfın önlenmesi için, sonsuz ihtiyaçların doğru analiz edilmesi, gerçekten değer yaratan özelliklerin geliştirilmesi gerekmektedir.