Scrum Series 2: Scrum Rolleri

Bir önceki yazımda Scrum’ın temellerini, tarihçesini ve parçalarını anlatmaya çalışmıştım. Bu yazımda ise Scrum çerçevesinin önemli bir parçası olan rollerden bahsedeceğiz. Scrum çerçevesinde 3 farklı rol tanımı yapılmıştır:

  • Product Owner
  • Scrum Master
  • Development Team

Scrum proje yönetim çerçevesi, geleneksel proje yönetim metodolojilerine göre daha farklı bir rol tanımlaması yapmaktadır. Geleneksel yöntemlerde proje yöneticisi, takım lideri, teknik lider vb. gibi rol tanımlamaları yapılırken, Scrum metodolojisinde bu tip roller bulunmaz. Geleneksel yöntemlerdeki roller arasında hiyerarşik bir yapı varken, Scrum takımlarını oluşturan roller arasında herhangi bir ast-üst ilişkisi bulunmamaktadır. Hatta Scrum takımındaki herkesin sorumlulukları eşittir. Şimdi bu rollerin detaylarına bakalım:

Product Owner (Ürün Sahibi):

Kişisel olarak bu tip terimlerin Türkçe’ye çevirisinin yapılarak kullanılmasından keyif almıyorum. Ancak Product Owner teriminin Türkçesi, terimin anlamını tam olarak yansıtıyor. Bu nedenle zaman zaman “Ürün Sahibi” çevirisini kullanmakta bir sakınca görmüyorum.

Ürün Sahibi rolü, Scrum takımında müşteriyi temsil etmektedir. Takım içerisinde, müşterinin isteklerini en iyi şekilde bilmesi gereken kişidir. Bu rolün sadece bir kişi tarafından üstlenilmesi zorunludur, ancak bazen birden fazla kişinin oluşturduğu bir grup tarafından da üstlenilebilir. Ancak bu durum önerilen bir durum değildir.

Product Owner, geliştirilecek olan ürünün vizyonunu belirleyen kişidir. Müşterinin isteklerini bilmesinin yanında, pazarda maksimum değeri yaratacak bir ürün yol haritası çıkarmakla yükümlüdür. Geliştirilecek olan ürünün vizyonuna göre, ürünün gereksinimlerini tanımlamaktan sorumludur. Ayrıca bu vizyona ve yatırımın geri dönüşüne (Return of Invesment) göre ürün gereksinimlerinin ve yeteneklerinin önceliklendirmesi yine Ürün Sahibinin sorumluluğundadır. Bir başka deyişle Product Backlog çıktısının hazırlanması ve yönetiminden sorumludur. Geliştirilen ürünün kullanıma alınma veya pazara sürülme tarihlerini de belirlemelidir.

Product Owner, geliştirilen ürünle ilgili Development Team’e geri bildirimlerde bulunur. Ürünün doğru yeteneklere sahip olması için, müşteri vizyonuna göre fikirlerini ve yorumlarını paylaşmalıdır. Geliştirilen özelliklerin kabul edilmesi veya reddedilmesi sorumluluğu tamamen Product Owner’a aittir. Daha öncede belirttiğim gibi Product Owner, Scrum takımında müşteriyi temsil etmesinden dolayı, takımın müşteri ile oluşturduğu arayüzdür. Bu nedenle müşterinin yönetimi de yine Product Owner’ın sorumluluğundadır.

Scrum Master (Scrum Yöneticisi):

Scrum Master, diğer roller kadar öneme sahip olmasına rağmen, kişisel olarak bu rol her zaman beni diğerlerine göre daha çok etkilemiştir. Scrum Master, ekibin hizmetkar lideridir. Ekibin dış etkenlerden korunmasını sağlar. Takımın dış etkenlerden en az şekilde etkileneceği bir çalışma ortamı sağlamak zorundadır. Ekibin önündeki tüm yönetimsel engelleri kaldırmak yine Scrum Master’ın görevidir.

Scrum Master, Development Team’in ve Product Owner’ın Scrum klavuzudur. Scrum çerçevesinin kurallarına göre uygulanmasını sağlar. Örneğin takımın her gün Daily Scrum toplantısını düzenlemesini sağlamalıdır. Sürekli olarak süreçle ilgili takımı bilgilendirmeli ve sürecin daha iyi işletilmesi için iyileştirmeler yapmalıdır.

Scrum Master, yönetimsel bir roldür. Ancak herhangi bir hiyerarşik üstünlüğü bulunmamaktadır. Bu rolün en büyük görevi şirket yönetimine karşı takımı korumasıdır. Ancak Scrum uygulamaya başlamış şirketlerde bu görevi ifa etmek biraz zor ve stresli olabilir. Bu nedenle sürekli olarak şirket yönetimine Scrum sürecinin faydalarından ve kazanımlarından bahsetmeli, onları bu sürecin gerekliliğine ikna etmelidir.

Kısaca özetlemek gerekirse, Scrum Master, takımın önündeki engelleri kaldırmalı, takımın kesintiye uğramasını engellemeli, süreci desteklemeli ve yönetim kademesindeki kişileri yönetmelidir.

Development Team (Geliştirme Takımı):

Development Team, 3 - 9 kişiden oluşan küçük takımlardır. Ürünün geliştirilmesinden sorumludurlar. Ürün geliştirme esnasında gereken bütün yeteneklere sahip kişilerden oluşturulmalıdır. Bir başka şekilde anlatmak gerekirse, ihtiyaç olması durumunda grafik tasarımcı, yazılım mühendisi, veritabanı yöneticisi gibi yeteneklere sahip kişiler, Development Team’i oluşturmalıdır.

Development Team genellikle aynı ofiste çalışıyor olmalıdır. Ancak farklı ofislerde, hatta farklı lokasyonlardaki ofislerde çalışan kişilerden oluşan Development Team örnekleri de mevcuttur. Development Team’lerde bulunan kişilerin bazı roller hariç olmak üzere (ÖR: Veritabanı Yöneticisi) tam zamanlı çalışıyor olması önem arz etmektedir.

Bu takımların en büyük özelliği kendi kendilerine organize olmalarıdır. Takımda hiçbir şekilde hiyerarşik bir yapı belirlenemez. Scrum takımındaki kimse, hangi işi kimin yapacağını söyleyemez. Takım üyeleri yapmak istedikleri görevleri kendileri belirler.

Development Team’in görevlerini şu şekilde özetleyebiliriz:

  • Sprint içerisinde yapılması gereken görevleri belirler.
  • Bu görevlere ne kadar efor harcanması gerektirdiği konusunda tahminleme yapar.
  • Ürün geliştirme sorumluluğunu üstlenir.
  • Ürünün kalitesinden sorumludur.
  • Sürecin iyileştirilmesi için geri bildirimlerde bulunur.

Scrum’ın bu farklı rol tanımlama stratejisinin arkasında takım bireylerinin yaratıcılığını ve üretkenliğini arttırmak yatmaktadır.

Bu yazımda Scrum Rollerinin detaylarını incelemeye çalıştım. Bir sonraki yazımızda (Scrum Series 3: Scrum Toplantıları) Scrum Toplantılarının detaylarını inceleyeceğiz.

Görüşmek üzere.

Book Review : The Elements of Scrum

I would like to share with you some book reviews time to time. The following review is done by one of the most talented and smart software professional, Kerem Özen, I've ever met. Actually he is one of the best. He is also a good photographer and has some personal art work.

The name of the book is "The Elements of Scrum" by Chris Sims and Hilary Louise Johnson. A part of Kerem's review is as follows:

"...Elements of Scrum consists of three parts; Introduction to Agility, Scrum, and Supporting Practices. First section of the book depicts a typical week of a Scrum Team. This start gives an overview information about agile methodology and Scrum. The book contains lots of anecdotal explanations and historical examples that makes the book easy to read and easy to understand. Before introducing the Scrum methodology, authors give reasons why to choose agile methodology by comparing waterfall and iterative development cycle models..."

You can find the full version of the review on his blog: Kerem Ozen's Blog

Respect but Don't Obey!

Last Monday, I participated to career day which is organised by Software Club of Eastern Mediterranean University. It was a very inspiring event for me. I seperated some part of my presentation to self-improvement of young brains. My advices to them were as follows:
  • Respect but Don't Obey: At the beginning of our professional life, most of us are soldiers and probably some commanders, I mean the bosses, manage us. We should respect them but we must not obey. Remember that we are not slaves!
  • Always declare your opinion and comments: I think this is applied to all areas of life, however in the context of professional life you should always declare your opinion to be recognized by the others. Otherwise, everybody believes that you don't have enough knowledge about the discussed things.
  • Team Work: There is no software in the world that is developed by only one programmer! So believe in Team Work.
  • Share your knowledge: Knowledge gets bigger and bigger if you share it!
  • Be brave to try new things: There will be always someone who says "Don't touch it, if it works!" Don't let such kind of guys to convince you. Accept the challenge and touch everything around you!
Final words are... these are my observations based on my 8 years of professional career. And I think that I will explore much more in the following years. I wonder... What's yours?

Scrum Series 1: Scrum - Rugby Yaklaşımı

İlk yazım da Scrum metodolojisinin tanımı ve içeriği hakkında bilgiler vermeye çalışacağım.

Scrum, karmaşık ürünlerin geliştirilmesi ve sürdürülebilir kılınması için oluşturulmuş bir çerçevedir. Bir başka deyişle, ekibin üretkenliğini ve yaratıcılığını attırarak, mümkün olan en yüksek değerdeki ürünün üretilmesini sağlamak için oluşturulmuş bir proje yönetimi modelidir. Daha çok yazılım geliştirme projelerinde kullanılıyor olmasına rağmen, bir çok sektörde uygulamaları mevcuttur. Scrum anlaşılması basit, ancak uzmanlaşması çok zor bir modeldir.

Scrum'ın temelleri 80'li yıllara dayanmaktadır. Endüstride, ürün geliştirme metodolojilerinde kullanılmış ve başarısı kanıtlanmış pratiklerin bir araya getirilmesi ile oluşturulmuştur. Scrum, geleneksel yazılım geliştirme metodolojilerinde kullanılan Bayrak Yarışı Yaklaşımı yerine, Rugby Yaklaşımı üzerine kurulmuştur. Rugby Yaklaşımı, ismini Rugby oyunundan almaktadır. Rugby oyununda, oyuncular tek birim gibi hareket ederek, topu ileri-geri, sağa-sola hareketlerle topu ilerletmeye çalışırlar. Scrum tam olarak bu temel üzerine kurulmuştur. Scrum takımlarındaki bireyler de tek bir birim olarak hareket ederek, ürünü belirlenen zaman dilimlerinde, küçük küçük geliştirerek, bütün bir ürün haline getirmektedirler.

Scrum'ın ilk olarak ismiyle anılması 90'lı yıllarda gerçekleşmiştir. Jeff Sutherland ve Ken Schwaber, Scrum'ın kurucuları olarak anılmaktadır. Daha sonrasında Mike Beedle ve Mike Cohn'un katkıları ile günümüze kadar gelişerek gelmiştir.

Günümüzde dev olarak adlandırabileceğimiz bir çok bilişim firması bütün geliştirme yöntemlerini Scrum ile değiştirmeye başlamışlardır. Bu firmalara örnek olarak Microsoft, IBM, Google, Siemens vb. gösterilebilir. Türkiye'de de son zamanlarda Scrum metodolojisinin popülaritesi gitgide artmaktadır ve bir çok bilişim firması Scrum metodolojilerini kullanmaya başlamıştır. Bu firmalara örnek olarak Türk Telekom, Turkcell, Avea ve TAI vb. gösterilebilir.

Scrum deneyimsel bir süreç teorisine dayanmaktır. Tahmin edilebilirliği arttırmak ve risk unsurlarını en aza indirgemek için yinelemeli ve artımlı bir model önermektedir. Scrum üç temel prensip üzerine kurulmuştur. Bunlar:
  • Transparency (Şeffaflık): Süreç içerisinde gelişen bütün olaylar ve çıktılar, herkes tarafından görünebilir olmalıdır. Bu sayede ekip üyeleri arasında ortak bir dil oluşturulması sağlanır.
  • Inspection (Denetim): Sürecin doğru işleyip işlemediği sürekli olarak kontrol edilmelidir. Bu sayede doğru ve yanlış uygulanan pratikler ayırt edilebilmektedir.
  • Adaptation (Adaptasyon): Denetimler sonucunda uygulanan pratiklerin kabul edilebilir limitler dışarısına çıktığı belirlenirse, ya sürecin yada yapılan işin değiştirilmesi gerekir. Böylece sürekli olarak yenilenen ve iyileşen bir model oluşturulabilir.
Scrum çerçevesi, Scrum takımları ve takım bireylerine atanmış rollerden, belirli bir zaman içerisinde gerçekleştirilmesi gereken toplantılardan, süreç çıktılarından ve kurallardan oluşmaktadır. Scrum içerisinde tanımlı olan bu parçaların hepsi bir amaca hizmet etmektedir ve Scrum modelinin başarısı için önem arz etmektedir. Şimdi bu parçaların neler olduğuna kısaca bir göz atalım. (NOT: Bu parçaların isimlerini çeviri yapmadan kullanmanın daha yararlı olduğunu düşünüyorum)
Scrum Rolleri:
  • Product Owner: Geliştirilecek olan ürünün sahibidir. Ekip içerisinde müşteriyi temsil eder.
  • Scrum Master: Sürecin doğru uygulandığından emin olmakla sorumludur. Şirket yönetimini yönetmekle sorumludur.
  • Development Team: Süreç sonunda ortaya çıkarılacak ürünün geliştirilmesinden sorumludur.
Scrum Toplantıları:
  • Sprint Planning Toplantısı: Sprint-daha sonraki yazılarımızda detaylı olarak anlatmaya çalışacağız- 2-4 haftalık Scrum iterasyonlarını tanımlamaktadır. Bu toplantıda bu süre içerisinde yapılacak aktiviteler planlanmaktadır.
  • Daily Scrum Toplantısı: Günlük olarak takımın bir araya geldiği toplantıdır.
  • Sprint Review Toplantısı: Her sprint sonunda ekibin ortaya koyduğu ürünün değerlendirildiği toplantıdır.
  • Sprint Retrospective Toplantısı: Süreçle ilgili iyi veya kötü uygulanan aktivitelerin değerlendirildiği toplantıdır.
Scrum Çıktıları:
  • Product Backlog: Ürün özelliklerinin listesidir.
  • Sprint Backlog: Her sprint'te yapılacak olan görevlerin listesidir.
  • Burndown Chart: Sürecin gözlenmesini sağlar. Günlük bazda kalan iş miktarını gösterir.
Son olarak şunu söylemek gerekir ki, Scrum bir kültürdür. Daha önce de belirttiğimiz gibi Scrum anlaşılması kolay olsa da, uygulanması ve uzmanlaşması da bir o kadar zor bir süreçtir. Scrum metodolojisi uygulanmak isteniyorsa, kurumsal dönüşüm kaçınılmazdır.

Bir sonraki yazımızda (Scrum Series 2: Scrum Rolleri) Scrum Rollerinin detaylarına bakacağız.

Görüşmek üzere.