Popüler Agile Metodolojileri: Scrum, Kanban ve XP | Bölüm 1

Kübra Demir
Huawei Developers - Türkiye
5 min readJun 14, 2023

Yazılım projelerinin yönetimini planlayabileceğimiz birden fazla seçeneğimiz olduğunu bilmekteyiz. Bu yazı ile beraber Agile metodolojileri içerisinde en çok kullanılan yaklaşımların avantajlarını ve dezavantajlarını inceleyerek projelerimizde uygulayacağımız yaklaşımı seçebiliriz.😊

GİRİŞ

Yazılım geliştirme projeleri genellikle süreç odaklıdır ve uzun soluklu planlamalara dayanır. Yazılım geliştirme metodolojisi, yazılım projelerinin yönetimi ve uygulaması için belirli bir yaklaşım, süreç veya çerçeve olarak tanımlanabilir. Bu metodolojiler, yazılımın planlanması, tasarımı, geliştirilmesi, test edilmesi gibi adımları kapsar. Yazılım geliştirme metodolojileri, ekip üyeleri arasındaki işbirliğini, sürekli iletişimi ve projenin hedeflere ulaşmasını sağlamayı amaçlar.

Agile metodolojisi

Agile(Çevik), yazılım geliştirme sürecinde işbirliğini, adaptasyonu ve hızlı teslimatı önceliklendiren bir yaklaşımdır. Agile, projeyi daha küçük, yönetilebilir parçalara böler. Bu yaklaşım, müşteri geri bildirimlerini hızlı bir şekilde almayı ve gerektiğinde planları revize etmeyi mümkün kılar.

Agile yaklaşımının temel prensipleri şunlardır:

1. Müşteri Memnuniyeti: Müşteri ihtiyaçlarına odaklanmak ve müşteri memnuniyetini sağlamak esastır. Değişen gereksinimlere hızlı ve etkili bir şekilde yanıt vermek önemlidir.

2. Sürekli İletişim ve İşbirliği: Proje ekibi, müşteri ve paydaşlarla sürekli iletişim halinde olmalıdır. İşbirliği ve bilgi paylaşımı önceliklidir.

3. Değişime Açıklık: Değişen gereksinimlere hızlı ve esnek bir şekilde uyum sağlamak esastır. Planlarda değişiklik yapabilmek, geliştirme sürecinde yeniliklere açık olmak önemlidir.

4. Sürekli İyileştirme: Ekip, sürekli olarak iş süreçlerini değerlendirir, geribildirim alır ve iyileştirmeler yapar. Hatalar değerlendirilir ve oluşabilecek sorunlara daha iyi çözümler elde etmek için dersler çıkarılır.

Agile yaklaşımı, özellikle karmaşık ve belirsizlik içeren projelerde, değişken gereksinimlere hızlı uyum sağlamayı ve müşteri memnuniyetini en üst düzeye çıkarmayı amaçlar.

Agile yazılım geliştirme, hızlı değişen gereksinimlere, esneklik, işbirliği ve sürekli iyileştirme odaklı bir yaklaşımdır. Agile, yazılım geliştirme projelerinin daha esnek ve verimli bir şekilde yönetilmesini sağlar.

Agile, Scrum, Kanban, XP (eXtreme Programming) gibi çeşitli metodolojiler ve çerçevelerle uygulanabilir. Bu metodolojiler, işbirliği, sürekli teslimat, kendini yöneten ekipler ve hızlı geri dönüşüm gibi Agile prensiplerini destekleyen yöntemler ve araçlar sunarlar.

SCRUM

Scrum diyagramı

Scrum, Agile (Çevik) yazılım geliştirme yöntemlerinden biridir. Özellikle ekip tabanlı projelerin yönetiminde etkili olan Scrum, esneklik, işbirliği ve sürekli teslimat odaklı bir yaklaşım sunar.

Scrum’ın temel bileşenleri şunlardır:

1. Product Owner (Ürün Sahibi) : Proje veya ürünün vizyonunu ve gereksinimlerini belirleyen kişidir. Müşteri temsilcisi olarak da düşünülebilir. Product Owner, müşteri gereksinimlerini belirler, ürünün geleceği hakkında kararlar alır ve ürünün hedefi için sorumluluk taşır.

2. Development Team (Geliştirme Ekibi): Yazılımı geliştiren, test eden ve kullanıma hazır hale getiren kişilerden oluşur. Genellikle küçük ve kendini yöneten bir ekiptir. Geliştirme ekibi, sprint boyunca çalışır ve önceden belirlenmiş hedeflere ulaşmaya çalışır.

3. Scrum Master (Scrum Ustası): Scrum sürecinin doğru şekilde uygulanmasını sağlayan, ekip için engelleri kaldıran ve sürekli iyileştirme sağlayan kişidir. Scrum master, Scrum prensiplerine ve yönergelerine uyulmasını denetler ve ekiplerin maksimum verimlilikle çalışmasını sağlamak için destek verir.

Scrum, zaman dilimlerine bölünen döngülere (sprint) dayanır. Bir sprint genellikle 2 ila 4 hafta arasında sürer ve bir dizi işlevsel ürün parçasının tamamlanmasını hedefler. Her sprint başlangıcında, product owner ile geliştirme ekibi birlikte işleri belirler ve sprint hedeflerini belirler. Daha sonra geliştirme ekibi, bu hedeflere ulaşmak için çalışır.

Scrum, düzenli bir şekilde gerçekleşen toplantılarla iletişimi ve işbirliğini sağlar. Bu toplantılar arasında Sprint Planlama, Günlük Scrum Toplantısı, Sprint İncelemesi ve Sprint Retrospektifi yer alır. Bu toplantılar, ilerlemeyi değerlendirmek, hedefleri gözden geçirmek, sorunları ele almak ve sürekli olarak iyileştirmeler yapmak için fırsatlar sunar.

Sprint Planlama:

Sprint Planlama, bir sprint boyunca yapılacak işleri belirlemek için gerçekleştirilen bir toplantıdır. Bu toplantıda, Scrum Takımı ve Product Owner bir araya gelir. Bir sprint boyunca tamamlanacak işler belirlenir ve Product Owner ürünün gereksinimlerini açıklar. Scrum Takımı, bu gereksinimleri temel alarak işleri tahmin eder ve işleri sprint gerçekleştirme planına ekler.

Günlük Scrum Toplantısı:

Günlük Scrum Toplantısı, takım üyelerinin sprint boyunca ne yaptıklarını, yapacaklarını ve karşılaştıkları engelleri paylaşmak için günlük olarak düzenlenen bir toplantıdır. Her gün aynı saatte gerçekleştirilen bu toplantıda, takım üyeleri birbirlerine ilerlemelerini anlatır ve ekip içindeki iletişimi güçlendirir. Toplantı genellikle 15 dakikadan fazla sürmez.

Sprint Review:

Sprint İncelemesi, sprint sonunda gerçekleştirilen bir toplantıdır. Bu toplantıda, Scrum Takımı, Product Owner ve ilgili paydaşlar bir araya gelir. Tamamlanan işler incelenir ve geri bildirimler alınır. Ürün sahibi, tamamlanan işlerin kabul edilmesi veya gereksinimlerde değişiklik yapılması gerekip gerekmediği konusunda karar verir. Ayrıca, gelecek sprint için yeni işlerin belirlenmesi de bu toplantıda yapılır.

Sprint Retrospektifi:

Sprint Retrospektifi, bir sprintin sonunda gerçekleştirilen bir toplantıdır ve Scrum Takımı’nın kendini değerlendirmesini sağlar. Bu toplantıda takım, sprint sürecini gözden geçirir ve nelerin iyi gittiğini, nelerin yanlış gittiğini ve nasıl daha iyi olabileceğini tartışır. Takımın sürekli olarak kendini iyileştirebilmesi için bu toplantıda önemli öğrenimler paylaşılır ve gelecek sprintler için iyileştirmeler yapılır.

Scrum’ın Avantajları

a) Esneklik: Scrum, değişen gereksinimlere hızlı bir şekilde adapte olabilme yeteneği sağlar. Her sprint müşteri geri bildirimi alınır ve gereksinimler buna göre güncellenir.

b) Müşteri Memnuniyeti: Scrum, müşteri memnuniyetini en üst düzeye çıkarmayı hedefler. Sürekli geri bildirim alarak ve müşteriye erken teslimler yaparak müşteri beklentilerini karşılamayı ve ürünü geliştirmeyi sağlar.

c) Şeffaflık: Scrum, proje ilerlemesini ve çalışmaları şeffaf bir şekilde görselleştirir. Günlük toplantıları, sprint panoları ve ilerleme raporları sayesinde tüm ekip üyeleri projenin durumunu izleyebilir.

d) Ekip İşbirliği: Scrum, ekip üyeleri arasında sıkı bir işbirliği ve iletişim kurmayı teşvik eder. Ekip, günlük toplantılarında ilerlemeleri paylaşır, sorunları konuşur ve birlikte çalışırlar.

Scrum’ın Dezavantajları

a) Karmaşıklık: Scrum, doğru bir şekilde uygulanması gereken bir metodolojidir. Birçok bileşen ve süreç içerir, bu nedenle yeni başlayanlar için karmaşık olabilir. Ekip üyelerinin Scrum prensiplerini anlaması ve uygulaması önemlidir.

b) Önceliklendirme: Scrum, iş önceliklendirme ve zaman yönetimi konusunda dikkatli planlama gerektirir. Önceliklerin doğru belirlenmemesi veya zaman çizelgesinin gerçekçi olmaması durumunda projenin başarısı etkilenebilir.

c) Ekip Üyelerinin Sorumlulukları: Scrum, sprinte bağlı hızlı teslimler gerektirdiği için ekip üyeleri üzerinde yoğun bir iş yükü oluşturabilir. Ekip üyelerinin bu hızlı tempoya ayak uydurması ve zamanında teslimler yapabilmesi önemlidir.

d) İşbirliği Zorlukları: Büyük ve dağıtılmış ekiplerle çalışırken, Scrum’ın işbirliği ve iletişim gereksinimleri zorlaşabilir. Farklı zaman dilimlerinde çalışan ekip üyeleri arasındaki koordinasyon ve iletişim zorlukları ortaya çıkabilir.

SONUÇ

Scrum, doğru şekilde uygulandığında birçok avantaja sahiptir ancak dikkatli planlama ve işbirliği gerektiren bir yaklaşımdır. Her projenin özelliklerine ve ekibin dinamiklerine bağlı olarak avantajları ve dezavantajları farklılık gösterebilir.

Serinin ilk yazısında Agile yaklaşımının temel prensipleri, Scrum’ın temel bileşenleri, Scrum’ın avantajları ve dezavantajları konularına değindik. Serinin ikinci yazısında Kanban’ın temel prensipleri, Kanban’ın avantajları ve dezavantajlarından bahsedeceğiz.

--

--