Scrum nedir?
Scrum, ekiplerin kendi kendini organize etmek ve ortak bir hedef doğrultusunda çalışmak için kullandığı bir yönetim çerçevesidir. Verimli bir proje teslimi için gereken bir dizi toplantı, araç ve rolü tanımlar. Büyük bir maça hazırlanan bir spor takımı gibi, Scrum uygulamaları da ekiplerin kendi kendini yönetmesine, deneyimlerinden öğrenmesine ve değişime uyum sağlamasına olanak tanır. Yazılım ekipleri, karmaşık sorunları uygun maliyetli ve sürdürülebilir şekilde çözmek için Scrum'ı kullanır.
Scrum metodolojisi nedir?
Scrum metodolojisini bazı ilke ve değerler şekillendirir:
Proje başarısı için Scrum ilkeleri
Şeffaflık
Ekipler, herkesin başkalarının karşılaşabileceği zorluklardan haberdar olduğu bir ortamda çalışır. Farklı fonksiyonlardaki ekip üyeleri ve proje sahipleri arasında yapılan düzenli yüz yüze konuşmalar, yanlış anlamaları ve bilgi darboğazlarını önler.
Gözlem
Ekip üyelerinin ilerlemelerini gözden geçirebilmeleri için çerçeveye sık değerlendirme noktaları yerleştirilmiştir. Proje yöneticileri, bu değerlendirme toplantılarından edindikleri öngörüleri tahmin ve gelecekteki planlamalar için kullanır. Sonuç olarak, projeler daha verimli şekilde, bütçe dahilinde ve planlamaya uygun şekilde ilerleyebilir.
Adaptasyon
Ekip üyeleri, değişen müşteri gereksinimlerine bağlı olarak görevleri yeniden önceliklendirebilir. Hangi görevlerin önce tamamlanacağına ve hangilerinin gelecekte tekrar inceleneceğine karar verebilirler.
Proje ekipleri için Scrum değerleri
Scrum ekipleri beş temel değeri izler.
Bağlılık
Scrum ekip üyeleri, zamana dayalı görev ve hedeflere bağlıdır ve en iyi çözümü bulmak için sürekli gelişmeye odaklanmıştır.
Cesaret
Scrum ekipleri; açık, zorlayıcı sorular sorarak cesaret gösterir. En iyi çözüme ulaşmak için dürüst ve şeffaf tartışmalar yaparlar.
Odaklanma
Ekip üyeleri, belirli bir süre zarfında görevler içeren bir ürün iş listesi üzerinden çalışır. Çıktıları sınırlı bir zaman dilimi içinde sunmak için seçili görevlere odaklanırlar.
Açıklık
Scrum ekip üyeleri, bireysel öğrenmeyi ve genel proje kalitesini destekleyen yeni fikir ve fırsatlara açıktır.
Saygı
Ekip üyeleri; proje yöneticilerine, birbirlerine ve Scrum sürecine saygı duyar. Bu saygı kültürü, ekip içinde karşılıklı iş birliği ve ortak çalışma ruhu yaratır.
Scrum nasıl çalışır?
Scrum, öğrenmesi kolay ancak uzmanlaşması zor bir çerçevedir. Scrum'ın kurucu ortakları Jeff Sutherland ve Ken Schwaber, temel kavramları Scrum Kılavuzu'nda açıklamıştır. Bu kılavuz, Scrum süreçlerine ve bunların nasıl etkili şekilde uygulanacağına dair ayrıntılı bir genel bakış sunar.
Scrum'ın özü, Sprint adı verilen bir sınırlı süre içinde müşteri değeri sunan ve kendi kendini organize edebilen bir ekiptir. Scrum, her bir Sprint ile ilişkili yapıt, rol ve etkinlikleri tanımlar. Şimdi bunların her birini ayrıntılı olarak inceleyelim.
Scrum yapıtları nelerdir?
Scrum ekipleri, sorunları çözmek ve projeleri yönetmek için Scrum yapıtları adı verilen araçlar kullanır. Scrum yapıtları, ekip üyelerine ve paydaşlara önemli planlama ve görev bilgilerini sunar. Üç temel yapıt vardır:
Ürün İş Listesi
Ürün iş listesi, proje başarısı için tamamlanması gereken özellik, gereksinim, iyileştirme ve düzeltmelerden oluşan dinamik bir listedir. Temelde, sürekli olarak tekrar incelenen ve pazar değişikliklerine uyacak şekilde tekrar önceliklendirilen bir yapılacaklar listesidir. Ürün sahibi, alakasız öğeleri çıkararak veya müşterilerin yeni isteklerini ekleyerek listeyi muhafaza eder ve günceller.
Sprint İş Listesi
Sprint iş listesi, mevcut Sprint döngüsünde geliştirme ekibi tarafından tamamlanması gereken öğelerin listesidir. Her Sprint'ten önce ekip, ürün iş listesinden üzerinde çalışacağı öğeleri seçer. Sprint iş listesi esnektir ve Sprint sırasında gelişebilir.
Ürün Parçası
Ürün parçası, bir hedef veya vizyon doğrultusunda bir adımdır. Bu, bir Sprint'in kullanılabilir son ürünüdür. Ekipler, Sprint hedeflerini tanımlamak ve ortaya koymak için farklı yöntemler benimseyebilir. Esnekliğe rağmen, ekibin mevcut Sprint dahilinde ulaşmak istediği esas Sprint hedefinden ödün verilemez.
Örneğin, bazı ekipler Sprint sonunda müşterilerine bir şey sunmayı seçer. Dolayısıyla, yazılım değişikliği kullanıma sunulduğunda Sprint hedefi de tamamlanmış olur. Diğer ekiplerse birlikte kullanıma sunulacak bir dizi özelliği tamamlamak için çalışabilir. Bu durumda, Sprint hedefi, özellik başarıyla test edildikten sonra tamamlanmış olur.
Scrum rolleri nelerdir?
Bir Scrum ekibi üç role ihtiyaç duyar: ürün sahibi, Scrum lideri ve geliştirme ekibi.
Ürün Sahibi
Ürün sahibi, geliştirme ekibinin işletmeye en yüksek değeri sunduğundan emin olmaya odaklanır. Son kullanıcıların ve müşterilerin değişen ihtiyaçlarını anlar ve öncelik sırasına koyar. Etkili ürün sahipleri şunları yapar:
- Ekibe bir sonraki aşamada hangi özelliklerin teslim edileceğiyle ilgili açık rehberlik sunar.
- İşletmenin istekleri ile ekibin anladıkları arasındaki boşluğu doldurur.
- Sürümlerin ne zaman ve ne sıklıkla gerçekleşeceğine karar verir.
Scrum lideri
- Her bir Sprint için gereken kaynakları planlama.
- Diğer Sprint etkinliklerini ve ekip toplantılarını kolaylaştırma.
- Ekip dahilinde dijital dönüşüme öncülük etme.
- Yeni teknolojileri benimserken ekip eğitimine imkan sunma.
- Ekibin bir bütün olarak karşılaşabileceği zorlukları gidermek için dış gruplarla iletişime geçme.
Scrum geliştirme ekibi
Scrum ekibi; test ediciler, tasarımcılar, kullanıcı deneyimi uzmanları, operasyon mühendisleri ve geliştiricilerden oluşur. Ekip üyeleri farklı becerilere sahiptir ve birbirlerini eğitirler. Dolayısıyla, iş tesliminde hiç kimse sorun yaşamaz.
Amazon'un kurucusu Jeff Bezos, ekip boyutuna karar verirken iki pizza kuralını kullanmayı öneriyor: Bir ekip, iki pizzayı paylaşacak kadar küçük olmalıdır.
Scrum geliştirme ekipleri şunları yapar:
- Sprint'in başarılı bir şekilde tamamlanması için iş birliği içinde çalışma.
- Sürdürülebilir geliştirme uygulamalarını destekleme.
- Kendi kendini organize etme ve projelerine açık bir "biz" tavrıyla yaklaşma.
- Her bir Sprint için ne kadar iş tamamlanabileceği konusunda planlama ve tahmin yapma.
Scrum etkinlikleri nelerdir?
Scrum etkinlikleri veya Scrum seremonileri, Scrum ekiplerinin düzenli olarak gerçekleştirdiği ardışık toplantılardır. Scrum etkinliklerinden bazıları şunlardır:
Sprint Planlama
Bu etkinlikte, ekip bir sonraki Sprint'te tamamlanacak iş konusunda tahminde bulunur. Üyeler; belirli, ölçülebilir ve ulaşılabilir Sprint hedefleri belirler. Planlama toplantısının sonunda, her Scrum üyesi her bir ürün parçasının Sprint'te nasıl teslim edileceğini öğrenmiş olur.
Sprint
Sprint, Scrum ekibinin bir ürün parçasını bitirmek için birlikte çalıştığı gerçek süredir. Bir Sprint genellikle iki hafta sürer ancak projenin ve ekibin ihtiyaçlarına bağlı olarak bu süre değişiklik gösterebilir. İş ne kadar karmaşıksa ve bilinmeyenler ne kadar fazlaysa Sprint'in de o kadar kısa olması gerekir.
Günlük Scrum veya stand-up
Günlük Scrum, ekip üyelerinin katılıp günü planladığı kısa bir toplantıdır. Üyeler, tamamlanan işleri bildirir ve Sprint hedeflerine ulaşmada yaşanan zorlukları dile getirir. Toplantının pratik olduğu kadar kısa olması amaçlandığından buna stand-up (ayaküstü konuşma) denir.
Sprint Değerlendirme
Sprint sonunda, ekip bir araya gelerek tamamlanan işleri değerlendirmek ve paydaşlara göstermek için bilgilendirici bir oturum gerçekleştirir. Ürün sahibi mevcut Sprint'e dayalı olarak ürün iş listesini de elden geçirebilir.
Sprint Retrospektifi
Ekip, Sprint sırasında işe yarayan ve yaramayan noktaları belgelemek ve tartışmak üzere bir araya gelir. Ortaya çıkan fikirler, gelecekteki Sprint'leri iyileştirmek için kullanılır.
Scrum, yazılım geliştirmede neden önemlidir?
İnsan kaynakları, pazarlama ve tasarım gibi her türden ekip, Scrum'ı etkili şekilde kullanır. Bununla birlikte, Scrum, yazılım geliştirme ve mühendislik ekipleri arasında daha yaygındır. Ekiplerin, maliyet ve bütçenin kontrolden çıkmasına izin vermeden değişen gereksinimlere daha hızlı şekilde karşılık vermesine olanak tanır. Aşağıdaki nedenlerle önemlidir:
Zorlu durumlarda kaliteyi koruyabilme
Kalite güvencesi kontrolleri, Scrum çerçevesinde yerleşik olarak bulunur. Ekipler, gereksinimleri her bir Sprint'in başında tanımlar. Ekipler, "tamamlanmış süreç" kavramına ilişkin ekip vizyonu oluştururken yazılım veya ürün yaşam döngüsünü de kapsamlı olarak değerlendirir. Bu da gereksinimlerin kısa bir zaman dilimi içinde alakalı ve ulaşılabilir kalması anlamına gelir. Ürün sahibinin düzenli geri bildirimleri ve Sprint değerlendirmeleri, ekibin proje boyunca sürekli olarak gelişmesine olanak tanır.
Artan yatırım getirisi
Scrum ekipleri, gereksinimleri müşteri değerine ve risk analizine göre önceliklendirir. Odak noktası, erken müşteri geri bildirimi toplamak için pazara sürülebilecek çalışan bir birincil ürün geliştirmektir. Scrum geliştirme; daha az maliyetli kusur, ekip verimliliği ve uzun vadede para tasarrufu sağlayan hızlı hata yaklaşımıyla tanımlanır.
Daha mutlu ve daha üretken ekipler
Tahmini iyileştiren ilgili ölçümler
Scrum ekipleri, proje performansını ölçmek için kendi ölçümlerini kullanır. Zaman çizelgelerini, bütçeleri ve kalite ölçümlerini kendi deneyim ve becerilerine göre tahmin ederler. Tahminler göreceli olduğundan, ürün sahibi bunlar üzerinde kontrole sahiptir. Ekipler, projenin başında daha fazla destek alır ve zaman içinde doğal olarak hızlanır. Proje paydaşları, projenin yolunda gitmesini sağlamak için çalışan ürünleri gözden geçirir ve düzenli geri bildirim sağlar.
Scrum ile çevik yaklaşım arasındaki fark nedir?
Çevik yaklaşım, yazılım geliştirmedeki bir zihniyeti veya düşünce yapısını ifade eder. Her ekip üyesinin sürekli iyileştirmeye ve müşterilere değer sunmaya odaklanmasını sağlamak için kuruluş düzeyinde benimsenen bir felsefedir. Scrum, işi çevik yaklaşım dahilinde tamamlamaya yönelik bir çerçevedir. Scrum, bir projeyi kolaylaştıracak yöntemleri tanımlamak için çevik yaklaşımın tüm temel ilkelerini kullanır. Ancak, çevik yaklaşımın her zaman Scrum anlamına gelmediğini belirtmek önemlidir. Pek çok farklı metodoloji, proje yönetimine çevik yaklaşım getirir.
Scrum geliştirme ekipleri, DevOps'u nasıl benimseyebilir?
- Her özellik geliştirmesi için yazılım testini otomatikleştirme ve yeni testler yazma
- Sürekli dağıtımı destekleyen bir teknoloji yığını ve araçlar kullanma
- Her Sprint'in sonunda üretimdeki değişiklikleri yayımlama