Kanban vs. Scrum
Agile, temelde yazılım geliştirme süreçlerini daha hızlı ve esnek bir şekilde yürütmeyi hedefler. Süreçteki tıkanmalar ve uzun karar zamanları ile verimliliğin düşmesini engeller, problemler karşısında ekibin hızlı bir şekilde çözüm üretebilmesini sağlar. Günümüz rekabet koşullarında doğru proje yönetimini uygulamak çok değerli bir hale gelmiştir.
Kanban, az sayıda görevi akıcı ve eş zamanlı bir şekilde yönetebilmenizi sağlar. Kanban Board denilen görsel bir planlama aracı kullanılır. Aşamaları temsil eden sütunlarda kartların üzerine yazılmış işler listelenir. İşler ile ilgili çalışıldıkça durumları bu sütunlar arasında yerleri değiştirilerek güncellenir. Sürekli bir iş talebi akışı varsa Kanban yöntemi sizin için uygun olabilir.
Scrum'da, karmaşık görev listesi belirli koşullar ile küçük iş gruplarına ayrılır. Sprint denilen belirli aralıklarda ve süreleri belirli olarak bu işler tamamlanır. Müşterilere düzenli olarak geri bildirimlerin verilmesi gereken durumlarda Scrum sizin için daha uygun bir yol olabilir.
Kanban
Çok sayıda yeni istek gelen ekipler için Kanban iyi bir yöntemdir. Gelen işlerin kapsamı ve önceliği farklı oluyorsa ve iş listenizde sürekli değişiklikler meydana getiriyorsa, Scrum'a göre çok avantajlıdır. Doğru kararı verebilmek için aşağıdaki Kanban özelliklerini inceleyin.
Roller: Kanban'da önceden tanımlanmış belirli roller yoktur. Bütün seviyelerdeki kişileri liderliğe teşvik eder. Sistem baştan bir sorumlu atamak yerine zamanla liderliğin üstlenilmesine imkan verir.
Esneklik: Kanban'da iş akışı her an değişebilir. İş listelerine yenileri eklenebilir, mevcut kartlar önceliklendirmeye bağlı olarak toplu olarak yer değiştirebilir ya da kaldırılabilir. Her şey Kanban'da esnek olmak ile ilgilidir.
Anahtar Metrikler
Lead Time: Bir iş talep edildikten sonra teslim edilene kadar geçen süre. Müşteriyi ilgilendiren bir değerdir. Kanban'daki temel amaçlardan biri Lead Time'yi düşürmektir.
Cycle Time: Gelen işin yapılmaya başlanıp bitirildiği zamana kadar geçen süre. İşi yapan kişiyi ilgilendirir.
WIP (Work in Progress): Aynı anda bir sütunda bulunan iş sayısını sınırlandırır. Bu sayede iş sayı sınırının üzerinde yeni işlerin listeye eklenmesi engellenmiş olur, verimsiz çalışmanın önüne geçilir. Teslim süreleri azalır, daha kaliteli işler çıkar, mult-tasking sorunlarının çıkması engellenir.
Scrum
İş listeleri Sprint başlığı altında küçük gruplara ayrılır. Yeni talepler ve değişiklikler Sprint iş listesi üzerinde yapılamaz. Devam eden Sprint'e yeni işler eklenemez. Büyük değişimlerde Sprint derhal durdurulur ve yeni bir Sprint planlanmaya başlanır.
Roller: Rol tanımları önceden belirlenmiştir.
Product Owner (Ürün Sahibi) : Projenin müşteri tarafındaki sorumluluğundan ve iş listesinin çıkartılıp önceliklendirilmesinden sorumludur.
Scrum Master (Proje Sorumlusu) : Sprint süresince geliştirici takımdan sorumludur. Optimal şekilde ekibi çalıştırır. Daily scrum toplantılarının organize edilmesini sağlar.
Scrum Team (Geliştirme Takımı) : Geliştirme işini gerçekleştiren kişilerdir. Sayıları ortalama 5-9 kişi arasındadır. 20 kişiden fazla olduğu durumlarda daha küçük gruplara ayrılırlar.
Esneklik: İş listeleri Kanban'daki gibi esnek değildir. Yeni gelen işler ürün iş listesine alınır.
Anahtar Metrikler
Release Burndown: Sprint sonrası tüm ürün iş listesindeki kalan gereksinimleri geçen zaman ile birlikte gösteren grafiktir.
Sprint Burndown: Sprint için geçerli gereksinimler/geçen zaman grafiğidir. Günlük olarak güncellenir.
Hız: Takımın hızı hakkında fikir verir. Bir sprint'te tamamlanan iş miktarına bağlıdır. Doğru sonuçlar vermesi takımın aynı ekip üyeleri ile devam etmesi durumunda mümkündür. İşin niteliklerine bakmadan diğer takımların iş miktarları ile kıyaslanamaz.
Teknik Borç: Yazılımın kalitesiz bir şekilde geliştirilmesinden dolayı oluşan maliyettir. Fonksiyonel olarak bekleneni veren bir yazılım olmasına rağmen bir süre sonra yönetilemez hale gelebilir.
Hangisini seçmeli?
Bilgiler ışığında size en uygun olanı seçin ve kullanmaya başlayın. Eğer Kanban kullanıyorsanız, bir Sprint döngüsü çalıştırarak Scrum'u deneyimlemenizi öneririz.
Scrum ya da Kanban işinize tam anlamıyla uymuyorsa Agile'nin temel prensiplerinden faydalanın. Sonuçta ikisini de Agile yazılım geliştirmenin farklı metodları olarak uyguluyoruz.