Agile, bir yaklaşım veya felsefi bir bakış açısıyken, Scrum ise bu Agile yaklaşımını uygulamak için kullanılan özel bir metodolojidir. Yani Scrum, Agile yaklaşımının bir metodolojisidir.
Agile, yazılım geliştirme ve proje yönetimi için genel bir felsefi yaklaşımdır. Temel amacı, esneklik, işbirliği, müşteri odaklılık ve sürekli gelişim prensiplerine dayanarak projelerin daha etkili bir şekilde yönetilmesini sağlamaktır.
- Scrum: Scrum, belirli roller, toplantılar ve kurallar içeren bir çerçeve olarak kullanılır. Projeleri belirli sürelerde yürüten "sprint" adı verilen dönemlerle yönetilir. Scrum, müşteri gereksinimlerine hızlı yanıt vermek ve sürekli gelişim sağlamak için kullanılır.
- Kanban: Kanban, görsel bir tahta (board) üzerinde iş akışını yönetmeye dayalıdır. İşler kartlarla temsil edilir ve iş kartları tahtada bir sırayla hareket eder. Bu yöntem, işlerin optimize edilmesi ve sürekli olarak akmasını sağlar.
- Extreme Programming (XP): XP, yazılım geliştirmenin bir dizi en iyi uygulama ve prensibe dayandığı bir metodolojidir. Test odaklı geliştirme, sürekli entegrasyon, müşteri ile yakın çalışma ve çift programlama gibi uygulamaları içerir.
- Lean Software Development: Lean, atıl kaynakları en aza indirgeyerek hızlı ve sürekli değer sağlama prensiplerine dayanır. Bu metodoloji, iş gereksinimlerini daha iyi anlamayı ve kaynakları optimize etmeyi vurgular.
- Dynamic Systems Development Method (DSDM): DSDM, yazılım projelerinin hızlı bir şekilde teslim edilmesini hedefler. Proje yaşam döngüsü boyunca belirli roller, süreçler ve prensipleri içerir.
- Crystal: Crystal metodolojisi, farklı proje türlerine ve boyutlarına uyum sağlamak için çeşitli "renkler" altında gelir. Her renk, proje türüne göre özelleştirilmiş bir yaklaşım sunar.
- Feature-Driven Development (FDD): FDD, büyük ve karmaşık yazılım projelerini küçük özelliklere bölerek yönetmeyi amaçlar. Her özellik ayrı ayrı tasarlanır ve geliştirilir.
- Adaptive Software Development (ASD): ASD, projelerin değişen koşullara ve gereksinimlere adapte olmasını vurgular. Sürekli olarak öğrenme ve gelişmeyi teşvik eder
Yazılım geliştirme ve proje yönetimi gibi alanlarda kullanılan bir çerçeve (framework) veya metodolojidir. Bir Agile(çevik) yazılım geliştirme yöntemidir. Scrum 1990’ların başından beri karmaşık ürün geliştirme yönetmek için kullanılan bir süreç çerçevesidir. Scrum bir süreç ya da yapı ürünleri için bir teknik değil; bunun yerine, çeşitli süreçler ve teknikler istihdam edebilir bir çerçeve olduğunu ortaya koyar.
- Şeffaflık: Sürecin tümleriyle geliştiriciye görünür olmasıdır.
- Denetim: Kullanıcılarına yönelik istenmeyen sapmaları tespit etmek için sürecin ve programın sürekli denetim (Test) altında tutulması gerekir.
- Uyum: Yazılan programların talebe uygun olup olmaması durumudur. Herhangi bir saptama söz konusu ise bu açıklar giderilir ve talebe uyumlu hale getirilir.
Ürün Sahibi, Geliştirme Ekibi ve Scrum Master’dan oluşur. Takım kendi kendini örgütler. Böylece kendi içerisinde uyum içinde olan takımlar daha başarılı sonuçlar alırlar. Scrum’ın takım modeli esneklik, yaratıcılık ve verimliliği optimize etmek için tasarlanmıştır.
Ürün Sahibi (Product Owner)
- Ürünü satın alan kişiler ve ürünü gerçekleştirecek kişiler yani geliştirme ekibi ile kontak kurar.
- Ürünün değerinden ve geri kaydından (Backlog) sorumlu olan kişidir.
- Sorumluluğun büyük bir kısmı Product Owner’dadır.
- Takımda Product Owner tektir.
- Product Owner’in başarılı olması için, tüm organizasyonun kendi kararlarına saygı göstermesi gerekir.
- Geliştirme Ekibi, Product Owner’in kararlarına göre hareket eder.
Geliştirme Ekibi (The Development Team)
- Geliştirme ekibi kendi kendine organize olmalıdır.
- Bu ekip Ürün sahibinin vizyonunu alıp gerçeğe dönüştürecektir
- Ekipte bireysel özel beceriler olabilir. Ancak her şey bir bütün olarak ekibe aittir.
- Ekibin önemli işleri tamamlayabilmesi için gerekli kadro sayısına sahip olması gerekmektedir.
- Ekipler küçük olmalıdır ve önerilen 3 ila 9 kişi aralığındadır.
- Unutulmamalı ki, Product Owner bu sayıya dahil değildir.
Scrum Ustası(The Scrum Master)
- Scrum’dan sorumlu olan kişidir.
- Scrum Master, Scrum Takım teorisi ve uygulamaları kurallara uyarak sağlar.
- Scrum Master takım için liderdir.
- Scrum Master, ekip tarafından yaratılan değeri maksimize etmek için çalışır.
- Scrum Master şunları yapmalıdır ;
- Ürün Backlog yönetimi bulma teknikleri.
- Anlaşılabilir bir ortamda uzun vadeli ürün planlamaları yapmak.
- Örgütlenmeye (ekip) koçluk eder.
- Geliştirme ekibi için değeri yüksek ürünler oluşturmak.
- Geliştirme ekibinin ilerlemesine engel olacak şeyleri ortadan kaldırmak.
- Talebe göre Scrum olaylarının kolaylaştırılması.
- Scrum’ın belirlenmesinde koçluk eder.
- Örgüt içinde planlama yapar.
- Takımın verimliliğini arttırır.
💡 **İterasyon :** İşlemlerin belirli bir plan veya hedef doğrultusunda gerçekleştirilmesidir. Projenin küçük adımlar halinde bölünmesi, her adımın tamamlanması, test edilmesi ve sonuçların analiz edilmesi ile ilerler. 💡 **Faz** : Projenin ayrı ayrı ele alınan aşamalara bölünmesi ve her bir aşama tamamlandığında sonraki aşamaya geçilmesi yaklaşımıdır.
Scrum çerçevesinde her bir iterasyon Sprint olarak isimlendirilmektedir. Sprintleri paketlenmiş zaman aralıkları olarak düşünebilirsiniz.
- Yeni Sprint önceki Sprint sonucundan hemen sonra başlar.
- Sprint süresi en az 7 gün en fazla 30 gün olmalıdır.
- Sprintlerimiz başlangıç ve bitiş tarihleri bulunmaktadır ve ekibin hızını ayarlamak için her bir sprintin aynı sürede tutulması önerilmektedir.
- Scrum yöntemi ile yönetilen projeler ‘sprint’ denilen fazlara ayrılır.
- Proje takımı (Scrum Team), proje yöneticisi (Scrum Master) ile her sprint başlangıcında masaya oturarak yeni ‘sprint’ dahilinde geliştirilecek özellik ve fonksiyonları belirler. Bu süreçte seçilen fonksiyon ve özellikler daha önceden oluşturulmuş ve sürekli güncellenen Product Backlog listesindeki sıra ile en öncelikli olanlardır. Seçilen özellik ve fonksiyonlar Sprint Backlog denilen ikinci bir listeye aktarılır.
- Hiçbir zaman önceliği düşük bir özellik veya fonksiyon önceliği yüksek bir özellik veya fonksiyondan önce geliştirilemez.
- Proje takımı bir sonraki sprint başlangıcına kadar bir daha Product Backlog’a bakmaz, o sprint dahilinde sadece ilgili Sprint Backlog listesine odaklanır.
- Sprintin zamanı dolmadan sprint iptal edilebilir. Sadece Product Owner sprinti iptal etme yetkisine sahiptir.
Günlük Toplantı (Daily)
Scrum ‘da hergün ekip toplantısı gerçekleştirilir ve toplantıda ;
- Ekibin Sprint’ i tamamlamasına yardım etmek için dün ne yaptın?
- Ekibin Sprint’ i tamamlamasına yardım etmek için bu gün ne yapacaksın?
- Ekibin önünde hangi engeller mevcut?
soruları yöneltilir ve her bir ekip üyesi kendine göre bu soruları yanıtlar.
- Toplantı her gün aynı saatte icra edildiği sürece hangi saatte olduğu önemli değildir, amaç ekibe düzenli bir kalp atışı sağlamaktır.
- Toplantı 15 dakikadan daha uzun olamaz. Eğer bir konuda daha fazla tartışmaya ihtiyaç duyulursa o konu not alınır ve toplantıdan sonra görüşülür.
En sık yaşanan sorun insanların bu toplantıları basit bireysel raporlama faaliyeti olarak görmesidir. Cümleler genellikle “Bunu yaptım…Bunu yapacağım” şeklindedir.
Mevcut sprint ‘de yapılacak işler açıklanır ve kişilere dağıtılır, kişiler bu işlerin tahmini çaba miktarına göre Fibonacci dizisindeki sayılar olan 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... e göre işlere puan verir.
Sprint sonunda tamamlanan işlerin puanları toplanır ve bu takıma işlerin hızını gösterir.
Puanlamayı geliştirme takımı yani görevi üstlenecek kişilerin yapması sağlıklıdır.
Scrum ‘da özelliklerin henüz yüzde 20 ‘si tamamlanmadan kullanıcılar ile buluşturulması önerilir. Kullanıcılar ile buluşturulan bu ürüne MVP (Minimum Viable Product) Türkçe ‘de “En Küçük Geçerli Ürün” denir.
Ürün gerekli temel fonksiyonları içerir ve temel amacını en basit şekilde gerçekleştirebilir. Örneğin bu ürün bir fotoğraf makinesidir ve sadece resim çekebiliyordur, henüz odaklama, zoom, filtre vb. özellikleri eklenmemiştir.
Piyasaya sürülen üründe kullanıcılar bir sonraki adımda gerekli şeyin ne olduğunu belirleyecektir.
Bir sonraki adımda ise onların da yüzde 20 ‘si gerçekleştirilir ve piyasaya sürülür.