Scrum – Stop Starting, Start Finishing!

Bir önceki yazımda, Agile metodolojisinin ortaya çıkışı ile giriş yaparak neden ortaya çıktığına kısaca değindim. Bu yazı ise “Scrum nedir?”“Scrum’daki değerler neler?” ve “Neyi, Nasıl farklı yapıyor?” sorularına cevap bulacağımız bir yazı olacak.

Scrum, Agile metodolojisi altında bir framework. Framework olması sebebiyle, yazılım ekiplerinin belli bir çerçevede ve belirli kurallarla çalışması için rehber görevi görür. Kuralları basit ve akılda kalıcı olmasına rağmen, onu uygulayan şirketler ve ekiplere göre farklılık oluşması ve uygulamada zorluklar olması da bu nedenle doğaldır.

Cesaret, Odak, Taahhüt/Adanmışlık, Saygı, Açıklık (Courage, Focus, Commitment, Respect, Openness) Scrum’ı benimseyen takımlar bu değerleri göz önünde bulundurarak hareket ederler. Bu değerlere tekrar, Scrum pratiklerini konuşurken değineceğiz.

“Neyi, nasıl farklı yapıyor?” sorusuna gelirsek. Scrum takımlarında gerektiği kadar rol var. Bizim geleneksel şirketlerde alışık olduğumuz, yönetici, takım lideri, analist, test uzmanı gibi ünvanlar yok. Bu nedenle kurumsal şirketlerde uygulanırken ilk başta, bir kültür değişimi gerektiriyor ve üst yönetimin de desteklemesi gerekiyor. Çünkü bir önceki yazımda da değindiğim gibi takımların otonom, insiyatif alabilen ve karar verebilecek olması önemli.

Peki nedir bu Roller?

Product Owner: İş listesi ve aklındaki ürün fikri ile, ürüne yön verebilecek vizyon, karar alma yetkisine ve iş bilgisine sahip olan kişidir.

Developer (Development Team): Çalışan ürünü/yazılımı ortaya çıkaran ekiptir. Takım ürünle ilgili iş kurallarını birlikte analiz eder, yazılım(/tasarım) ve testi birlikte yapar. O nedenle takımdaki her kişi, aslında ürünü geliştiren bir üyedir ve developer olarak adlandırılır. Scrum’da developer team, ürünü ortaya koyabilecek yetkinliğe sahip, farklı alanlardan farklı yetkinliklere sahip (cross functional) bir ekiptir.

Scrum Master (Servant Leader): Takımın sprint hedeflerine ulaşabilmesi ve işin scrum kapsamında ilerleyebilmesini, sprint hedeflerine ulaşabilmesi için engellerin (impediment) ortadan kaldırılmasından ve iletişimden sorumlu olan kişidir.  Scrum takımı kendi kendine organize olabildiğinden, Scrum master, takım lideri değildir.

scrum-master

Scrum Team: SM, PO ve Developer Team hep birlikte Scrum Team olarak adlandırılırlar.

scrum-teamRollerden bahsettik,

“Peki Scrum’a özgü pratikler/etkinlikler neler?” 

Scrum uygulanırken, takım 1. günden – 4 haftaya kadar belirlediği bir uzunlukta Sprint koşar. Sprint’in uzunluğu alınan işin riskine ve Sprint sonunda çalışan bir özellik gösterebilmek için ihtiyaç duyulan süreye göre belirlenir.

Scrum’da Sprint içerisinde gereksiz toplantıları azaltmak ve düzenli olarak ekibin belirli bir düzende ilerlemesini sağlamak amacıyla yapılan etkinlikler vardır. Bu etkinliklerin hepsi time-boxed yani maksimum süresi belirli olan event’lerdir.

  • Sprint Planning: Product Owner’ın öncelikli iş listesini (Product Backlog) paylaştığı, işlerin (Product Backlog Item) size’landırıldığı, takımın Sprint içerisinde hangi işleri (PBI)’ları alabileceğini değerlendirdiği çalışma toplantılarıdır. What ve How olarak 2 kısımdan oluşur. İlk kısımda “Hangi işlerin alınabileceğine dair konuşulur” ve sonrasında Development Team “Nasıl?” sorusuna yanıt verecek şekilde bir çalışma yapar. İşleri alt işlere ayırır ve bağımlılıkları belirler. Product owner “Nasıl?” kısmında bulunmak zorunda değildir, gerekli olduğunda dahil olabilir.
  • sprint-planning
    Kaynak: Continuous Automation
  • Daily Scrum: Takım üyelerinin Sprint boyunca her gün aynı saatte bir araya geldiği etkinliktir. “Dün ne yaptım?”, “Bugün neleri planlıyorum?”, “Sprint hedefini gerçekleştirebilmenin önünde herhangi bir engel var mı?” Maksimum 15 dk’da tamamlanmalıdır. Takımın günlük olarak kendini değerlendirmesi ve aynı anda çok fazla işe başlamanın değil işleri bitirmenin, çalışan tamamlanmış fonksiyonun önemli olduğunu“Almost Done is not Done!” ve takım grafiğine (Burndown Charts), hızına olan katkısını ölçümlediği etkinliktir.
  • Refinement (Eski adıyla Gromming): Önceliklendirilmiş iş listesinde bulunan sonraki sprintlerdeki işleri netleştirmek, planning toplantısı öncesinde büyük size’daki işleri sprint’e uygun şekilde kırarak küçük parçalara ayırmak, detaylandırmak için yapılan toplantıdır. Product Backlog’un detaylandırılması ve güncel tutulması varsa yeni işlerin eklenmesi ve iş önceliklerinin yeniden belirlenmesi için önemli bir toplantıdır.
  • Sprint Review: Takımın bütün bir Sprint içinde yaptığı işleri sunduğu ve geribildirimleri aldığı toplantıdır. Alınan işlerin üzerinden geçildiği ve çalışan yazılımın demosunun yapıldığı bu etkinlik paydaşların yorumlarının toplanması açısından önemlidir. Sprint’in son günü, belirlenen saatte yapılır.
  • Retrospective: Sprint’in son etkinliğidir. Planning sonrasında takımın, Sprint’in nasıl geçtiğini değerlendirdiği toplantıdır. Neleri iyi/kötü yapığını, nelerden mutlu/mutsuz olduğunu konuştuğu, daha iyi bir Sprint geçirmek için neler yapması gerektiğini konuştuğu toplantıdır. Sadece değerlendirme değil, aksiyonları da belirlediği bir etkinliktir.

Scrum değerlerinden, Scrum rolleri ve etkinlikleri öncesinde bahsetmiştim, Cesaret, Odak, Taahhüt/Adanmışlık, Saygı, Açıklık değerlerinin, Scrum etkinliklerinin verimli geçebilmesi için önemi büyük. Planning toplantısında, takımın motive, cesur, açık ve işe odaklı olarak kararlar alması, Retrospective toplantılarında, takımın birbirine karşı açık, saygılı ve cesaret düşündüklerini ifade edebilmesi önemli. Bu değerler, Scrum pratiklerini ve Agile anlayışını uygulaması, takım olabilmesi için gerekli.

Bir sonraki yazı, Scrum takımı ve dinamikleri üzerine olacak…

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s