Çevik süreçler: Scrum

Scrum, 1990 yılının başlarında geliştirilen bir proje yönetim metodolojisidir. Popülerliği her geçen gün artmakla beraber büyük şirketler tarafından da başarıyla kullanılmaktadır. Peki Scrum metodolojisini nasıl uygulamam gerekiyor, süreç içinde nelere dikkat etmem gerekiyor? Bu yazımda bu konulara açıklık getirmeye çalışacağim.

Scrum nedir?

Scrum[4] “Çevik” (Agile) proje yönetim metodolojilerinden biridir.  Kısa döngülü çıktı üretme ve geri bildirim düşüncesine dayanır. Proje hayatı süresince önemli gereksinimleri öncelikli olarak gelistirme ve olabilecek değişikllikleri bir istisna olarak görmemektedir. Scrum’un getirdiği en büyük yeniliklerden birisi, proje ilerlemesini transparant ve devamlı şekilde gösteren, kalan özellikler/geçen gün sayısı grafiğidir. Bu grafik sayesinde proje sorumluları projenin veya sprint’in durumunu anında görebilmektedir.

Örnek bir scrum süreci:

Scrum Process

  • Proje sorumlusu (Project Owner) geliştirilmesi gereken tüm özellik ve fonksiyonları öncelik sıralarına göre toplayarak ürün gerikaydı (Product Backlog) hazırlar.
  • Takım belirlenir ve “Sprint Planning” dediğimiz en fazla 4 hafta sürecek olan küçük döngülerle “Sprint” ile işe başlanır. Her döngü için ürün gerikaydından önemli gereksinimler seçilirerek sprint gerikaydı (Sprint Backlog) oluşturulur ve sprint boyunca bu gereksinimler geliştirilir.
  • Takım bu “Sprint” süresince her gün Scrum Master (proje yöneticisi) liderliğinde bir araya gelir (Daily Scrum Meeting) ve en fazla 15 dakika içerisinde her takım üyesi kendi ilerlemesini kısaca belirtir. Sprint süresince burndown chart denilen kalan gereksinimler/geçen zaman grafiği güncellenir.
  • Sprint bittiği zaman bir “Sprint review” raporu çıkarılır ve sprint süresince ortaya çıkan sorunlar ortadan kaldırılarak bir sonraki sprint rahatlatılmış olur.
  • Sprint içerisinde biten özellik ve fonsiyonlar müşteri veya müşteri temsilcisine gösterilebilir.
  • Yeni bir sprint için tekrar gereksinimler seçilir ve tekrar sprint hayat döngüsü başlar.

Süreçte aktif olan belirgin roller/karakterler

Yukarıda okuduğumuz örnek scrum süreci içerisinde 3 belirgin rol olduğunu görüyoruz. Bunlar sırasıyla:

Product Owner (Proje sorumlusu): Projenin müşteri değerinden ve “Product Backlog” oluşmasından sorumlu olan karakterdir. Tüm proje sponsorlarıyla beraber “Product Backlog” içerisine hangi gereksinimlerin girmesini ve bu gereksinimlerin diğerlerine göre önceliğini kararlaştırır. Bu karalaştırmayı yaparken proje mensuplarından gereksinimler hakkında tahmini geliştirme süresi hakkında bilgi alabilir.

Scrum Master (Proje yöneticisi): Sprint süresince takımdan sorumludur ve esnek bir çalışma ortamı yaratmaya çaba gösterir. Proje mensuplarının sprint süresi boyunca optimal şekilde çalışabilmesi için her türlü gerekli ihtiyaçların sağlanmasından sorumludur. Günlük yapılan scrum toplantılarının organize edilmesini ve iyi çalışabilmesini sağlar.

Scrum Team (Scrum takımı): Adından da belli olacağı gibi projenin geliştirilmesinden sorumlu olan takıma verilen isimdir. Proje gelistirme ekibi 20 kişiden fazlaysa, ekip her biri 5 ila 20 kişiden oluşan küçük takımlara bölünür. Scrum Alliance[1] , 5 – 9 kişi arasında takımları tavsiye ediyor fakat isteğe göre 20ye kadar çıkılabilir. Tabiki anlaşılacağı gibi ne kadar çok üye olursa organize etmek ve toplantıları yapmak o kadar zorlaşabilir.

Zaman planlaması:

Release planning meeting: Sürüm planlama toplantısıdır. Proje hayat sürecinin ilk safhasında yapılır. Geliştirilecek ürün hakkında planlamaların konuşulduğu ve kararların alındığı bir toplandır. Scrum Alliance göre bu toplantı mecburi değildir ve geçilebilir. Bu yüzden de pek sık yapılmamaktadır.

Sprint meeting: Sprint başlamadan önce yapılan toplantıdır. Sprint süresince geliştirilmesi gereken gereksinimler kararlaştırılır ve scrum takımına sunulur. Ayrıca gereksinimleri gerçekleştirmek için gereken her türlü ihtiyaç konuşulur. Scrum Master bu ihtiyaçların yerine getirilmesinden sorumludur.

Sprint: 2 ila 4 hafta arasında süren ve sprint toplantısında kararlaştırılan gereksinimlerin geliştirildiği bir süreçtir. Her takım üyesine bir görev verilir ve sprint sonunda bunun bitmesi beklenir.

Daily scrum: Takım her gün proje yöneticisi önderliğinde toplanır ve en fazla 15 dakika süren kısa bir toplantı yaplır. Toplantı süresince herkes normalin aksine ayakta durur. Proje yöneticisi tüm katılanlara sırayla şu üç soruyu sorar:

  • Son toplantıdan bu yana ne yaptın?
  • Bir sonraki toplantıya kadar ne yapmayı planlıyorsun?
  • Yapmayı planladıklarını gerçekleştirmende sorun işgal edecek durumlar var mı? Bu tür sorunları çözmek proje yöneticisinin görevidir.

Burda dikkat edilmesi gereken bazı noktalar vardır. Her takım üyesinin cevap verirken çok detaya girmeden net ve kısa olarak bu sorulara cevap vermesi gerekiyor. Eğer detayları hakkında konuşmak istediği bir sorun varsa bunu toplantı bittikten sonra yapması gerekiyor. Bu toplantının amacı kısaca her takım üyesinin ne yaptığının öğrenilmesi ve olası sorunların erkenden ortaya çıkmasıdır.

Toplantıya o takım içinde olmayan kişilerde katılabilir fakat bunların konuşma hakkı yoktur, sadece dinleyici olarak katılabilirler. Toplantı sırasında konuştukları taktirde bir dahaki toplantılara alınmazlar.

Sprint review: Her sprint sonunda yapılan bir sprint değerlendirmesidir. Sprint süresince hangi görevlerin tamamlandığı ve hangilerinin tamamlanmadığı analiz edilir.

Sprint Retrospective: Sprint review arkasından yapılır ve yapılan işin aksine sprint boyunca takım bireylerinin, geliştirme araçlarının, yönetimin vs ne derece başarılı olup olmadığına bakılır. Bu sayede sonraki sprintlerde hatalar giderilir ve daha uygun çalışma ortamı sağlanır.
Süreçte kullanılalan araç ve dokümanlar

Scrum sürecinde kullanılan bir kaç araç ve doküman vardır.

Product Backlog: Öncelikli sıralarına göre listelenmiş ürün gereksinim ve fonksiyonlarının bulunduğu bir liste kaydıdır.

Sprint Backlog: Bir sprint boyunca geliştirilmesi gereken gereksinim ve fonksiyonların buludunduğu bir liste kaydıdır. Sprint boyunca bu gereksinimler kesinlikle değişmez. Sprint süreci boyunca ek gereksinimler eklenilmek istenilirse bu yeni gereksinimler product backlog içine eklenir. Şayet bu ek gereksinim olmadan sprint listesinde bulunan bir görev bitirilemeyecek bir durum ortaya çıkarsa, derhal sprint iptal edilir ve yeni bir sprint başlatılması için çalışmalar başlanır.

Relase Burndown: Kalan gereksinimler/geçen zaman grafiğidir. Proje başlamadan product backlog içerisindeki tüm gereksinimlerin bir grafikte dikey olarak yazılır. Ardından her sprint bittikten sonra yatay bölüm biten gereksinimlerle güncellenir ve böylelikle projenin hayat sürecinde yukarıdan aşagıya doğru giden bir yatay çizgi oluşur.

Sprint Burndown: Bu da bir, kalan gereksinimler/geçen zaman grafiğidir. Fakat bunun farkı sadece bir sprint için geçerli olmasıdır. Sprint boyunca takım üyeleri sorumlu oldukları görevler hakkında kalan saat/gün şeklinde bilgi verirler günlük olarak. Ve bu bilgiler bu grafikte günlük olarak güncellenir. Bu sayede bir anda sprint gidişatı hakkında bilgi sahibi olabilir ve olası sorunları önceden görme şansımız olabilir.

Scrum’a nasıl başlayabilirim?

Scrum metodolojisine başlamadan önce kesinlikle bir eğitim alınması tavsiye ediliyor. Bu eğitim süresince Scrum kullanmanın tüm yönlerini öğrenmiş olacaksınız ve projenizde daha başarılı bir şekilde kullanmanızı sağlayacaktır. Eğitimi bitirdikten sonra sektörde de kabul görmüş değişik Scrum sertifikalarına sahip olacaksınız. Bu sertifikalar şunlardır:

  • Scrum Master
  • Scrum Product Owner
  • Scrum Professional
  • Scrum Trainer
  • Certified Scrum Coach

Ayrıca tüm proje ekibininde eğitim alması, scrumun daha sağlıklı uygulanmasını sağlayacaktır.


Scrum kullanmayı kolaylaştıran ürünler

Microsoft penceresinden bakacak olursak, Microsoft Visual Studio 2010 [2][3] içerisinde Scrum daha kolay kullanabilmesini sağlıyacak bir template mevcuttur. Bunun sayesinde tüm gereksinimleri ve sprint süreçlerini organize etmeniz çok daha kolay olacaktır. Benzer yardım araçlarını Microsoft Team Foundation Server 2010 içerisinde de bulabilirsiniz.

Sonuç

Scrum sadece yazılım geliştirme projelerinde olmayıp her türlü projede kullanılabilir. Önemli olan scrum kurallarına iyi bir derecede uymak ve orjinaline bağlı kalarak projenizde kullanmaktır.

[1] Scrum Alliance http://www.scrumalliance.org
[2] Microsoft Visual Studio Scrum 1.0 http://blogs.msdn.com/b/aaronbjork/archive/2010/07/19/announcing-microsoft-visual-studio-scrum-1-0.aspx
[3] Scrum – http://msdn.microsoft.com/en-us/library/dd997796.aspx
[4] Scrum – http://en.wikipedia.org/wiki/Scrum_%28development%29

Share this Story

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *