152
1

Siperden - · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

  • Upload
    buianh

  • View
    244

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

1

Page 2: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

2

Siperden

Scrum ve XP

Biz Nasıl Yapıyoruz?

Page 3: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

3

Contents .................................................................................................................................................... 1

Çevirenin Önsözü ...................................................................................................................... 8

Bilgilendirme ............................................................................................................................ 9

Jeff Sutherland’in Önsözü ........................................................................................................ 10

Mike Cohn’un Önsözü ............................................................................................................. 12

Önsöz: Scrum işe yaradı! ......................................................................................................... 13

İkinci Basımın Önsözü.............................................................................................................. 14

Bölüm ........................................................................................................................................ 15

Bir ............................................................................................................................................. 15

Giriş ....................................................................................................................................... 15

Açıklama ................................................................................................................................ 16

Neden Yazdım? ....................................................................................................................... 16

Ama Scrum Ne ki? ................................................................................................................... 17

Bölüm ........................................................................................................................................ 18

İki .............................................................................................................................................. 18

Ürün İş Listesi’ni nasıl oluştururuz? .......................................................................................... 18

Ürün İş Listesi’ndeki Diğer Alanlar ............................................................................................ 20

Ürün İş Listesi’ni İş Birimine(Müşteriye) Anlamlı Gelecek Seviyede Tutma .................................. 21

Bölüm ........................................................................................................................................ 22

Üç.............................................................................................................................................. 22

Sprint Planlama’ya Nasıl Hazırlanıyoruz? .................................................................................. 22

Bölüm ........................................................................................................................................ 24

Dört ........................................................................................................................................... 24

Sprint Planlama’yı Nasıl Yapıyoruz? .......................................................................................... 24

Ürün Sahibi Neden Katılmak Zorunda? ..................................................................................... 25

Kalitenin Neden Pazarlığı Olmaz? ............................................................................................. 26

Bitmeyen Sprint Planlama Toplantıları! .................................................................................... 28

Sprint Planlama Toplantısı’nın Yapısı ........................................................................................ 29

Sprint Uzunluğunu Belirleme ................................................................................................... 30

Sprint Hedefi’ni Belirleme........................................................................................................ 31

Sprint’e Hangi İşlerin Alınacağını Belirleme ............................................................................... 32

Sprint’e Hangi İşlerin Alınacağı Konusunda Ürün Sahibi’nin Etkisi Nedir? .................................... 33

Sprint’e Hangi İşlerin Alınacağına Geliştirme Takımı Nasıl Karar Verir?........................................ 34

İçgüdüsel Karar Verme ............................................................................................................ 34

Geliştirme Takımı’nın Hızını Hesaplama .................................................................................... 35

Page 4: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

4

İşlerin Büyüklüğünü Belirlerken Hangi Tekniği Kullanıyoruz? ...................................................... 39

İndeks Kartlarını Neden Kullanıyoruz? ...................................................................................... 40

Bitti Tanımı ............................................................................................................................. 44

Planlama Poker ile Efor Tahmini............................................................................................... 44

Kullanıcı Hikayelerini Netleştirme............................................................................................. 47

Kullanıcı Hikayelerini Küçük Parçalara Bölme ............................................................................ 48

Kullanıcı Hikayelerini İşlere Bölme............................................................................................ 49

Günlük Scrum için Yer ve Zaman Belirleme ............................................................................... 51

Çizgiyi Nereye Çekmeliyiz?....................................................................................................... 51

Teknik Kullanıcı Hikayeleri ....................................................................................................... 52

Hata Takip Sistemi mi? Ürün İş Listesi mi? ................................................................................ 55

Sprint Planlama Toplantısı Sonunda Biter ................................................................................. 56

Bölüm ........................................................................................................................................ 57

Beş ............................................................................................................................................ 57

İletişimi Nasıl Gerçekleştiriyoruz?............................................................................................. 57

Bölüm ........................................................................................................................................ 59

Altı ............................................................................................................................................ 59

Sprint İş Listesi’ni Nasıl Oluştururuz? ........................................................................................ 59

Sprint İş Listesi’nin Formatı...................................................................................................... 59

Scrum Duvarı Nasıl Kullanılır? .................................................................................................. 61

Örnek 1: İlk Günlük Scrum’dan sonra ....................................................................................... 61

Örnek 2: Birkaç gün sonra........................................................................................................ 63

Burn-down Grafik Nasıl Oluşturulur? ........................................................................................ 64

Scrum Duvarı’nda Uyarı İşaretleri............................................................................................. 65

Takip Edilebilirlik? ................................................................................................................... 66

Tahminler Günlük mü, Saatlik mi Olmalı? ................................................................................. 67

Bölüm ........................................................................................................................................ 69

Yedi ........................................................................................................................................... 69

Takım Odasını Ayarlama .......................................................................................................... 69

Takım Beraber Otursun! .......................................................................................................... 70

Ürün Sahibi’ni Yakında Tutun ................................................................................................... 72

Müdürleri ve Koçları Yakında Tutun.......................................................................................... 72

Bölüm ........................................................................................................................................ 74

Sekiz .......................................................................................................................................... 74

Günlük Scrum’ları Nasıl Yapıyoruz? .......................................................................................... 74

Scrum Duvarı’nı Güncelleme.................................................................................................... 75

Page 5: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

5

Geç Gelenlerle Başa Çıkma ...................................................................................................... 76

“Bugün Ne Yapacağımı Bilmiyorum”cularla Başa Çıkma ............................................................. 76

Bölüm ........................................................................................................................................ 79

Dokuz ........................................................................................................................................ 79

Sprint Demo’larını Nasıl Yapıyoruz?.......................................................................................... 79

Bütün Sprint’lerin Bir Demo’yla Bitmesinde Neden Israr Ediyoruz? ............................................ 79

Sprint Demo’lar için Kontrol Listesi........................................................................................... 80

Demosu Yapılamayacak İşler.................................................................................................... 81

Bölüm ........................................................................................................................................ 82

On ............................................................................................................................................. 82

Sprint Retrospektifleri Nasıl Yapıyoruz? .................................................................................... 82

Neden Bütün Takımların Retrospektif Yapması Konusunda Israr Ediyoruz? ................................. 82

Retrospektifleri Nasıl Organize Ederiz? ..................................................................................... 83

Takımlar Arası Bilgi Paylaşımı ................................................................................................... 85

Değişmeli ya da Değişmemeli .................................................................................................. 86

Retrospektifte Ortaya Çıkan Örnekler....................................................................................... 86

“Kullanıcı hikayelerini daha küçük kullanıcı hikayelerine ya da işlere bölmek için daha fazla zaman ayırmalıyız” ............................................................................................................................ 86

“Dikkat dağıtan şeyler”............................................................................................................ 87

“Sprint’e fazla iş alıyoruz ve aldıklarımızın yarısını bitirebiliyoruz” .............................................. 87

“Ofisimiz çok gürültülü ve dağınık”........................................................................................... 87

Bölüm ........................................................................................................................................ 89

Onbir ......................................................................................................................................... 89

Sprint’ler arasında boş zaman .................................................................................................. 89

Bölüm ........................................................................................................................................ 92

Oniki.......................................................................................................................................... 92

Teslim planlamasını ve sabit fiyat anlaşmalarını nasıl yapıyoruz?................................................ 92

Kabul Eşiklerinizi Belirleyin ...................................................................................................... 92

En Önemli İş Maddelerinin Zaman Tahmini............................................................................... 94

Takım Hızını Tahmin Etme ....................................................................................................... 95

Her Şeyi Teslim Planında Birleştirme ........................................................................................ 96

Teslim Planını Uyarlama .......................................................................................................... 98

Bölüm ........................................................................................................................................ 99

Onüç.......................................................................................................................................... 99

Scrum ve XP’yi Beraber Nasıl Kullanıyoruz?............................................................................... 99

Eşli Programlama .................................................................................................................... 99

Page 6: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

6

Test Yönelimli Geliştirme(Test Driven Development)................................................................100

Yeni Projelerde TYG ...............................................................................................................102

Eski Projelerde TYG ................................................................................................................102

Artımlı Tasarım ......................................................................................................................103

Sürekli Entegrasyon ...............................................................................................................103

Ortak Kod Sahipliği.................................................................................................................104

Bilgilendirici Çalışma Alanı ......................................................................................................104

Kodlama Standartları .............................................................................................................105

Sürdürülebilir Hız / Enerjik İş...................................................................................................105

Bölüm .......................................................................................................................................107

Ondört......................................................................................................................................107

Nasıl Test Yapıyoruz? .............................................................................................................107

Muhtemelen Kabul Testi Aşamasından Kurtulamazsınız ...........................................................107

Kabul Testi Aşamasını En Aza İndirme .....................................................................................109

Testçileri Scrum Takımı’nın İçine Yerleştirerek Kaliteyi Artırma .................................................109

Testçi, Onay Veren Adam .......................................................................................................110

Test Yapılacak Bir şey Olmadığında Testçi Ne Yapar? ................................................................110

Sprint’te Daha Az İş Yaparak Kaliteyi Artırma ...........................................................................112

Kabul Testi Aşaması, Sprint’in Bir Parçası mıdır? ......................................................................112

Sprint Döngüleri mi, Kabul Testi Döngüleri mi? ........................................................................113

Yaklaşım 1: “Eski Kullanıcı Hikayelerini Üretim Ortamına Almadan Yeni Kullanıcı Hikayelerini Geliştirmeye Başlamayın” .......................................................................................................115

Yaklaşım 2: “Yeni Kullanıcı Hikayeleri Geliştirilebilir Fakat Eski Kullanıcı Hikayeleriyle Karşılaştırılıp Öncelikleri Belirlenmelidir” .....................................................................................................116

Kötü Yaklaşım: “Yeni Kullanıcı Hikayeleri Geliştirmeye Odaklanma” ..........................................116

Zincirinizdeki En Zayıf Halkayı Geçmeye Çalışmayın..................................................................117

Gerçeğe Dönüş ......................................................................................................................118

Bölüm .......................................................................................................................................119

Onbeş .......................................................................................................................................119

Birden Fazla Scrum Takımı’yla Nasıl Çalışıyoruz? ......................................................................119

Kaç Scrum Takımı oluşturulacak? ............................................................................................119

Sanal Takımlar .......................................................................................................................120

İdeal Takım Büyüklüğü ...........................................................................................................122

Sprint’ler Senkronize mi, Değil mi? ..........................................................................................123

Takım Lideri Rolü Neden Var? .................................................................................................124

Takımları Nasıl Belirleriz?........................................................................................................125

Page 7: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

7

Uzmanlık Takımları mı? ..........................................................................................................126

Yaklaşım 1: Alanlarına Göre Uzman Takımlar ...........................................................................127

Yaklaşım 2: Çapraz Takımlar....................................................................................................128

Sprint’ler Arası Takımlar Yeniden Ayarlanmalı mı, Ayarlanmamalı mı?.......................................129

Yarı Zamanlı Takım Üyeleri .....................................................................................................130

Scrum’ların Scrum’ını Nasıl Yapıyoruz? ....................................................................................131

Ürün Seviyesinde Scrum’ların Scrum’ı .....................................................................................132

Şirket Seviyesinde Scrum’ların Scrum’ı ....................................................................................133

Günlük Scrum’ları Boş Geçme .................................................................................................134

Yangın Söndüren Takımlar ......................................................................................................135

Ürün İş Listesi’ni Bölmek ya da Bölmemek? .............................................................................137

Strateji 1: Bir Ürün Sahibi ve Bir Ürün İş Listesi.........................................................................137

Strateji 2: Bir Ürün Sahibi ve Birden Fazla Ürün İş Listesi...........................................................139

Strateji 3: Birden Fazla Ürün Sahibi ve Her Ürün Sahibi için Bir Ürün İş Listesi ............................140

Kod Branch’leme....................................................................................................................141

Birden Fazla Takımla Retrospektif ...........................................................................................142

Bölüm .......................................................................................................................................144

OnAltı .......................................................................................................................................144

Dağıtık Takımlarla Nasıl Çalıştık? .............................................................................................144

Üretimin Bazı Aşamalarının Ülke Dışında Gerçekleştirilmesi (Offshoring) ...................................145

Evden Çalışan Takım Üyeleri ...................................................................................................146

Bölüm .......................................................................................................................................148

OnYedi......................................................................................................................................148

Scrum Master Kontrol Listesi ..................................................................................................148

Sprint Başlangıcı ....................................................................................................................148

Her gün .................................................................................................................................148

Sprint Sonu............................................................................................................................149

Bölüm .......................................................................................................................................150

OnSekiz ....................................................................................................................................150

Son Sözler .............................................................................................................................150

Okuma Önerileri ....................................................................................................................151

Yazar Hakkında ......................................................................................................................152

Page 8: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

8

Çevirenin Önsözü

“Kanban ve Scrum, İkisinin de En İyisini Yapmak”, “Siperden Yalınlık, Kanban ile Büyük Ölçekli

Projelerin Yönetimi” kitaplarından sonra Henrik’in bir başka kitabını çevirmek çok büyük bir zevkti.

Çeviklik, Yalınlık, Scrum, Kanban, eXtreme Programming(XP) konularında ne yazık ki Türkçe kaynak

sayısı yok denilecek kadar az! Bu açığın kapatılması gerektiğini düşünüyorum. Ülke olarak İngilizce

bilen kişi oranımız çok düşük. İnsanların bir konuyu öğrenebilmesi için ilk önce İngilizce öğrenmesi

gerekiyor. Gerekmemeli! Eğitim sistemimizde böyle büyük bir yanlış var! Tek başıma bu yanlışı

düzeltemem fakat bireysel çaba gösterebilirim. Bu büyük yanlışın yanında bireyler olarak bizimde

yanlışımız var. Birey olarak yaşıyoruz! Halbuki toplum olarak yaşamalıyız! Kendimiz için yaşıyoruz ve

kendimizin dışında hiçbir şey önemli değil!

Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse, o zaman ülkemizin insanı

için bir şeylerin yolunu kolaylaştırmış oluruz.

Diğer kitaplara ulaşabileceğiniz adres: http://yilmazcihan.com/ceviri-kitaplarim

Cihan Yılmaz

Mart 2017 – İstanbul

[email protected] http://yilmazcihan.com

Page 9: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

9

Bilgilendirme

Kitabın ilk halini sadece bir hafta sonunda yazdım. Elbette yoğun bir hafta sonuydu. %150 odaklanma

etkisi :)

Eşim Sophia, çocuklar Dave ve Jenny’ye o hafta sonu asosyalliğime katlandıkları için teşekkür ederim.

Ayrıca o hafta sonu bize gelen ve ailemle ilgilenen Sophia’nın annesi ve babası, Eva’ya ve Jörgen’e

teşekkür ederim.

Düzeltmelere ve kitabı iyileştirmeme yardım eden Crisp’teki iş arkadaşlarıma ve Scrum Users Yahoo

grubundaki kişilere teşekkür ederim.

Son olarak sürekli olarak geribildirimlerde bulunan bütün okuyucularıma teşekkür ederim. Çevik

yazılım geliştirmeye bu kitap aracılığıyla bir şans verdiğinizi duymaktan oldukça mutlu oldum.

Page 10: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

10

Jeff Sutherland’in Önsözü

Takımlar, Scrum temellerini bilmelidir. Ürün İş Listesi nasıl oluşturulur ve Ürün İş Listesi’ndeki iş

maddelerinin büyüklük tahminleri nasıl yapılır? Ürün İş Listesi’ni, Sprint İş Listesi’ne nasıl

dönüştürürsünüz? Burn-down grafiği nasıl oluşturursunuz ve takımın hızını nasıl hesaplarsınız?

Henrik’in kitabı başlangıç için güzel bir seçimdir. Takımların nasıl iyi Scrum yapabileceğini anlatır.

Yatırım almak isteyen takımlar için Scrum’ı iyi yapmak daha önemli hale geliyor. Bir risk sermayesi

grubunun Çevik Koçu olarak, grubun, Çeviklik Pratikleri iyi yapan, Çevik şirketlere yatırım yapma

hedeflerine erişmelerinde yardımcı olurum. Yani çalıştığım yatırım şirketi, Çevik girişimcileri

destekler. Grubun büyük ortağının bütün şirketlere sorduğu soru şudur: “Takımınızın hızını biliyor

musunuz?” Şirketler, bu soruyu cevaplamakta zorlanıyorlar. Gelecekteki yatırım fırsatları, Geliştirme

Takımlarının, kendi -yazılım geliştirme- hızlarını bilmelerini gerektirecektir.

Bu neden çok önemli? Eğer takımlar hızlarını bilmiyorlarsa, Ürün Sahibi, güvenilir teslim tarihleri olan

bir ürün yol haritası oluşturamaz. Belirli olmayan teslim tarihleriyle, şirket batabilir ve yatırımcılar

para kaybedebilir.

Bu problemle büyük ya da küçük, eski ya da yeni, yatırım alan ya da almayan, tüm şirketler karşılaşır.

Londra’daki bir konferansta Google’ın Scrum uygulamaya başlamasını tartıştık. Konferansa kat ılan

135 kişiye kaçının Scrum uyguladığını sordum ve 30 kişi olumlu cevap verdi. Daha sonra Nokia

standartlarında artımlı geliştirme yapıp yapmadıklarını sordum. Artımlı geliştirme, Çevik Bildiri’nin

temelidir(Çalışan yazılımı erken ve sık sık teslim etmek). Yüzlerce Scrum takımının yıllardır yaptığı

retrospektiflerden sonra Nokia artımlı geliştirme için bazı standartlar geliştirdi:

İterasyonlar(döngüler), sabit bir süreye sahip olmalıdır ve altı haftadan kısa olmalıdır.

Döngü sonunda kod, kalite güvencesini(QA) sağlayan kişiler tarafından test edilmelidir ve çalışır

olmalıdır.

Scrum yaptığını söyleyen 30 kişiden sadece yarısı Nokia standartlarında Çevik Bildiri’nin birinci ilkesini

yapabildiklerini söylediler. Daha sonra Nokia standartlarını karşılayıp karşılamadıklarını sordum:

Page 11: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

11

- Scrum Takımı’nın bir Ürün Sahibi olmalıdır ve Geliştirme Takımı bu kişinin kim olduğunu

bilmelidir.

- Ürün Sahibi, Ürün İş Listesi’ne sahip olmalıdır.

- Ürün İş Listesi’ndeki işlerin büyüklüğü Geliştirme Takımı tarafından belirlenmiş olmalıdır.

- Sprint içinde, Geliştirme Takımı dışından biri takımın işine karışmamalıdır.

Scrum yapan 30 kişiden sadece üçü yukarıdakileri karşılayabildiklerini söylediler. Çalıştığım yatırım

şirketinden sadece bu üç takım yatırım desteği alabilecektir.

Henrik’in kitabının değeri şudur; Henrik’in ana hatlarını belirlediği pratikleri takip ederseniz, Ürün İş

Listesi’ne, Ürün İş Listesi’ndeki maddelerin büyüklüklerine, burn-down grafiğe sahip olacaksınız,

birçok temel pratiğin yanında takımınızın hızını bi leceksiniz. Nokia standartlarında Scrum yapıyor ve

yatırım yapmaya değer olacaksınız. Eğer girişimci , küçük bir şirketseniz, büyük bir yatırım şirketinden

yatırım desteği bile alabilirsiniz. Belki yazılım geliştirmenin geleceği olacaksınız ve yazılım

geliştirmenin gelecek nesline liderlik ediyor olacaksınız.

Dr. Jeff Sutherland

Page 12: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

12

Mike Cohn’un Önsözü

Scrum ve XP, ikisi de takımların döngü(iterasyon) sonunda çalışır kod teslim etmelerini gerekli kılar.

Bu döngüler, kısa ve süresi sabit döngülerdir. Kısa ve sabit bir sürede çalışan kodun teslim edilmesi,

Scrum ve XP takımlarının teoriler için zamanı olmadığı anlamına gelir. UML diyagramının mükemmel

olması, mükemmel ihtiyaç analiz dokümanı için çabalamazlar ya da hayal edilebilen tüm değişiklikleri

karşılayacak kodu yazmak için uğraşmazlar. Bunun yerine, Scrum ve XP takımları bir şeyleri bitirmeye

odaklanırlar. Bu takımlar, yol boyunca hatalar yapabileceklerini kabul ederler. Fakat aynı zamanda bu

hataları bulmanın yolunun teorik analiz ve tasarım seviyesinde olamayacağının farkındadırlar. Derine

dalarlar, ellerini kirletirler ve ürünü geliştirmeye başlarlar.

Bu kitabı diğerlerinden ayıran aynı motivasyondur. Bu motivasyon, işi teorikleştirme değil yapmaktır.

Henrik Kniberg’in bu odaklanmayı anladığı daha başından bellidir. Scrum’ın ne olduğuna dair uzun bir

açıklama yapmaz. Bu açıklama için bizi basit bir internet sitesine yönlendirir. Bunun yerine, takımının

Ürün İş Listesi’ni nasıl yönettiğini ve nasıl çalıştığını anlatır. Buradan başlayarak diğer bütün öğele rin

ve pratiklerin üzerinden geçer. Teori yok. Gönderme yok. Dipnot yok. Hiçbirine ihtiyaç yok. Henrik’in

kitabı Scrum’ın neden çalıştığını anlatan felsefi bir kitap değildir. Bu kitap, iyi çalışan Çevik bir takımı

anlatır.

Bu yüzden kitabın alt başlığı “Biz Nasıl Yapıyoruz”. Sizin Scrum yapış şekliniz farklı olabilir, bu,

Henrik’in Scrum yapış şeklidir. Başka bir takımın nasıl Scrum yaptığı bizim için neden önemli olsun

sorusunu sorabilirsiniz. Önemsemelisiniz çünkü diğerleri tarafından nasıl yapıldığını duyarak daha iyi

Scrum yapabilirsiniz, özellikle iyi yapanları dinlemelisiniz. En iyi Scrum yapış şekilleri diye bir liste yok

ve olmayacak. Çünkü takım ve proje şartları herkes için farklıdır ve bunlar diğer her şeyi gölgede

bırakır. En iyi pratikler yerine sadece iyi pratikleri ve bu pratiklerin hangi şartlar altında geliştirildiğini

bilmeye ihtiyacımız vardır. Başarılı takımların hikayelerini ve işlerini nasıl yaptıklarını yeterince

okuduktan sonra Scrum ve XP yaparken karşınıza çıkan engellere hazır ol acaksınız.

Henrik, iyi pratikleri ve içinde bulunduğu şartları anlatır ve bizim siperlerimizde nasıl daha iyi Scrum

ve XP yapabileceğimizi öğretir.

Mike Cohn,

Agile Estimating and Planning ve User Stories Applied for Agile Software Development yazarı.

Page 13: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

13

Önsöz: Scrum işe yaradı!

Scrum işe yaradı, en azından bizim için(yani adından burada bahsetmeyeceğim Stockholm’deki bir

müşterim için). Umarım sizin de işinize yarar. Belki bu kitap size yardımcı olur.

Bir geliştirme metodolojisinin*(özür dilerim Ken, çerçevesinin) kitabına uygun şekilde yapılarak işe

yaradığını ilk defa gördüm. Tak ve çalıştır. Hepimiz (geliştiriciler, testçiler ve yöneticiler) mutluyuz.

Zor bir durumdan çıkmamıza yardımcı oldu. Pazardaki ciddi dalgalanma ve çalışan sayısının

azalmasına karşın odağı korumamızı sağladı.

Şaşırdığımı söylememem gerek fakat şaşırdım. Başlangıçta birkaç kitap bitirdikten sonra Scrum iyi

göründü ama neredeyse gerçek olacak kadar iyi göründü. Yani haklı olarak biraz şüpheciydim. Bir yıl

Scrum yaptıktan sonra takımdaki birçok kişi gibi ben de oldukça etkilendim. Bundan sonra

çalışacağım projelerde ilk tercihim Scrum olacak.

*Ken Schwaber, Scrum’ın yaratıcılarında biri, Scrum’ın bir metodoloji olmadığını, sınırları olan bir

çerçeve olduğunu söyler.

Page 14: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

14

İkinci Basımın Önsözü

Sekiz yıl geçti ve bu kitap hala sevilen ve beğenilen bir kitap. Bu küçük kitabın yapacağı etkiyi hayal

dahi etmemiştim. Kitabı, Çevik yazılım geliştirme için birincil rehberleri olarak kullanan takımlarla,

yöneticilerle, koçlarla ve eğitmenlerle hala karşılaşıyorum.

Asıl konu 2007’den beri ben birçok şey öğrendim. Yani kitabın bir güncellemeye ihtiyacı var.

Kitap yayınlandığından beri Çeviklik ve Yalınlık konusunda uzman birçok düşünce lideriyle çalışma

şansı elde ettim, hatta bazıları akıl hocam oldu. Jeff Sutherland, Mary ve Tom Poppendieck, Jerry

Weinberg, Alistair Cockburn, Kent Beck, Ron Jeffries, ve Jeff Patton çok teşekkürler. Bundan daha iyi

danışman grubu hayal edemiyorum.

Ayrıca pratik hayatlarında bu fikirleri uygulamak isteyen birçok şi rkete yardımcı olma şansı elde

ettim. Bu şirketlerden bazıları krizdeydi bazılarıysa oldukça başarılı olan fakat daha iyi olmak isteyen

şirketlerdi. Sonuç olarak oldukça etkileyici bir maceraydı.

Bu eski kitabı yeniden okuduğumda birçok şeyin hala geçerli olduğunu görmek beni şaşırttı. Fakat

bazı sayfaları yırtıp atmak ve kendi kendime “Ne *&€# bir şey düşünüyordum? Siz böyle yapmayın,

daha iyi bir yolu var” demek istiyorum.

Kitap hayattan bir durum çalışması olduğuna göre hikayeyi değiştiremem. Ne olduysa oldu! Fakat

bunun üzerine yeni yorumlarda bulunabilirim.

Yani ikinci basımda bu yorumları göreceksiniz, tıpkı sinema filminde yönetmenin seçtikleri gibi. Kitabı

okurken omzunuzda benim olduğumu düşünün, bir şeylere yorum yapıyorum, sizi neşelendiriyorum.

Ayrıca çalıştığım şirketlerden bazı örneklerde vereceğim, çoğunlukla Spotify(bu aralar zamanımın

çoğu orada geçiyor) fakat başka şirketler de olacak.

Keyfini çıkarın!

Henrik, 2015 Mart

İşte yorumlarım böyle görünecek. Bu önsöz ve yorumlar hariç kitap ilk halindeki gibidir, değiştirilmemiş. Bu gölgeli kutular benim yorumlarım ve 8 yılda öğrendiklerimden yansıyanlardır.

Page 15: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

15

Bölüm

Bir

Giriş

Organizasyonunuzda Scrum kullanmaya başlayacak olabilirsiniz ya da birkaç aydır Scrum yapıyor

olabilirsiniz. Scrum temelini anladınız, kitapları okudunuz ve belki de Scrum Master sertifikası bile

aldınız.

Tebrikler!

Fakat kafanız karışık.

Ken Schwaber’e göre Scrum bir metodoloji değil, bir çerçeve. Bunun anlamı Scrum, adım adım ne

yapmanız gerektiğini size söylemeyecek. İyi haber, ben, nasıl Scrum yaptığımı acı veren detaylı bir

şekilde anlatacağım. Kötü haber, bu sadece benim Scrum yapış şeklim, yani siz aynı şekilde

yapmalısınız diye bir şey yok. Hatta farklı bir durumda benim yapış şeklim de değişiklik gösterebilir.

Scrum’ın gücü ve zayıflığı, içinde bulunduğunuz belirli duruma göre onu adapte etmenizdir.

Benim Scrum’a olan yaklaşımım, bir yıldır 40 kişilik geliştirme takımıyla yaptığımız deneyin

sonucudur. Şirket zor durumdaydı, fazla mesai, ciddi kalite problemleri, sürekli yangın hali ve

kaçırılan teslim tarihleri vardı. Şirket Scrum uygulamaya karar verdi ve uygulamaya yardımcı olmam

için beni çağırdı. Geliştirme takımındaki birçok kişi için Scrum sözcüğü, günlük işlerinde hiç

kullanmadıkları, koridorda duydukları havalı bir ifadeydi.

Page 16: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

16

Bir yıldan uzun bir süredir şirketteki bütün bölümlerde Scrum uyguluyoruz. Farklı büyüklüklerde(3-12

kişi) takımlar oluşturduk, farklı Sprint uzunlukları(2-6 hafta) denedik, Bitti Tanımı’nın farklı

uygulanışlarını, Ürün İş Listesi’nin ve Sprint İş Listesi’nin farklı formatlarını(Excel, Jira, indeks kart),

farklı test stratejilerini, demo yapmanın farklı yollarını, birden fazla Scrum Takımı’nı senkronize

etmenin farklı yollarını denedik. Ayrıca XP pratiklerini(Sürekli Entegrasyonun farklı yollarını, Eşli

Programlama ve Test Yönelimli Geliştirme) ve bu pratikleri Scrum’la nasıl birlikte yapabileceğimizi

deneyimledik.

Bu, süresiz öğrenme sürecidir yani hikaye burada bitmiyor. Eğer Sprint Retrospektifleri yapmaya

devam ederlerse, bu şirket öğrenmeye ve içinde bulundukları durumda Scrum’ı en iyi nasıl

uygulayabileceklerine dair yeni fikirler edinmeye devam edecek.

Açıklama

“Doğru şekilde” Scrum yapmayı anlatma iddiasında değilim! Sadece Scrum yapılış şekillerden birini

anlatacağım. Bir yıldan uzun bir sürede deneyimlediklerimi paylaşacağım. Belki yaptığımız her şey

sizin için yanlış bile olabilir.

Bu kitaptaki her şey benim kişisel görüşümü yansıtır. Bu kitaptakiler Crisp’in ya da müşterimin resmi

görüşleri değildir. Bu nedenle herhangi bir üründen ya da kişiden bahsetmeyeceğim.

Neden Yazdım?

Scrum’ı öğrenirken, Scrum ve Çeviklikle ilgili kitapları okudum, sitelerden ve forumlardan Scrum’la

ilgili bilgiler edindim, Ken Schwaber’den sertifika aldım, sorularımla onu kızdırdım ve iş

arkadaşlarımla fikir alışverişlerine çok zaman harcadım. En değerli bilgi kaynaklarından biri gerçek

savaş hikayeleriydi. Savaş hikayeleri, ilkeleri ve pratikleri, bu ilkelerin ve pratiklerin gerçek hayata

uyarlamasıdır, “gerçekte nasıl yapıldığıdır”. Savaş hikayeleri, aynı zamanda Scrum’a yeni

başlayanların yaptıkları hataları tanımlamamı sağladı ve bunları yapmamı engelledi.

Savaş hikayelerinden birçok şey öğrendim. İşte benim savaş hikayem, umarım siz de benim

hikayemden bir şeyler öğrenebilirsiniz.

Page 17: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

17

Umarım benzer durumda olanlar işlerine yarayacak bilgileri bu kitapta bulurlar ve geribildirimde

bulunup bana bilgi verebilirler.

Ama Scrum Ne ki?

Scrum’ı ve XP’yi daha önce hiç duymadınız mı? Bu durumda aşağıdaki bağlantıları bakmalısınız.

● http://agilemanifesto.org/

● http://www.mountaingoatsoftware.com/scrum

● http://www.xprogramming.com/xpmag/whatisxp.htm

Eğer bunu yapamayacak kadar sabırsızsanız okumaya devam edebilirsiniz. Kitapta ilerledikçe Scrum

jargonunu açıklıyorum, bilginiz olmamasına rağmen çekici gelebilir.

Scrum Kılavuzu’na bakmayı unutmayın. Jeff Sutherland ve Ken Schwaber tarafından oluşturulan Scrum’ın resmi tanımıdır. http://www.scrumguiedes.org

Page 18: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

18

Bölüm

İki

Ürün İş Listesi’ni nasıl oluştururuz?

Ürün İş Listesi, Scrum’ın kalbidir, her şeyin başladığı yerdir.

Ürün İş Listesi, temelde müşteri ihtiyaçlarının, kullanıcı hikayelerinin, işlevselliklerin(ya da siz adına

ne diyorsanız) önceliklendirilmiş bir listesidir. Müşterinin terminolojisi kullanılarak ifade edilmiş,

müşterinin istediği şeylerin listesi.

Biz, bunlara kullanıcı hikayeleri ya da sadece iş maddeleri diyoruz.

Bizim kullanıcı hikayelerinde aşağıdaki alanlar bulunuyor:

● No: Otomatik artan ve tekrar etmeyen bir numaradır. Eğer kullanıcı hikayelerine yeni ad

verirsek onları kaybetmeyiz, bu numaradan takip edebiliriz.

● Adı: Hikayeyi anlatan kısa, tanımlayıcı bir ifadedir. Örneğin, “işlem hareketlerinin tarihçesini

görme”. Geliştiriciler ve Ürün Sahibi’nin anlayabileceği, diğer kullanıcı hikayeleriyle

karıştırılmayacak kadar net olmalı. Ortalama 2-10 sözcük.

● Önem: Bu kullanıcı hikayesinin Ürün Sahibi için önemi derecesi. Örnek: 10, 150, Yüksek

ifadeleri çok önemli demek olabilir. 3, 50, Düşük ifadeleri o kadar da önemli değil demek

olabilir.

Hmm, hayır! Ürün İş Listesi, başlangıç noktası değildir. İyi bir ürün müşterinin ihtiyacıyla ve bu

ihtiyacın nasıl karşılanabileceğine öngören vizyonla başlar. Ürün İş Listesi, bu vizyonun, somut,

teslim edilebilir parçalara kadar detaylandırılmasının sonucudur. Vizyondan Ürün İş Listesi’ne

kadar olan yolculuk oldukça karmaşık olabilir. Aradaki boşluğu doldurmak için birçok teknik

kullanılabilir. Örneğin kullanıcı hikayesi haritası(Jeff Patton’ın kitabını okuyun, mükemmel), Yalın

UX, etki haritası oluşturma ve daha fazlası. Vizyon ve Ürün İş Listesi’ndeki boşluğu doldurmak için

en baştan çok büyük ve detaylı bir analizi bahane olarak kullanmayın. Ürün İş Listesi’nin zamanla

evrimleşmesine izin verin.

Page 19: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

19

“Öncelik” ifadesini bilerek kullanmıyorum çünkü öncelik sıralamasında 1 en yüksek

öncelik demektir. Eğer bir işin önceliğini 1 olarak belirlerseniz ve sonra elinize daha

öncelikli bir iş gelirse önceliğini 0(sıfır) vermek zorunda kalırsınız!

● İlk Büyüklük: İşi gerçekleştirmek için takımın başlangıçta tahmin ettiği eforun büyüklüğü.

Birimi hikaye puanıdır ve kabaca ideal adam/gün’e denk gelir.

Takıma şunu sorun: Bir sürü yiyecekle odaya kilitlenmiş ve hiç rahatsız edilmemiş

olsalar, ideal sayıda kişiyle, bu işi kaç günde bitirebilirler. Eğer cevap üç kişiyle dört

günse o zaman ilk büyüklük 12 hikaye puanıdır.

Önemli olan nokta mutlak tahminler yapmak değildir, önemli olan nokta göreceli

tahminler yapmaktır.

● Demo: Sprint Değerlendirme Toplantısı’nda bu işin nasıl gösterilebileceğine dair kısa bir

açıklamadır. Temelde iş maddesinin nasıl çalışması gerektiğini anlatır ve testi buna göre

yaparız. “Butona tıkla, seçimi yap, şimdi A penceresi açılmalı”.

Eğer Test Yönelimli Geliştirme(TDD) ile uğraşıyorsanız, bu tanımlamayı kodunuzu

geliştirmek için kullanabilirsiniz.

● Açıklama: Herhangi bir bilgi, açıklama, referans vb.

Ürün İş Listesi(örnek)

No Adı Önem Büyüklük Demo Açıklama

1 Mevduat 30 5

Giriş yap, mevduat sayfasını aç, 10 TL yatır. Bakiye sayfasına git ve bakiyenin 10 TL artıp artmadığını kontrol et.

UML diyagramına ihtiyaç var. Şimdilik şifrelemeye ihtiyaç yok.

2

İşlem hareketlerinin tarihçesini görme

10 8

Giriş yap, mevduat hesabına para yatır. “İşlem hareketlerine” git, yeni yapılan işlemi kontrol et.

Veri tabanına çok gidip gelmemek için sayfalama yapısı kullan. Kullanıcılar sayfasındakine benzer bir tasarım yap.

Ürün İş Listesi’nde birçok alan kullanmayı denedik fakat günün sonunda elimizde sadece bu altı alan

kaldı. Sprint’ten Sprint’e fark ettik ki sadece bu alanları güncel tutuyoruz.

Page 20: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

20

Ürün İş Listesi’ni bir excel dokümanı olarak saklarız ve ortak paylaşıma açarız. Böylece herkes aynı

anda girip bir şeyler ekleyebilir. Ürün Sahibi, bu dokümanın sahibidir fakat diğer kullanıcıların da bir

şeyler eklemesini isteriz. Geliştiriciler çoğu zaman bu dokümanı açar ve unuttukları bir şeyi

hatırlamaya çalışırlar ya da işin büyüklüğünü değiştirmek isterler vs.

Aynı sebepten dolayı bu dokümanı versiyon kontrol sistemine eklemeyiz. Paylaşımlı bir sürücüde

tutarız bu dokümanı böylece birçok kullanıcı aynı anda dokümanı kullanabilir.

Kullandığımız bütün diğer araçlar versiyon kontrol sisteminde tutulur.

Ürün İş Listesi’ndeki Diğer Alanlar

Ürün İş Listemizde başka alanlar da bulunur. Bu alanları, Ürün Sahibi’nin öncelikleri belirleme işini

kolaylaştırmak için kullanırız.

● Tip: Kullanıcı hikayesinin kategorisidir. Örneğin “arka ofis”, “teknik iyileştirme”. Böylece Ürün

Sahibi, bütün “teknik iyileştirme” işlerini fi ltreleyebilir ve önceliklerini düşürebilir, vb.

● Ortam: Genellikle excel dokümanındaki bir “onay kutucukları” olarak bulunur. Örneğin,

“veritabanı, server, client” gibi. Geliştirme Takımı ya da Ürün Sahibi, hangi ortamlarda

geliştirme yapılacağını görür. Birden fazla Scrum Takımı olduğunda kullanışlıdır. Arka ofis

takımı, müşteri takımı gibi takımlarınız olduğunda hangi takımın hangi işi alacağına karar

vermeyi kolaylaştırır.

Excel ha? Ne günlerdi ama! Şimdilerde Ürün İş Listesi’nin yönetimi için exceli hayatta düşünmem,

tabi bulut versiyonuysa değişebilir. Ürün İş Listesi, herkesin, her yerden erişebileceği, paylaşımlı

bir ortamda bulunması ve canlı tutulması gereken bir dokümandır. Zilyon tane iş listesi yönetim

aracı bulunur. Trello, LeanKit, Jira oldukça popülerdir. Google SpreadSheet oldukça pratiktir.

Şimdilerde farklı yaptığım iki şey var. Birincisi artık “önem” kolonu bulunmuyor. Önem kolonu

yerine sadece listeyi sıralıyorum. İş Listesi yönetim araçlarının hepsinde sürükle ve bırak özelliği

mevcut. Hatta Excel ve Google Spread Sheet bile bu özelliklere sahip, eğer yüksek derecede gizli

kısa yolları öğrenirseniz yapması çok hızlı ve çok kolay. İkinci olarak adam/gün asla

kullanmıyorum. İşlerin büyüklüğünü belirlerken hikaye puanlarından ya da tişört

büyüklüklerinden(küçük, orta, büyük) yararlanıyoruz. Hatta bazen işlerin büyüklüğünü hiç tahmin

etmiyoruz. Bu konuyu sonra anlatacağım.

Page 21: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

21

● Talep eden: Ürün Sahibi, işin hangi paydaş ya da müşteri tarafından talep edildiğini tutmak

isteyebilir. Böylece işin ilerleyişi hakkında talep eden kişiye bilgi vermesi kolaylaşır.

● Hata takip numarası: Eğer hataları takip ettiğiniz ayrı bir sisteminiz varsa (bizim Jira da takip

ettiğimiz gibi) kullanıcı hikayesinde bu hatanın numarasını tutmak faydalıdır. Hataya erişmek

istediğinizde bu numarayla kolayca erişebilirsiniz.

Ürün İş Listesi’ni İş Birimine(Müşteriye) Anlamlı Gelecek Seviyede

Tutma

Eğer Ürün Sahibi teknik bilgiye sahipse; “işlem tablosuna index eklenmeli” gibi kullanıcı hikayeleri

oluşturabilir. Bunu neden isteyebilir? Arama sayfasını hızlandırmak istediği için.

İndex’lerin olmaması yavaşlığın nedeni olmayabilir. Bambaşka bir şey arama sayfasındaki yavaşlığın

nedeni olabilir. Normal şartlar altında Geliştirme Takımı bir şeyin nasıl çözüleceğini daha iyi bilir. Yani

Ürün Sahibi gerçekleştirilecek işin hedeflerine odaklanmalıdır.

Böyle teknik yazılmış kullanıcı hikayeleri gördüğüm zaman Ürün Sahibi’ne bir dizi “ama neden?”

sorusu sorarım taa ki iş açısından hedefi bulana kadar. Daha sonra bu hedefin olduğu yeni bir

cümleyle kullanıcı hikayesini baştan oluştururuz. Bu örnekte “arama sayfasının hızlandırılması”

şeklinde düzenledik. İlk oluşturulan kullanıcı hikayesi “işlem tablosuna index eklenmeli” açıklama

kolonuna yazılabilir.

Bunun için eski ve iyi bir yöntem var. “A rolündeki kullanıcı olarak B işlevselliğinin geliştirilmesini

istiyorum böylece C işlemi gerçekleştirebileceğim”. Alıcı rolündeki kullanıcı olarak sipariş listemi

kaydetmek istiyorum böylece yarın alışveriş yapmaya devam edebileceğim. 2007 yılında bunu

duymadığıma inanamıyorum! Bugün daha ayrıntılı birçok şablon var. Fakat bu şablon çok basit ve

Çeviklik konusunda yeni olanlar için iyi bir başlangıç noktası olabilir. Şablon sizi doğru sorular

sormaya zorluyor ve teknik detaylarda kaybolmanızı engelliyor.

Page 22: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

22

Bölüm

Üç

Sprint Planlama’ya Nasıl Hazırlanıyoruz?

Sprint Planlama günü çok çabuk gelir. Tekrar tekrar öğrendiğimiz ders: Ürün İş Listesi’nin Sprint

Planlama Toplantısı’ndan önce düzgün bir hale getirilmesidir.

Ürün İş Listesi’nin doğru düzgün bir hale getirilmesi ne anlama gelir? Ürün İş Listesi’ndeki tüm

maddeler mükemmel bir şekilde mi anlatılmalıdır? İş büyüklükleri mükemmel doğrulukta mı

verilmelidir? Önceliklerin belirlenmiş olması mıdır? Hayır, hayır! Anlatmak istediğim şey:

● Ürün İş Listesi var olmalıdır.(Hayal edin, olmayan Scrum Takımları var!)

● Bir Ürün İş Listesi ve bir Ürün Sahibi olmalıdır.

● Ürün İş Listesi’ndeki bütün işlerin öncelikleri belirtilmelidir, her iş maddesi farklı önceliklere

sahip olmalıdır.

○ Önceliği çok düşük olan ve Sprint Planlama’da konuşulmayacak olan maddelerin

öncelikleri verilmeyebilir ya da aynı önceliklere sahip olabilirler.

○ Uzak bir ihtimalle de olsa bir sonraki Sprint’te gerçekleştirilebilecek işlerin farklı

öncelikleri olmalıdır.

○ Öncelik oranı sadece işleri önceliklerine göre sıralamak için kullanılır. Yani A

maddesinin öncelik oranı 20, B maddesinin öncelik oranı 100 ise B, A’dan daha

önemli bir iş demektir. B’nin A’dan 5 kez daha önemli olduğu anlamına gelmez. Eğer

B’nin öncelik oranı 21 ise hala A’dan daha önemli bir madde olduğu anlaşılır.

○ İş maddelerinin önceliklerini belirlediğimiz sayılar arasında farklar olması iyidir.

Örneğin C maddesi A ve B’nin arasında bir yerde olması gerekirse 20-21 arasına 20.5

Ürün İş Listesi doğru düzgün oluşturulmadığı için patlayan birçok Sprint Planlama Toplantısına

şahit oldum. “Shit in = shit out” deyimini bilirsiniz, değil mi?

Page 23: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

23

öncelik oranını kullanabilirsiniz fakat güzel olmaz. Yani öncelik oranları arasında yeni

eklenecek maddeler için boşluk bırakın.

● Ürün Sahibi her bir kullanıcı hikayesini anlamalıdır. Normalde kullanıcı hikayelerini Ürün

Sahibi yazar fakat bazı durumlarda diğer kişilerde Ürün İş Listesi’ne eklemelerde bulunabilir.

Eklenen bu maddeleri sadece Ürün Sahibi önceliklendirebilir. Teknik olarak ne yapılması

gerektiğini anlamasına gerek yoktur fakat neden eklenmesi gerektiğini bilmelidir.

Not: Ürün Sahibi dışında diğer kişiler de Ürün İş Listesi’ne kullanıcı hikayeleri ekleyebilir fakat

önceliğini belirleyemezler. Aynı şekilde işin büyüklük tahminini de yapamazlar. İşin büyüklük

tahminini sadece takım yapabilir. İşlerin önceliğini belirlemek Ürün Sahibi’nin, işlerin büyüklüğünü

belirlemek Geliştirme Takımı’nın sorumluluğu ve hakkıdır.

Denediğimiz ve değerlendirdiğimiz diğer yaklaşımlar:

● Ürün İş Listesi’ni tutmak için Jira’yı kullandık. Birçok Ürün Sahibi bunu sıkıcı buldu. Excel daha

güzel ve değiştirmesi çok daha kolay geldi. Satırları anında boyayabiliyor, öncelikleri anında

değiştirebiliyorsunuz, yeni kolonlar ekleyebiliyorsunuz. Notlar ekleyebiliyor, import ve export

yapabiliyorsunuz.

VersionOne, ScrumWorks, XPlanner gibi Çevik süreçleri destekleyen araçları kullanma şansımız

olmadı. Gelecekte belki kullanabiliriz.

Aynı şekilde Google Spreadsheets’te bu özelliklere sahip. Ayrıca bir bulut çözümü, birden fazla

kullanıcı aynı anda değişiklik yapabiliyor. Sadece söylüyorum...

Sadece Ürün İş Listesi’ni sıralayın. Öncelik oranıyla vaktinizi boşa harcamayın.

Page 24: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

24

Bölüm

Dört

Sprint Planlama’yı Nasıl Yapıyoruz?

Sprint Planlama önemli bir toplantıdır. Kişisel fikrime göre Scrum’daki en önemli toplantıdır. Kötü

yapılan bir Sprint Planlama Toplantısı bütün Sprint’in kötü geçmesine neden olabilir.

Sprint Planlama Toplantısı’nın amacı, Geliştirme Takımına, birkaç hafta bölünmeden çalışabileceği

kadar bilgi sağlamak ve Ürün Sahibi’ne işlerin bitirilmesi için güven vermektir.

Tamam, bu biraz kafa karıştırıcı, Sprint Planlama Toplantısı’nın daha somut çıktıları:

● Sprint Hedefi

● Takım üyelerinin listesi(işi yapma tamamlama taahhütleri(commitment))

● Sprint İş Listesi(Sprint’e alınan işlerin listesi)

● Tarihi belirlenmiş değerlendirme toplantısı

● Günlük toplantının yapılacağı yer ve zaman

Önemli mi? Evet. Scrum’daki en önemli toplantı mı? Hayır! Retrospektif toplantıları çoook daha

önemlidir! Çünkü iyi yapılan retrospektif toplantıları yanlış yapılan ya da çalışmayan diğer şeylerin

düzeltilmesini sağlayabilir. Her şey(iyi bir Ürün İş Listesi, birbirini anlayan bir Ürün Sahibi ve

Geliştirme Takımı) iyi işliyorsa Sprint Planlama Toplantıları’nın o kadar da önemi kalmıyor. Ayrıca

Sprint’ler koşmak Çevik olmak için tek yol değildir. Birçok takım Kanban kullanıyor. Hatta bu

konuda küçük bir kitap bile yazdım: Kanban ve Scrum, İkisinin de En İyisini Yapmak

(http://www.yilmazcihan.com/kanban-ve-scrum-ikisinin-de-en-iyisini-yapmak/)

Page 25: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

25

Ürün Sahibi Neden Katılmak Zorunda?

Bazı Ürün Sahipleri, Sprint Planlaması yapılırken Geliştirme Takımı’yla birlikte zaman harcamaya karşı

direnç gösterirler. “İstediklerimi sıraladım. Sizin planlamanıza ayıracak vaktim yok.” Bu oldukça ciddi

bir problemdir.

Geliştirme Takımı’nın ve Ürün Sahibi’nin Sprint Planlama Toplantı’sında bir arada olmasının nedeni

her kullanıcı hikayesinin içerdiği ve birbirine oldukça bağımlı olan üç değişkendir.

Kapsam ve öncelik, Ürün Sahibi tarafından belirlenir. İşlerin büyüklüğü Geliştirme Takımı tarafından

belirlenir. Sprint Planlama Toplantısı boyunca bu üç değişkene yüz yüze iletişim aracılığıyla ince ayar

çekilir. Normal şartlar altında Ürün Sahibi, Sprint hedefini ve en önemli kullanıcı hikayelerini

özetleyerek toplantıya başlar. Sonra Geliştirme Takımı her bir kullanıcı hikayesinin üzerinden geçer

ve işlerin büyüklüğünü tahmin eder. Geliştirme Takımı bunu yaparken kapsamla ilgili önemli sorular

sorabilirler.

- Bu “kullanıcı sil” maddesi, kullanıcının bekleyen işlerini iptal etmeyi içerir mi ?

Bazı durumlarda cevaplar Geliştirme Takımını şaşırtır, ilk verdikleri işin büyüklüğü tahminlerini

değiştirmek isteyebilirler.

Bazı durumlarda kullanıcı hikayesinin tahmini Ürün Sahibi’nin beklemediği bir tahmin olabilir. Bu da

Ürün Sahibi’nin o işle ilgili düşüncesini değiştirebilir ve işin önceliğini düşürebilir. Kullanıcı hikayesinin

kapsamını daraltabilir. Eğer kapsamı daraltırsa Geliştirme Takımı yeniden işin büyüklüğünü tahmin

eder.

Bu tip yüz yüze iletişim Scrum’ın temelidir, aslında tüm Çevik yazılım geliştirmenin temelidir.

Page 26: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

26

Peki ya Ürün Sahibi yine de zamanı olmadığı konusunda ısrar ederse? Genellikle aşağıdaki stratejileri

izlerim:

● Ürün Sahibi’nin toplantıya katılımının neden bu kadar önemli olduğunu anlatmaya çalışır ve

fikrini değiştirmesini umarım.

● Geliştirme Takımı’ndan birinin vekil Ürün Sahibi gibi davranmasını isterim. Gerçek Ürün

Sahibine şunu söylerim: Madem ki bizim toplantımıza katılmak için vaktin yok o zaman

toplantıda Jeff seni temsil edecek. Önceliklerin belirlenmesinde, kapsamın değiştirilmesinde

tam yetkiye sahip olacaktır. Sana tavsiyem mümkün olduğunca Jeff’le beraber çalış ve bilgini

senkronize et. Eğer Jeff’in vekil olması hoşuna gitmiyorsa o zaman yerine birini öner.

● Üst yönetimi yeni bir Ürün Sahibi ataması için ikna etmeye çalışırım.

● Ürün Sahibi katılmak için zaman bulana kadar Sprint’in başlamasını ertelerim. Bu zaman

içinde herhangi bir isteğin teslim edilmesini reddederim. Geliştirme Takımı için en önemli

işler hangileriyse onların yapılmasını sağlarım.

Kalitenin Neden Pazarlığı Olmaz?

Yukarıdaki üçgende dördüncü değişkeni bilerek görmezden geldim: kalite.

Kaliteyi ikiye ayıracağım, iç kalite, dış kalite.

● Dış Kalite sistemin son kullanıcıları tarafından algılanır. Yavaş ve kullanıcı ihtiyaçlarını

karşılamayan bir kullanıcı ara yüzü kötü dış kalitenin örneğidir.

● İç Kalite, son kullanıcının görmediği fakat sistemin bakımını kapsayan tüm konulardır. Sistem

tasarım tutarlılığı, otomatik test sistemi, kod okunurluğu vb.

Yüksek iç kaliteye sahip bir sistem düşük dış kaliteye sahip olabilir. Fakat iç kalitesi düşük bir sistem

çok nadir olarak yüksek dış kaliteye sahip olabilir. Çürük bir temelin üzerine güzel bir şey inşa etmek

zordur.

Bu bölümde iyi şeyler yazmışım!<sırtımı sıvazlıyorum>

Tek bir şey, işlerin detaylandırılması(işlerin büyüklüğünün verilmesi, büyük kullanıcı hikayelerinin

küçük kullanıcı hikayelerine bölünmesi) için ayrı bir toplantı yapın. Böylece Sprint Planlama

Toplantısı daha odaklanmış bir şekilde geçecektir. Her iki toplantıda Ürün Sahibi’nin katılımı çok

önemlidir.

Page 27: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

27

Dış kaliteyi kapsamın bir parçası olarak görürüm. Bazı durumlarda yavaş bir ekrana sahip sistemi

teslim etmek oldukça mantıklı olabilir. İşleri düzene oturttuktan sonra ekranı hızlandıracak çalışma

yapılarak yeni bir sürüm çıkılabilir. Buradaki pazarlığı Ürün Sahibine bırakırım çünkü kapsamdan o

sorumludur.

Oysa iç kalitenin tartışması olmaz. Sistemin kalitesinin korunması takımın sorumluluğundadır ve bu

en basit haliyle pazarlığa açık değildir.

Peki, iç kalite ve dış kalite arasındaki farkı nasıl ayırabiliriz?

Diyelim ki Ürün Sahibi şöyle bir şey söylüyor: “6 hikaye puanı tahmininize saygı duyuyorum fakat

eminim kendinizi işe verirseniz daha az zamanda hızlıca bir çözüm bulabilirsiniz.”

Tam işte burada dikkat! İç kaliteyi bir değişken olarak kullanmaya çalışıyor. Nerden biliyorum? Çünkü

kapsamı daraltmadan işin daha az zamanda yapılmasını istiyor. “Hızlıca bir çözüm” ifadesi kafanızda

alarmlar çaldırmalıdır.

İç kalitenin pazarlık konusu olmasına neden izin vermiyoruz?

Deneyimlerime göre iç kaliteden ödün vermek her zaman çok çok kötü bir fikirdir. İşi kalitesiz

yaparak kazanılan zaman hem kısa hem uzun dönemdeki maliyetin yanında çok küçük bir kazanımdır.

Kod bir kere kötüleşmeye başladığı zaman sonradan kaliteyi yeniden yükseltmek oldukça zordur.

Bunun yerine tartışmayı kapsama doğru yönlendiririm. “Bu işlevselliği erkenden elde etme k senin

için önemli olduğuna göre kapsamı daraltabilir miyiz? Böylece entegre etmemiz daha kolay olacaktır.

Belki hataları göstermeyi basitleştirebiliriz ve ileride bununla ilgili bir kullanıcı hikayesi ekleriz. Diğer

kullanıcı hikayelerinin önceliklerini de düşürebilirsin. Böylece sadece istediğin bu işlevselliğe

odaklanabiliriz, ne dersin?”

Bir Ürün Sahibi, iç kalitenin pazarlık konusu olmadığını öğrendiği zaman diğer değişkenleri manipule

etmeyi oldukça iyi öğrenir.

Page 28: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

28

Bitmeyen Sprint Planlama Toplantıları!

Sprint Planlama Toplantılarının en zor yönü: İnsanlar çok uzun süreceğini düşünmezler fakat bu

toplantılar gerçekten çok uzun sürebilir!

Scrum’daki her etkinliğin süresi belirlidir. Bu basit ve tutarlı bir kuraldır. Bu kurala uymaya çalışırız.

Sprint Planlama Toplantısı’nın sonuna yaklaştığımız halde Sprint Hedefi ya da Sprint İş Listesi hala

oluşturulamamış olursa ne yapmalıyız? Sprint Hedefini ve Sprint İş Listesi’ni belirlemeden kısa kesip

toplantıyı bitirmeli miyiz? Yoksa bir saat daha uzatmalı mıyız? Ya da toplantıyı bitirip yarın sabah

devam mı etmeliyiz?

Bu, yeni takımların tekrar tekrar yaşadığı bir durumdur. Eee, ne yaparsınız? Bilmiyorum, ne

yapmalıyız? Ben genelde zalim bir şekilde toplantının süresi dolduğunda toplantıyı bitiri rim. Sprint

içinde takımın acı çekmesini isterim ki neyi yanlış yaptıklarını anlasınlar. Aslında Geliştirme Takımı’na

ve Ürün Sahibi’ne söylediğim tam olarak şöyle bir şey: “Bu toplantı 10 dakika sonra bitiyor. Sprint

Planı yok gibi bir şey. Elimizde olanla Sprint’e başlayalım yoksa yarın sabah 8’de dört saatlik başka bir

planlama toplantısı ayarlayalım mı?” Ne cevap verdiklerini tahmin edebilirsiniz. :)

Toplantının sürmesine izin verdiğim zamanlar da oldu. Toplantının devam etmesi çokta başarılı bir

yaklaşım olmadı. Çünkü insanlar yorulmuş oluyorlar. Eğer belirlenen dört saatlik zamanda doğru

Teoride evet. Fakat bugünlerde pratikte daha faydacı olmaya eğilimliyim. Bazen iş açısından

kaliteden vazgeçmek oldukça mantıklı olabilir. Örneğin gelecek Sprint’ten sonra oldukça önemli

bir fuar var ya da kullanıcı davranışlarını görebilmemiz için sadece bir prototipe ihtiyacımız var.

Böyle durumlarda kaliteden neden ödün verdiğimizi Ürün Sahibi çok net bi r şekilde açıklamalıdır.

İlerleyen zamanlardaysa bu teknik borcun ödenmesi için Geliştirme Takımı’na yeterli zamanı

vermelidir. Böyle işler için takımlar Ürün İş Listesi’ne temizlik adında bir iş maddesi eklerler,

böylece gelecekte bu işi unutmamış olurlar. Yüksek iç kalite bir kural olmalı ve yapılan istisnalar

kaideyi bozmamalıdır.

Hayır, o kadarda çok zaman harcamak zorunda değilsiniz! Eğer gelecek Sprint’e alınacak işleri

içinde bulunduğunuz Sprint içinde yaptığınız aktivitelerle detaylandırırsanız o kadar uzun

sürmeyecektir. Ürün İş Listesini detaylandırmak için haftada bir, bir saatliğine toplanan birçok

takım gördüm. Böylece Sprint Planlama Toplantısı daha odaklanılabilir bir toplantı olur. Ayrıca bu

Ürün Sahibine verilmiş bir şans olarak ortaya çıkar. Rehber: Sprint Planlama Toplantısı bir haftalık

Sprint’lerde bir saatten fazla sürmemelidir. Deneyimli takımlarda daha da az sürmesi beklenir.

Yani üç haftalık Sprint’ler koşan takımlarda üç saatle sınırlı olmalıdır.

Page 29: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

29

düzgün bir Sprint Planı oluşturamadılarsa toplantı birkaç saat uzasa dahi oluşturamayacaklardır.

Aslında ikinci seçenek de oldukça mantıklıdır, ertesi sabah yeni bir toplantı yapmak. İnsanların

sabırsız olması ve Sprint’e başlamak istemeleri dışında yeni bir planlama yapmanın sakıncası yoktur.

Yani Sprint Planlama Toplantısı’nın zamanı dolduğunda toplantının bitirilmesini, Sprint içinde

Geliştirme Takımı’nın ve Ürün Sahibi’nin acı çekmesini sağlarım. Bunun iyi yanı Geliştirme Takımı’nın

ve Ürün Sahibi’nin oldukça değerli bir ders almış olmasıdır. Gelecek Sprint Planlama Toplantısı çok

daha verimli olacaktır. Ayrıca insanlar daha önce uzun olduğunu düşündükleri bir topl antı

ayarladığınızda daha az direnç göstereceklerdir.

Süresi belirli etkinlikleri zamanında bitirmeyi öğrenin, etkinliklerin süresini belirlerken gerçekçi olun.

Bunu hem toplantılarınızın uzunluklarını hem de Sprint uzunluğunuzu belirlerken uygulayın.

Sprint Planlama Toplantısı’nın Yapısı

Sprint Planlama Toplantısı’nın nasıl gerçekleştirileceği önceden belirlenirse toplantı süresinin aşılma

riski azalmış olur.

Aşağıda Sprint Planlama Toplantısı için basit bir yapı bulunuyor:

Sprint Planlama Toplantısı: 13:00-17:00 Her saat başında 10 dakika ara.

● 13:00 - 13:30 - Ürün Sahibi, Sprint Hedefi’nden bahseder ve Ürün İş Listesi’ni özetler.

Demonun yapılacağı yer, tarih ve saat belirlenir.

● 13:30 - 15:00 - Takım işlerin büyüklüğünü belirler ve işler büyükse daha küçük parçalara

böler. Eğer gerekliyse Ürün Sahibi işlerin önceliklerini günceller. Sprint’e alınacak maddeler

netleştirilir. Demonun nasıl yapılacağı yüksek öncelikli bütün maddeler için belirlenir.

“Scrum’ı denedik, nefret ettik, bir daha yapmayacağız!” diyen bir takımla karşılaştım. Neden diye

sorduğumda “herhangi bir şey bitiremiyoruz, toplantılarda çok fazla zaman harcıyoruz” cevabını

verdiler. En çok hangi toplantıya zaman harcadıklarını sordum. Sprint Planlama Toplantısı

olduğunu söylediler. Sprint Planlama Toplantısı’nın ne kadar sürdüğünü sordum ve “iki ya da üç

gün” diye cevap verdiler. Her Sprint için iki ya da üç gün planlama mı?! Neden nefret ettikleri

belli! Süresi belirli etkinlikler kuralını gözden kaçırmışlar. Planlamaya ne kadar yatırım yapmanız

gerektiğine en baştan karar vermelisiniz ve buna sadık kalmalısınız! Scrum’da tıpkı diğer araçlar

gibidir, çekici bir çivi çakmak içinde kullanabilirsiniz, parmağınızı ezmek içinde. Ne olursa olsun,

aracı suçlayamazsınız!

Page 30: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

30

● 15:00 - 16:00 - Geliştirme Takımı, Sprint’e alınacak işleri seçer. Takım hızını hesaplayarak

kapasiteyi belirler.

● 16:00 - 17:00 - Bir önceki Sprint’ten farklı olacak Günlük Scrum Toplantıları için yer ve zaman

belirlenir. Kullanıcı hikayeleri işlere(task’lara) bölünür.

Bu zamanla katı bir şekilde dayatılmamalıdır. Scrum Master, bölümler arasındaki süreyi kısaltabilir ya

da uzatabilir, buna toplantının ilerleyişine göre karar verilmelidir.

Sprint Uzunluğunu Belirleme

Sprint Planlama Toplantısı’nın çıktılarından biri demonun yapılacağı tarihtir. Bunun anlamı da Sprint

uzunluklarını belirlemektir.

Peki, iyi bir Sprint uzunluğu ne kadar olmalıdır?

Kısa Sprint’ler iyidir, kurumun çevik olmasını sağlar, kısa Sprint’lerde yönünüzü daha çabuk

değiştirebilirsiniz.

Kısa Sprint’ler = Kısa Geribildirim Döngüleri = Daha Sık Teslimler = Müşteriden Daha Çok Geribildirim

= Yanlış Yönde İlerlemeye Harcanan Zaman Azalır = Daha Hızlı Öğrenilir ve Gelişim Gösterilir

Fakat uzun Sprint’ler de iyidir. Takım odaklanacağı daha fazla zamana sahip olur, problemlerin

çözümü için daha fazla zaman vardır. Böylece Sprint Hedefine erişebilirler. Sprint Planlama Toplantısı

ve demonun nerede, nasıl yapılacağı gibi konularda daha az yük olur.

Genel olarak Ürün Sahipleri kısa Sprint’lerden, Geliştirme Takımları uzun Sprint’lerden hoşlanır. Yani

Sprint’in uzunluğu anlaşmaya varılması gereken bir konudur. Bu konuda çok deney yaptık ve bizim

için en iyi uzunluğu belirledik, üç hafta. Takımlarımızın çoğu üç haftalık Sprint’ler koşar. Üç haftalık

süre kurum için yeterli derecede Çeviklik sağlar ve Geliştirme Takımı için geliştirmeye

odaklanabilecekleri süreye sahip olunur.

13:30 ve 15:00 arasındaki bölüm, Ürün İş Listesi detaylandırma bölümüdür. Bu bölümü ayrı bir

toplantı olarak yapabilirsiniz. Böylece daha kısa ve daha verimli planlama toplantıları

yapabilirsiniz. Detaylandırma toplantısından sonra gelen işler için küçük birkaç ayarlama

gerekebilir, sonradan gelen bu maddeleri Sprint Planlama Toplantı’sında detaylandırmanız

gerekebilir ama olsun, yinede oldukça verimli bir toplantı yapabilirsiniz.

Page 31: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

31

Sonunda öğrendiğimiz bir şey başlangıçta Sprint uzunluğuyla ilgili bolca deney yapılması gerektiğidir.

Sprint uzunluğunu belirlemek için fazla detaylı analiz yapmayın, düzgün bir uzunluk seçin ve birkaç

Sprint deneyin daha sonra yeniden Sprint uzunluğunu değiştirin ve deneyin.

Bazen biraz uzun gibi hissettirecek, bazen biraz kısa gibi. Fakat Sprint uzunluğunuzu belirledikten

sonra bu zamanla kurumun kalp atışına dönüşecektir. Teslim tarihleri konusunda herhangi bir

tartışma yaşanmayacak çünkü her üç haftada bir teslim yapılacağı herkes tarafından bilinecek.

Sprint Hedefi’ni Belirleme

Sprint Planlama Toplantısı’nın herhangi bir anında, “bu Sprint’in hedefi nedir” diye sorarım. Herkes

boş gözlerle bana bakar, Ürün Sahibi kaşlarını çatar ve çenesini kaşır. Bu neredeyse çalıştığım bütün

takımlarda böyledir.

Bir nedenden ötürü Sprint Hedefi’ni belirlemek zordur. Şunu öğrendim, hiç olmayan bir hedeftense

yarım yırtık bir hedef iyidir. Hedef, “daha fazla para kazanmak”, “önceliği en yüksek üç işi bitirmek”,

“Genel Müdürü etkilemek”, “beta versiyonu çıkabilecek kadar sistemi iyileştirmek”, “arka ofis destek

işlevselliğini eklemek” olabilir. Önemli olan şey iş birimi, müşteri terimlerini kullanarak belirlemektir,

teknik terimleri kullanarak değil. Böylece takım dışındaki kişiler de Sprint Hedefi’ni anlayabilir.

Sprint Hedefi oldukça basit ve temel bir soruya cevap verebilmelidir: “Bu Sprint’i neden yapıyoruz?

Neden hepimiz tatile gitmiyoruz?” Sprint Hedefi’ni belirlemenin bir yolu da Ürün Sahibi’ne bu soruyu

sormaktır.

Sprint Hedefi, hali hazırda ulaşılmamış bir hedef olmalıdır. “Genel Müdürü etkilemek” iyi bir hedef

olabilir fakat bu hedef koyulana kadar etkilenmemiş olması gerekir. Böyle bir durumda herkes eve

gidebilir çünkü Sprint Hedefi’ne hali hazırda erişilmiştir.

Çalıştığım tüm Scrum Takımları eninde sonunda iki ya da üç haftalık Sprint’ler koşmaya karar

verirler. Bir hafta oldukça kısadır. Sprint’e daha yeni başladık ve şimdi demonun nasıl yapılacağını

konuşuyoruz. Bu oldukça stres yaşatır. Hızlanmamıza ve geliştirme işinden zevk almamıza yeterli

zaman yok! Dört haftaysa oldukça uzundur. Planlama toplantılarımız işkenceye dönüşüyor ve

Sprint’in içinde sürekli olarak bölünüyoruz.

Bunlar sadece benim gözlemlerim.

Page 32: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

32

Sprint Hedefi, Sprint Planlama süresince saçma ve yapmacık görünebilir, Sprint ortasındaysa daha

kullanışlı görünmeye başlayacaktır. Geliştirme Takımı’ndaki kişilerin Sprint ortasında ne yapmaları

gerektiği konusunda kafaları karışmaya başladığı zaman Sprint Hedefi’ne odaklanabilirler. Eğer bizim

gibi birden fazla üründe çalışan birden fazla Scrum Takımınız varsa bu takımların Sprint Hedeflerini

bir wiki sayfasında göstermek oldukça kullanışlı olabilir. Sprint Hedeflerini böyle önemli bir şekle

sokmak ve yalnızca üst yönetimin değil herkesin kurumun ne yaptığını ve neden yaptığını görmesini

sağlar.

Sprint’e Hangi İşlerin Alınacağını Belirleme

Sprint Planlama Toplantısı’nın başlıca etkinliklerinden biri hangi kullanıcı hikayelerinin Sprint’e

alınacağına karar vermektir. Özetle Ürün İş Listesi’ndeki hangi iş maddeleri Sprint İş Listesi’ne

kopyalanacak buna karar vermektir.

Yukarıdaki resme bakın. Her dikdörtgen öncelik sırasına göre dizilmiş olan bir kullanıcı hikayesini

temsil etmektedir. En önemli kullanıcı hikayesi Ürün İş Listesi’nin en üstünde bulunur.

Dikdörtgenlerin büyüklüğü ilgili kullanıcı hikayesinin büyüklüğünü gösterir. Küme parantezinin

yüksekliği göreceli takım hızını gösterir. Yani takım gelecek Sprint’te bitirebileceğini düşündüğü

işlerin toplam büyüklüğüdür.

Sağdaki Sprint İş Listesi, Ürün İş Listesi’ndeki kullanıcı hikayelerinin bir kopyasıdır. Geliştirme

Takımı’nın gelecek Sprint’te bitirmeyi taahhüt ettiği kullanıcı hikayelerinin listesidir.

Scrum Kılavuzu bile her Sprint’in bir hedefinin olması gerektiğini söyler. Fakat bence Sprint

bazında bir hedefin olması çok elzem değil. Birkaç Sprint’i ya da gelecek teslimi kapsayan üst

seviye bir hedef de iyi olur. Sadece Sprint’in birkaç kullanıcı hikayesinin bitirilmesinden daha

önemli bir şey olduğundan emin olun. Scrum Takımı bir hedefe doğru ilerlemelidir yoksa birkaç

Sprint’ten sonra herkesin sıkılmaya başladığını görebilirsiniz.

Page 33: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

33

Sprint’e ne kadar iş alınacağına takım karar verir, Ürün Sahibi ya da bir başkası değil!

Bu, iki soruyu akıllara getirir:

1. Hangi işlerin Sprint’e alınacağına takım nasıl karar verir?

2. Ürün Sahibi, takımın kararlarını nasıl etkileyebilir?

İkinci soruyla başlayacağım.

Sprint’e Hangi İşlerin Alınacağı Konusunda Ürün Sahibi’nin Etkisi

Nedir?

Diyelim ki Sprint Planlama Toplantısı’nda aşağıdaki gibi bir durum yaşıyoruz.

D kullanıcı hikayesi Sprint’e alınamayacağı için Ürün Sahibi hayal kırıklığına uğramış durumda.

Seçeneklerden biri yeniden önceliklendirmedir. Eğer D maddesinin önceliğini en yüksek seviyeye

çıkarırsa Geliştirme Takımı D maddesini Sprint’e almakla yükümlüdür. Tabi bu durumda C maddesi

Sprint’e dahil edilmeyecektir.

İkinci seçenek kapsamı değiştirmektir. A kullanıcı hikayesinin kapsamı daraltılarak takımın D

maddesini de Sprint’ine dahil etmesi sağlanabilir.

Page 34: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

34

Üçüncü seçenek A kullanıcı hikayesini daha küçük parçalara bölmek olabilir. Ürün Sahibi, A kullanıcı

hikayesinin bazı özelliklerinin o kadar da önemli olmadığına karar verebilir. Daha sonra A kullanıcı

hikayesini A1 ve A2 şeklinde iki kullanıcı hikayesine böler.

Gördüğünüz gibi Ürün Sahibi takım hızını ya da Sprint’e ne kadar iş alınacağını kontrol edemese bile

hangi kullanıcı hikayelerinin Sprint’e alınacağını yukarıdaki örneklerde olduğu gibi belirleyebilir.

Sprint’e Hangi İşlerin Alınacağına Geliştirme Takımı Nasıl Karar

Verir?

Bunun için iki teknik kullanırız:

1. Geliştirme Takımı içgüdüsel karar verir.

2. Geliştirme Takımı’nın hızını hesaplarız.

İçgüdüsel Karar Verme

Scrum Master: (Ürün İş Listesi’ndeki en önemli maddeyi göstererek) A kullanıcı hikayesini bu

Sprint’te bitirebilir miyiz?

Lisa: Elbette bitirebiliriz. Üç haftamız var ve bu oldukça küçük bir kullanıcı hikayesi.

Scrum Master: (Ürün İş Listesi’ndeki ikinci en önemli maddeyi gösterir) Tamamdır. Peki, B kullanıcı

hikayesini Sprint İş Listesi’ne ekleyebilir miyiz?

Tom ve Lisa: (Beraber) İkisini beraber geliştirmek bizi çok zorlamaz, yapabiliriz.

Scrum Master: Peki A,B,C kullanıcı hikayelerini beraber alabilir miyiz?

Page 35: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

35

Sam:(Ürün Sahibine dönerek) C kullanıcı hikayesi kullanıcının karşılaştığı hatalara uyarı verilmesini

içeriyor mu?

Ürün Sahibi: Hayır, şimdilik bu konuyu atlayabilirsiniz. Sadece temel hatalar çözülmeli.

Sam: O zaman C kullanıcı hikayesini de alabiliriz.

Scrum Master: Peki, D kullanıcı hikayesini alabilir miyiz?

Lisa: Hmmm….

Tom: Bence alıp bitirebiliriz.

Scrum Master: Bitirebileceğimizde %90 mı %50 mi eminsin?

Tom ve Lisa: %90.

Scrum Master: O zaman D’yi de Sprint’e aldık. E kullanıcı hikayesini alabilir miyiz?

Sam: Belki.

Scrum Master: %90, %50?

Sam: Bence %50.

Lisa: Şüpheliyim.

Scrum Master: Peki o zaman E’yi almıyoruz. A,B,C ve D’yi bitireceğimize dair taahhüt veriyoruz. Eğer

bütün bunları bitirebilirsek E’yi de alabiliriz ama şimdilik almıyoruz.

Herkes: Tamamdır!

Geliştirme Takımı’nın Hızını Hesaplama

Bu teknik iki adımdan oluşur:

1. Takımın göreceli hızına karar ver.

2. Takımın hızını aşmadan kaç kullanıcı hikayesinin Sprint’e alınabileceğine karar ver.

Takım hızı, Geliştirme Takımı’nın bir Sprint’te bitirdiği işlerin toplamıdır.

Aşağıdaki resim Sprint başındaki göreceli tahmin edilen takım hızını ve Sprint sonundaki gerçek takım

hızını göstermektedir. Her bir dikdörtgen bir kullanıcı hikayesidir ve içerisindeki sayı Sprint başında o

kullanıcı hikayesi için belirlenen büyüklük tahminidir.

Page 36: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

36

Gerçek takım hızı, başlangıçtaki tahminlere göre hesaplanır. Sprint içinde bir kullanıcı hikayesinin

büyüklüğü değiştirilemez.

Şimdiden itiraz ettiğinizi duyar gibiyim: “Bunun ne faydası var ki? Yüksek ya da düşük takım hızı

birçok etkene bağlı olarak değişebilir. Beyinsiz yazılım geliştiriciler, doğru olmayan ilk tahminler,

kapsamın artması, Sprint içinde gelen acil işler!”

İnce bir hesap yapılmadan belirlenen kabaca hesaplanan bir sayı olduğuna katılıyorum. Fakat oldukça

kullanışlı bir sayıdır, özellikle karşılaştırabileceğiniz bir şeyiniz yoksa! Bu sayı size bazı gerçekleri

gösterebilir. “Nedenlere bakmaksızın, bitirebileceğimizi düşündüğümüz ve gerçekten bitirdiğimiz

arasındaki yaklaşık fark işte burada.”

Neredeyse biten kullanıcı hikayesini ekleyecek miyiz? Neredeyse bitecekti, hikaye puanlarından

bitirdiğimiz kadarını takım hızına eklememiz gerekmez mi? Scrum, işleri tamamıyla, teslim edilebilir

şekilde bitirmek demektir(aslında Çevik yazılım geliştirme, Yalın üretimde, işlerin tamamıyla bitmesi

gerektiğini söyler). Neredeyse bitecek işin ürettiği değer sıfırdır. Bu konu hakkında daha fazla bilgi

için Donald Reinertsen’in Managing the Design Factory ya da Poppendieck’lerin bir kitabını almanızı

öneririm.

Takım hızını tahmin ederken hangi büyülerden yararlanıyoruz?

Takım hızını tahmin ederken en basit yol, takımın geçmiş Sprint’lerde tamamladığı işleri hesaplayarak

ortalamasını almaktır.

Page 37: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

37

Bu teknik dünün hava durumu olarak bilinir. Bu teknik en azından birkaç Sprint koşmuş takımlar için

uygundur. Ayrıca geçmişe dönük verilerin tutulmuş olması gerekir. Sprint bazında takım hızı

hesaplandığında arada uçurumlar olmaz. Bir önceki Sprint ne yaptıysa bir sonraki Sprint de yaklaşık

olarak aynı hıza çıkabilir, tabi aynı takım üyeleri ve aynı çalışma koşullarında. Durum her zaman böyle

değildir.

Daha gelişmiş bir hesaplama şekliyse basit kaynak hesaplamasıdır. Diyelim ki dört kişilik bir takımla

üç haftalık(15 iş günü) bir Sprint planlıyoruz. Lisa iki gün izinli olacak, Dave sadece %50 erişilebilir

durumda ve bir gün izinli olacak. Bunların hepsini hesapladığımızda:

Bu Sprint için 50 adam/günlük kaynağımız var demektir.

Bu değer bizim ortalama takım hızımız mı? Hayır! Çünkü işlerin büyüklüğünü belirlerken kullandığımız

birim hikaye puanıdır. Bizim takım için hikaye puanı, ideal adam/gün’e neredeyse birebir karşılık

gelir. İdeal adam/gün oldukça verimlidir, takımın rahatsız edilmediği günler ki bu nadirdir. Ayrıca

Sprint Planlama’da konuşmadığımız fakat Sprint içinde acil gelen ve yapmamız gereken işler, takım

üyelerinin hastalanması gibi şeyler de vardır.

Yani bizim tahmini takım hızımız kesinlikle 50’nin altında olacaktır. Fakat ne kadar altında? Bunun için

odak çarpanını kullanırız.

Odak çarpanı takımın ne kadar odaklanabileceğine dair bir tahmindir. Düşük odak çarpanı, takımın

çok bölünebileceği anlamına gelmektedir.

Uyarı: Bu bölümden gerçekten nefret ediyorum. Sıradaki birkaç sayfayı parçalamak istiyorum.

Eğer merak ediyorsanız okuyabilirsiniz. Daha sonra neden nefret ettiğimi açıklayacağım.

Uyarı: Bu bölümden gerçekten nefret ediyorum. Sıradaki birkaç sayfayı parçalamak istiyorum.

Eğer merak ediyorsanız okuyabilirsiniz. Daha sonra neden nefret ettiğimi açıklayacağım.

Page 38: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

38

Mantıklı bir odak çarpanına karar vermek için en iyi yol son birkaç Sprint’e bakmak ve ortalama

almaktır.

Gerçek takım hızı, son Sprint’te tamamlanan işlerin ilk büyüklük tahminlerinin toplamıdır.

Diyelim ki son Sprint üç kişiyle(Tom, Lisa ve Sam) üç haftada(45 adam/gün) 18 hikaye puanlık iş

bitirdik. Şimdi de gelecek Sprint için tahmini takım hızını hesaplamaya çalışıyoruz. İşleri bitirmek için

bu Sprint’lik Dave, takımla çalışacak. İzinler ve diğer konuları hesaba katarsak gelecek Sprint 50

adam/günlük kaynağımız var.

Gelecek Sprint için tahmin edilen takım hızı 20 hikaye puanıdır. Bunun anlamı Geliştirme Takımı

Sprint İş Listesi’ni oluştururken 20 hikaye puanı civarında işi Ürün İş Listesi’nden çekmelidir.

Bu durumda takım, toplamda 19 hikaye puanı olan ilk dört ya da toplamda 24 hikaye puanı olan ilk

beş iş maddesini çeker. Diyelim ki ilk dört maddeyi seçtiler sonuçta 19, 20’ye daha yakın bir değer.

Eğer işlerin bitmeyeceğine dair şüpheniz varsa daha az iş alın.

Page 39: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

39

Dünün hava durumu kullanışlı bir tekniktir fakat bu tekniği sağduyu ile birleştirip kullanmalısınız. Eğer

son Sprint olağan dışı bir şekilde kötü(takımın çoğu bir hafta boyunca hasta olduysa) bir Sprint ise

gelecek Sprint bu kadar şanssız olmayacağınızı varsaymak doğru olabilir. Gelecek Sprint daha yüksek

bir odak çarpanı kullanabilirsiniz. Eğer takım süper hızlı yeni bir build makinesi aldıysa odak çarpanını

yine yükseltebilirsiniz. Eğer bu Sprint takıma yeni biri katılıyorsa odak çarpanını düşürmeniz gerekir.

Çünkü yeni gelenin eğitilmesi gerekmektedir.

Ne zaman mümkün olursa birkaç Sprint geriye doğru bakın ve o birkaç Sprint’in ortalamasını alın.

Peki ya takım ilk defa Scrum yapacaksa ve geriye dönük veri yoksa ne yapacağız? Benzer durumdaki

diğer takımların odak çarpanına bakın ve bir örnek seçin.

Peki ya örnek alabileceğiniz başka bir takım yoksa? Odak çarpanını tahmin edin. İyi haber tahmininiz

sadece ilk Sprint’e uygulanacaktır. İlk Sprint’ten sonra elinizde veriler olacak böylece odak çarpanını

ve tahmini takım hızını ölçebilir ve iyileştirebilirsiniz.

Yeni takımlar için kullandığım varsayılan odak çarpanı %70’tir. Çünkü takımlarımızın çoğunluğu en

sonunda %70 civarında bir noktaya eriştiler.

İşlerin Büyüklüğünü Belirlerken Hangi Tekniği Kullanıyoruz?

Yukarıda birkaç teknikten bahsettim. Birincisi içgüdüyle, ikincisi dünün havasına bakıp takım hızını

tahmin etme ve takımın sahip olduğu adam/gün sayısı ve odak çarpanını hesaplayarak takım hızını

tahmin etme tekniklerinden bahsettim.

Biz hangi tekniği kullanıyoruz?

Belirli ölçülerden bu tekniklerin hepsini beraber kullanıyoruz, çok zamanımızı almıyor.

Son Sprint’teki odak çarpanına ve gerçek takım hızına bakıyoruz. Başlayacağımız Sprint için elimizde

olan kaynağa bakarız ve odak çarpanını tahmin ederiz. Geçen Sprint belirlediğimiz odak çarpanını ve

bu Sprint tahmin ettiğimiz odak çarpanını karşılaştırırız ve gerekirse ayar çekeriz!

Page 40: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

40

Sprint’e alacağımız kullanıcı hikayelerini belirlediğimiz zaman içgüdü kontrolü yaparım. Geliştirme

Takımı’ndan, rakamları görmezden gelmelerini rica ederim. Sprint’e alacağımız işleri bitirip

bitiremeyeceğimiz konusunda ne hissettiklerini sorarım. Eğer çok fazla iş çektiğimizi hissediyorlarsa

birkaç kullanıcı hikayesini çıkartırız ya da az iş çektiğimizi düşünüyorlarsa birkaç kullanıcı hikayesi

ekleriz.

Günün sonunda yaptığımız şey Sprint’e hangi kullanıcı hikayelerinin alınacağına karar vermektir.

Odak çarpanı, kaynak uygunluğu ve tahmin edilen takım hızı hedefe ulaşmak için sadece birer araçtır.

İndeks Kartlarını Neden Kullanıyoruz?

Sprint Planlama Toplantısı’nın çoğunda Ürün İş Listesi’nde bulunan kullanıcı hikayeleriyle ilgili işler

yaparız. Büyüklüklerini belirleriz, önceliklendiririz, netleştiririz ve daha küçük parçalara ayırırız.

Pratikte bunu nasıl yaparız?

Acı dolu bölümün sonu! Artık odak çarpanı kullanmıyorum çünkü çok zaman alıyor ve yanlış bir

his oluşturuyor. Ayrıca kullanıcı hikayeleri adam/gün biriminden tahmin etmeye zorluyor.

Artı odak çarpanı daha fazla insan = daha yüksek takım hızı yanlış varsayımına neden oluyor.

Bazen bu doğrudur, bazen doğru değildir. Eğer takıma yeni biri katılırsa ilk bir iki Sprint takım hızı

düşüş gösterir. Çünkü takım üyeleri yeni gelen kişinin takıma adaptasyonu için zaman harcarlar.

Eğer bir takım çok fazla büyürse(örneğin 10’dan fazla kişiden oluşursa) takım hızı kesinlikle düşüş

gösterir. Ayrıca odak çarpanının %100 olmamasının anlamı takımın odaklanma problemi

yaşadığını gösterir. Böyle bir ifade üst yönetime oldukça yanlış bir mesaj gönderebilir.

Bu nedenle odak çarpanı ve adam/gün olayını boş verin derim. Son birkaç Sprint’te ne kadar iş

bitirdiğinize bakın. Bunu yaparken hikaye puanlarını toplayabilirsiniz ya da bitirdiğiniz kullanıcı

hikaye sayısını hesaplayabilirsiniz eğer kullanıcı hikayelerinizin büyüklükleri birbirine yakınsa.

Daha sonra benzer bir sayıda kullanıcı hikayesini Ürün İş Listesi’nden çekebilirsiniz. Eğer

Sprint’inizde aksamalar olacağını tahmin ediyorsanız(örneğin iki kişinin eğitime gitme ihtimali

varsa) o zaman birkaç kullanıcı hikayesi daha az alın. Eğer elinizde geçmişe ait veri azsa o zaman

içgüdünüze daha çok güvenmelisiniz.

Eğer bunları yaparsanız Sprint Planlama Toplantılarınız kısalacak, daha verimli ve eğlenceli

olacaktır.

Page 41: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

41

Takımlar excel’deki Ürün İş Listemizi projektörle duvara yansıtırlar. Bir kişi(genellikle Ürün Sahibi ya

da Scrum Master) klavyeyi alır ve kullanıcı hikayesini mırıldanır ve tartışmayı başlatır. Takım ve Ürün

Sahibi öncelikleri ve detayları konuştuktan sonra klavyedeki kişi excel ’deki kullanıcı hikayesini

günceller.

Nasıl, kulağa iyi geliyor değil mi? Hayır! Ve en kötüsü toplantının sonuna kadar takım bunun farkında

olmaz. Ayrıca listedeki bütün kullanıcı hikayelerinin üstünden geçmediklerini fark ederler.

Çok daha işe yarayan bir çözüm indeks kartlar oluşturmak, bunları bir duvara yapıştırmak ya da

büyük bir masaya herkesin görebileceği şekilde koymaktır.

Bilgisayar ya da projektöre göre bu daha kullanışlıdır. Çünkü:

● İnsanlar ayaktadırlar ve dolaşırlar. Böylece uyanık ve alarmda kalırlar.

● Herkes olaya daha çok dahil olduğu hissine sahip olur. Sadece klavyedeki kişi değil!

● Birden fazla kullanıcı hikayesi aynı anda güncellenebilir.

● Yeniden önceliklendirme kolaydır çünkü sadece indeks kartını ileri geri oynatmanız yeterlidir.

● Toplantıdan sonra indeks kartları takım odasına taşınabilir ve duvara asılabilir.

İndeks kartlarını ister elinizle yazın ya da bizim yaptığımız gibi kartları oluşturmak için basit bir script

çalıştırın.

Ah o acııııııı….

Page 42: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

42

Not: Script’e blog’umdan erişebilirsiniz. http://blog.crisp.se/author/henrikkniberg

Önemli: Sprint Planlama Toplantısı’ndan sonra Scrum Master, indeks kartları baz alarak excel’deki

Ürün İş Listesi’ni günceller. Ürün İş Listesi’ni bu şekilde güncellemek zor bir yöntem fakat indeks

kartlarını kullanarak planlama yapmak oldukça verimli. Gülü seven dikenine katlanır.

“Önem” kolonu excel’deki Ürün İş Listesi’nde tutulur. Aynı zamanda fiziksel indeks kartlara da

yazarız. En önemli kullanıcı hikayeleri en solda önemi daha az kullanıcı hikayeleri daha sağda olacak

şekilde sıralama yaparız. Kartları duvara yapıştırdıktan sonra önem derecesini görmezden

gelebilirsiniz çünkü fiziksel sıralamayı aslında önem derecesini temel alarak yaparız. Eğer Ürün Sahibi

iki kullanıcı hikayesinin yerini değiştirirse kağıt üzerindeki önem derecesini güncellemekle zaman

kaybetmeyiz fakat excel’deki tablomuzu güncelleriz.

Eğer kullanıcı hikayeleri daha küçük parçalara bölünürse(gerçekleştirilecek işlere) ilgili işin ne kadar

zaman alacağını tahmin etmek daha kolaydır. Biz aktivite terimini kullanırız çünkü İsveççe’de iş(task)

bambaşka bir anlama geliyor. Ayrıca bu aktiviteyi de indeks kartlarla gerçekleştirmek oldukça

kolaydır. Takım, çiftlere ayrılarak kullanıcı hikayelerini paralel şekilde daha küçük işlere ayırabilir.

Script’i bulmanın en kolay yolu “index card generator” diye Google’da aramaktır. Bu eski script’in

hala kullanıldığına inanamıyorum. Bazı güzel insanlar bu script’i Google Spreadsheet’e taşımaya

da yardım ettiler. Eli ayağı düzgün her Ürün İş Listesi yönetim aracı yazdırma özelliğine sahiptir.

Farklı araçlarla deney yapın ve içinde bulunduğunuz durumda sizin işinize en çok hangisi yarıyor

öğrenin. Dikkat etmeniz gereken en önemli nokta aracı sürecinize adapte etmenizdir, süreci

aracınıza göre adapte etmemelisiniz!

Önem derecesini boş verin. Daha önce birkaç defa söylediğimi biliyorum. Kendimi çok mu tekrar

ediyorum? Kendimi tekrar mı ediyorum? :)

Page 43: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

43

İndeks kartlarının altına küçük yapışkan kağıtlar yapıştırarak bu aktiviteyi gerçekleştiririz. Her bir

yapışkan kağıt yapılması gereken bir iş olduğu anlamına gelir.

Kullanıcı hikayelerini işlere ayırdıktan sonra excel ’de bulunan Ürün İş Listesi’ni güncellemeyiz. Bunun

iki nedeni vardır:

İşlere bölme işi biraz gelip geçici bir iştir. Sprint içinde işin içine girdikçe yeni şeyler ortaya çıkabilir.

Sürekli olarak excel’de bulunan tabloyu güncellemek yönetimsel olarak çok zor olur ve çok zaman

alır.

Ürün Sahibi, teknik detaylara dahil olmak zorunda değildir.

İndeks kartlarının kullanıldığı gibi yapışkan kağıtlarda Sprint İş Listesi’ni oluştururken kullanılabilir.

Page 44: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

44

Bitti Tanımı

Ürün Sahibi’nin ve Geliştirme Takımı’nın net ve anlaşılır bir Bitti Tanımı üzerinde fikir birliğine

varması çok önemlidir.

Kodun tamamı kaynak sisteme gönderildiğinde bir kullanıcı hikayesi bitmiş oluyor mu? Yoksa bu kod

test ortamına gönderilip entegrasyon testini geçtikten sonra mı bitmiş oluyor? Ne zaman gerekliyse

bir Bitti Tanımı oluşturur ve kullanırız, “Test ortamına teslim yapıldı ve kullanıcı kabul testine hazır”.

Bazen de Hazır Tanımını kullanırız, “üretim ortamına alınmaya hazır”.

Başlangıçta bunun için detaylı bir kontrol listesi kullandık. Şimdilerde genellikle Scrum Takımı’ndaki

testçi kullanıcı hikayesinin Bitti Tanımı’na uyup uymadığını söylüyor.

Ayrıca anladık ki tüm kullanıcı hikayelerine aynılarmış gibi davranamayız. “Kullanıcı formu sorgusu”

adlı kullanıcı hikayesi, “manuel operasyonlar” adlı kullanıcı hikayesinden çok farklı şekilde

çözümlenmelidir. “Bitti” Tanımı, özetle operasyon takımı tarafından kabul edilen anlamına gelebilir.

Bu nedenle ortak anlayış, bir kontrol listesinden daha iyidir.

Eğer Bitti Tanımı konusunda kafanız sürekli karışıyorsa(başlangıçta bizim oldukça karışıyordu) o

zaman her bir kullanıcı hikayesinde “Bitti Tanımı” için bir alan açabilirsiniz.

Planlama Poker ile Efor Tahmini

Efor tahmini yapma bir takım aktivitesidir. Her bir takım üyesi her bir kullanıcı hikayesinin eforunun

tahmin edilmesi işine katılır. Neden?

● Planlama yaparken kullanıcı hikayesinin hangi bölümünü kimin geliştireceğini bilmeyiz.

● Kullanıcı hikayeleri normalde farklı uzmanlık alanlarından(kullanıcı ara yüzü tasarımı,

kodlama, test vb..) olan birkaç kişi tarafından geliştirilir.

● Efor tahminini yapabilmek için takım üyelerinin kullanıcı hikayesinin ne olduğunu anlaması

gerekir. Herkesin kullanıcı hikayelerinin büyüklüklerini tahmin etmesini rica ederek her bir

ÇOOOOKK önemlidir.

Tamam, kabul ediyorum. Bu, biraz saçma. Somut bir kontrol listesi daha kullanışlıdır. Sadece çok

uzun olmamasına dikkat edin. İnsanların unuttukları şeylere odaklanın, “teslim notlarını

güncellemek”, “teknik borcun ödenmesi” ya da “son kullanıcıdan geribildirim al” gibi şeylere.

Page 45: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

45

kullanıcı hikayesinin aslında ne işe yaradığını anlamasını sağlarız. Bu yaklaşım takım

üyelerinin Sprint içinde birbirlerine yardım etmelerini sağlar. Ayrıca kullanıcı hikayesiyle ilgili

önemli soruların erkenden sorulmasını da sağlar.

● Geliştirme Takımı’ndaki herkesin kullanıcı hikayelerine büyüklük vermesini istediği miz zaman

tutarsızlıkları keşfederiz. Aynı kullanıcı hikayesi için iki kişi birbirinden çok farklı düşüncelere

sahip olabilir. Böyle şeyleri erken keşfetmek ve konuşmak sonra bulmaktan daha iyidir.

Eğer takıma işlerin büyüklüğünü sorarsanız genellikle kullanıcı hikayesini iyi bildiğini düşünen biri

ağzından bir şeyler kaçıracaktır.

Bunu önlemek için mükemmel bir teknik var. Adı poker planlama, galiba Mike Cohn tarafından

geliştirildi.

Her bir takım üyesi yukarıda gösterilen 13 karta sahiptir.

Bu poker kartlarını planningpoker.crisp.se adresinde satıyoruz. Şimdi resimde gördüklerinizden

daha güzeller. Gerçi araştırırsanız daha ucuzunu bulursunuz. Ayrıca bu sitede çok güzel bir şey

daha satıyoruz. Adı Jimmy Cards. Evet, iş arkadaşımızla kartların ismini belirlerken biraz sorun

yaşadık. Ama ne yaparsınız. Bir göz atın!

Mike, James Grenning’ten öğrendiğini söyledi. Muhtemelen James’te fikri başkasından aldığını

söyleyecektir. En iyisini bunu düşünmeyin. Hepimiz devlerin omuzlarında yükseliriz. Belki hepimiz

birbirinin omuzlarında yükselen birer cüceyizdir. Siz ne demek istediğimi anladınız!

Page 46: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

46

Kullanıcı hikayesinin büyüklüğü tahmin edileceği zaman takım üyeleri seçimlerini gösteren kartı

seçerler ve yüzü kapalı bir şekilde masaya koyarlar. Bütün takım üyeleri hazır olduğunda takım

üyelerinin seçtiği kartlar aynı anda gösterilir. Böylece her bir takım üyesi ilk önce kendi kendine

düşünmüş olur ve bir başkasının tahmininden etkilenmemiş olur.

Eğer iki tahmin arasında büyük bir tutarsızlık varsa takım aradaki farkın neden kaynaklandığını

konuşur. Kullanıcı hikayesi kapsamında yapılacak işi ortak bir resimde birleştirmeye çalışır. Belki

takım üyeleri kullanıcı hikayesini daha küçük işlere bölerler. Daha sonra Geliştirme Takımı kullanıcı

hikayesinin büyüklüğünü yeniden tahmin eder. Bu döngü takım üyelerinin seçimleri aynı olana dek

tekrarlanır.

Takım üyelerinin kullanıcı hikayesinde gerçekleştirilecek bütün işler için büyüklük tahmini yapmaları

hatırlatılmalıdır. İşin sadece kendiyle ilgili bölümü için tahminde bulunmamalıdırlar. Örneğin bir testçi

işi sadece test etmeyi düşünmemelidir.

Sayı dizisi doğrusal değildir. Örneğin 40 ve 100 arasında hiçbir şey yoktur. Neden?

Büyük kullanıcı hikayelerinde yanlış tahmini engellemek içindir. Eğer bir kullanıcı hikayesinin

büyüklüğü yaklaşık olarak 20 hikaye puanı olarak belirlenmişse onun 18’mi 21’mi olduğunu

konuşmak önemsizdir. Bildiğimiz tek şey bunun büyük bir kullanıcı hikayesi olduğudur. Yani 20 bizim

salladığımız bir sayıdır.

Daha detaylı tahminler mi istiyorsunuz? Kullanıcı hikayelerini daha küçük kullanıcı hikayelerine bölün.

Ayrıca 5 ve 2’yi birleştirerek 7 elde edemezsiniz. Bu aldatmayı gerçekleştiremezsiniz. Ya 5’i ya da 8’i

seçmek zorundasınız. Listede 7 yok!

Bazı özel kartlar:

- 0: Bu kullanıcı hikayesi hali hazırda bitirildi ya da bu kullanıcı hikayesinde yapılacak pek bir

şey yok, sadece birkaç dakikalık bir iş demektir.

- ?: Hiç bir fikrim yok!

- Kahve Kupası: Düşünmekten yoruldum. Ara verelim.

Page 47: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

47

Kullanıcı Hikayelerini Netleştirme

Sprint Değerlendirme Toplantısı’nda takım geliştirdiği yeni bir özelliği gösterir ve Ürün Sahibi

somurtur ve şunu söyler: “Bu çok güzel fakat benim istediğim şey değil!”

Ürün Sahibi’nin kullanıcı hikayesinden anladığıyla Geliştirme Takımı’nın anladığının aynı şey

olduğundan nasıl emin olabilirsiniz? Geliştirme Takımı’nın her bir üyesinin aynı anlayışa sahip

olmasını nasıl sağlarsınız? Sağlayamazsınız! En bariz yanlış anlaşılmaları belirlemek için bazı basit

teknikler vardır. En basit teknik her bir kullanıcı hikayesi için Ürün İş Listesi’nde bulunan alanların

gerekli bilgilerle doldurulduğundan emin olmaktır.

Örnek 1

Geliştirme Takımı ve Ürün Sahibi, Sprint Planı oluştuğu için mutlular ve toplantıyı bitirmeye hazırlar.

Scrum Master der ki: “Bir dakika! ‘Kullanıcı ekle’ adındaki kullanıcı hikayesine hikaye puanı

verilmemiş. Hadi bu kullanıcı hikayesine puan verelim.” Birkaç poker turundan sonra Geliştirme

Takımı 20 hikaye puanında anlaşır ve Ürün Sahibi: “Neeeeeee” diye ayağa fırlar. Birkaç dakikalık

ateşli bir tartışmadan sonra Geliştirme Takımı’nın ‘kullanıcı ekle’ adlı kullanıcı hikayesinin kapsamını

yanlış anladığı ortaya çıkar. Takım, kullanıcının eklendiği, silindiği, arama yapılabilen güzel bir ara

yüze sahip bir ekran düşünmüştür. Halbuki Ürün Sahibi veri tabanına script’le kullanıcı eklenmesini

kastetmiştir. Bir tur poker daha oynanır ve 5 hikaye puanında anlaşılır.

Örnek 2

Geliştirme Takımı ve Ürün Sahibi, Sprint Planı oluştuğu için mutlular ve toplantıyı bitirmeye hazırlar.

Scrum Master der ki: “Bir dakika! ‘Kullanıcı ekle’ adlı kullanıcı hikayesinin gösterimini nasıl

yapacağız?”

Bazıları buna Hazır Tanımı diyorlar. Yani Bitti Tanımı, bir işin bitirilmesi için bir kontrol listesiyken

Hazır Tanımı, bir işin Sprint’e alınması için gerekli olanların bulunduğu bir kontrol listesidir.

Bir şirket çok havalı bir fikir geliştirdi. Palavraya Hayır kartları(estimation.lunarlogic.io). Sadece üç

kart var.

1(One)

TFB(too f*cking big)

NFC(no f*cking clue)

Çok havalı! Keşke benim aklıma gelseydi. Gerçi Kahve Kupası fikri benden çıktı ama neyse!

Page 48: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

48

Bir süre mırıldanmadan sonra biri ayağa kalkar ve “ilk önce web sayfasına giriş yaparız daha sonra…”

derken Ürün Sahibi araya girer.

“Web sayfasına giriş yapmak mı?! Hayır, hayır. Bu işlevsellik web sayfasının bir parçası değil.

Yöneticiler rolündeki kullanıcıların girişini sağlayabilmek için veri tabanına o kullanıcıyı kaydeden

basit bir SQL cümleciği sadece.”

Bir kullanıcı hikayesinin “Nasıl gösterimi yaparız?” tanımı çok kısa olabilir ve olmalıdır. Yoksa Sprint

Planlama Toplantısı’nı zamanında bitiremezsiniz. Temelde en çok kullanılacak işlevselliğin manuel

olarak üst seviye bir testidir. “Bunu yap, daha sonra şunu ve sonucu doğrular.”

Bu basit tanımın büyük yanlış anlaşılmaları önlediğini çok gördüm. Yanlış anlaşılmaları önceden

belirlemek iyi bir şeydir, değil mi?

Kullanıcı Hikayelerini Küçük Parçalara Bölme

Kullanıcı hikayeleri çoook büyük ya da çoook küçük olmamalıdır. Eğer 0.5 büyüklüğünde bir sürü

kullanıcı hikayeniz varsa büyük ihtimalle detayları yönetmenin(micro management) kurbanı

olacaksınız. Öte yandan 40 hikaye puanlık bir kullanıcı hikayesinin bir bölümünün bitmesi ve bir

bölümünün bitmemesi gibi bir risk vardır. Bu, şirketinize bir değer kazandırmaz ve yönetimi artırır.

Ayrıca eğer geliştirme hızınız 70 hikaye puanıysa ve en öncelikli iki kullanıcı hikayeniz 40’ar hikaye

puanından 80 hikaye puanı ediyorsa planlamanız zorlaşacaktır. Önünüzde iki seçenek bulunur: Ya

takım hızınızdan daha az iş alacaksınız(kullanıcı hikayelerinden birini seçeceksiniz) ya da takım

hızınızdan daha fazlasını alacaksınız(kullanıcı hikayelerinin ikisini de Sprint’e alacaksınız).

Bir kullanıcı hikayesini her zaman küçük parçalara bölebilirsiniz. Sadece şuna dikkat edin küçük

kullanıcı hikayeleri iş değeri üretiyor olsun.

Kullanıcı hikayelerinin en az iki en çok sekiz adam/gün aralığında olmaları için uğraşırız. Normal bir

takım için takım hızımız 40-60 hikaye puanı aralığındadır. Bu da demektir ki bir Sprint’e ortalama 10

Bu tekniği beğeniyorum ve bir kullanıcı hikayesinin belirsiz olduğunu düşündüğüm zaman hala

kullanıyorum. Bu tekniğe alternatif olarak kullanıcı hikayesi altında yapılacakları çizerek

anlatmaya çalışıyorum ya da kabul kriterlerinin bir listesinin oluşturulmasını sağlıyorum. Kullanıcı

hikayesini problemin çokta detaylı olmayan bir ifadesi olarak ve bu kullanıcı hikayesi bittiğinde nasıl görüneceğine dair somut bir örnek olarak “Bitti Tanımı”nı düşünün.

Page 49: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

49

kullanıcı hikayesi alabiliriz. Kimi zaman 5 kimi zaman 15 kullanıcı hikayesi aldığımız olur. Bu sayı,

Scrum Duvarı’na yapıştırılan kartlar için yönetilebilir bir sayıdır.

5-15 aralığında kullanıcı hikayesi almak kullanışlı bir rehber olabilir. 5’ten az olması kullanıcı

hikayelerinin bir Sprint için büyük olduğu anlamına gelir. 15’ten fazla kullanıcı hikayesi olmasıysa

takımın Sprint’e çok iş aldığı ve bitiremeyebileceği anlamına gelir(ya da kullanıcı hikayeleri çok küçük

ve detaylar takımı çok uğraştıracak demektir).

Kullanıcı Hikayelerini İşlere Bölme

Bir dakika… “Kullanıcı hikayesi” ve “İşler” arasındaki fark nedir? Oldukça değerli bir soru.

Aradaki fark oldukça basittir. Kullanıcı hikayeleri teslim edildiğinde değer katan ve Ürün Sahibi’nin

önemsediği şeyler. Teslim edildiğinde değer katmayan ve Ürün Sahibi’nin önemsemediği şeyler

İşler(Task’lar) olarak düşünülebilir.

Bir kullanıcı hikayesini daha küçük kullanıcı hikayelerine bölme örneği:

5-15 aralığında kullanıcı hikayesi almak kullanışlı bir rehber olabilir. 5’ten az olması kullanıcı

hikayelerinin bir Sprint için büyük olduğu anlamına gelir. 15’ten fazla kullanıcı hikayesi olmasıysa

takımın Sprint’e çok iş aldığı ve bitiremeyebileceği anlamına gelir(ya da kullanıcı hikayeleri çok küçük ve detaylar takımı çok uğraştıracak demektir).

Page 50: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

50

Bir kullanıcı hikayesini işlere(task’lara) bölmenin örneği:

İlginç birkaç gözlem:

● Yeni Scrum Takımları kullanıcı hikayelerini işlere bölmeye ve bunun için zaman harcamaya

direnç gösterirler. Bazıları bunun waterfallvari bir yaklaşım olduğunu hissederler.

● Kullanıcı hikayelerini net bir şekilde anlayabilmek için bu kırılımı önceden yapmak sonradan

yapmak kadar kolaydır.

● Bu şekilde bir kırılım ek işleri ortaya çıkarır ve efor tahminlerinin artmasına neden olabilir.

Ayrıca daha gerçekçi bir planlamaya sahip olmamızı sağlar.

● Bu şekilde kırılım yapmak Günlük Scrum Toplantıları’nın daha verimli olmasını sağlar.(Günlük

Scrum Toplantıları’nı Nasıl Yaparız bölümüne bakınız)

● Kırılımlar doğruya yakın olmasa ve değişse bile yukarıdaki avantajlar geçerlidir.

Sprint Planlama Toplantısı’nı belirlenen sürede gerçekleştirmeye çalışırız. Eğer gerçekleştiremiyorsak

toplantıyı bitiririz.

Not: TDD yapıyoruz ve ilk işimiz “başarısız(fail eden) bir test yaz” oluyor. Son işimizse refactor(kod

okunurluğunu geliştir ve tekrar eden kodları sil) yap.

Kullanıcı hikayelerini işlere bölmek bağımlılıkları ortaya çıkarmak için çok iyi bir fırsattır. Örneğin:

“Üretim ortamındaki loglara erişmemiz gerekiyor” ya da “İK’dan Jim’in yardımına ihtiyacımız var”.

Böylece bu bağımlılıklarla nasıl başa çıkmanın yollarını ararız. Belki Jim’i ararız ve Sprint içinde

bize zaman ayırabilecek mi öğreniriz. Bağımlılığı ne kadar önceden keşfederseniz Sprint içinde problem yaşama olasılığınızı o kadar azaltırsınız!

Page 51: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

51

Günlük Scrum için Yer ve Zaman Belirleme

Sprint Planlama Toplantısı’nın çokça unutulan bir çıktısı Günlük Scrum Toplantısı’nın ne zaman ve

nerede yapılacağını belirlemektir. Bu olmadan Sprint’iniz kötü bir başlangıca sahip olacaktır. İlk

Günlük Scrum Toplantısı herkesin işe nereden başlayabileceğine dair karar verdiği yerdir.

Ben sabahları Günlük Scrum yapmayı tercih ederim. Fakat öğlen ya da akşamüzeri Günlük Scrum

Toplantısı yapmadığımı da itiraf etmeliyim.

Öğleden sonra yapılan Günlük Scrum Toplantıları’nın dezavantajları: Sabah işe geldiğinizde dün

insanlara bugün ne yapacağınızı söylediğinizi hatırlamak zorundasınızdır.

Sabah yapılan Günlük Scrum Toplantıları’nın dezavantajları: Sabah işe geldiğinizde dün ne

yaptığınızı hatırlamak zorundasınızdır. Böylece insanlara bilgi verebilesiniz.

Bence ilk dezavantaj daha kötü çünkü ne yapacağınız ne yaptığınızdan daha önemlidir.

Bizim prosedürümüz kimsenin esnemediği en erken zamanı seçmektir. Genellikle 9:00, 9:30 ya da

10:00. En önemli şey takımdaki herkesin kalbinin tümüyle kabul etmesidir.

Çizgiyi Nereye Çekmeliyiz?

Zaman akıp gidiyor. Sprint Planlama’da yapmak istediğimiz bir sürü şey var. Eğer zamanımız bitiyorsa

neleri yapmaktan vazgeçmeliyiz?

Ben aşağıdaki öncelik listesini kullanıyorum:

Öncelik 1: Sprint Hedefi ve demo tarihi. Sprint’e başlayabilmeniz için bilmeniz gerekenler bu

kadardır. Takım hedefe, bir bitiş tarihine sahiptir ve Ürün İş Listesi’ndeki maddeleri çalışmaya

başlayabilirler. Evet, berbat bir durum ve yarın yeni bir planlama yapmayı düşünebilirsiniz. Fakat

Sprint’e bir an önce başlamanız gerekiyorsa bu kadar bilgiyle de başlayabilirsiniz. Dürüst olmak

gerekirse bu kadar az bilgiyle hiç Sprint’e başlamadım. Ama başlamanız gerektiyse yapılabilir.

Öncelik 2: Takım’ın Sprint’e aldığı işlerin listesi.

Öncelik 3: Sprint’e alınan işlerin büyüklük tahmini.

Öncelik 4: Sprint’e alınan her işin demosu nasıl yapılacak bilgisi.

Öncelik 5: Takım hızı ve kaynak hesaplaması(Sprint planlamanızın gerçekliğini kontrol etmek için).

Takım üyelerinin listesi ve projeye katılım oranlarının bulunduğu bir liste.

Şimdi yapıyorum. Fena değil. Takımın seçmesine izin verin. Eğer emin değilseniz deney yapın. Birçok takım sabah yapmayı tercih ediyor.

Page 52: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

52

Öncelik 6: Günlük Scrum için yeri ve zamanı belirleyin. Karar vermek sadece 1 dakika sürer. Fakat

zamanınız bittiyse Scrum Master belirleyebilir ve herkesi bilgilendiren bir e -posta gönderebilir.

Öncelik 7: Kullanıcı hikayeleri küçük işlere bölünür. Kullanıcı hikayelerini işlere bölme işi Günlük

Scrum içinde de yapılabilir fakat bu yaklaşım Sprint’in akışını bozabilir.

Teknik Kullanıcı Hikayeleri

İşte karmaşık bir konu: Teknik kullanıcı hikayeleri ya da Ürün Sahibi’ne değer katmayan fakat

yapılması gereken işler ya da işlevsel olmayan işler.

Yapılması gereken fakat Ürün Sahibi’ne iş değeri katmayan işlerden bahsediyorum, herhangi bir

kullanıcı hikayesiyle direkt olarak bağlantılı olmayan işler.

Bu işlere biz “teknik kullanıcı hikayesi” diyoruz.

Örnek:

● Sürekli teslim için ana bilgisayar kurulumu

Neden yapılmalı: Çünkü geliştiricilere çok zaman kazandırır ve her iterasyon sonunda

entegrasyon problemlerinin oluşması riskini azaltır.

● Sistem tasarımının oluşturulması

Neden yapılmalı: Çünkü geliştiriciler sistem tasarımının tümünü hatırlamayabilirler,

unutabilirler. Bu da doğru kodun yazılmasının önünde engel olabilir. Herkeste aynı fikir olması için

büyük resmin olduğu bir doküman olmalıdır.

Ne zaman biri “işlevsel olmayan işlerden” bahsetse kıkırdamadan duramıyorum. Kulağa işlevi

olmayan işler gibi geliyor.

Basit tutun ve üst seviye bir şey hazırlayın, en fazla 5 dakika zaman harcayın. Takım üyelerinin

katılımı açısından bir önceki Sprint’e göre büyük bir değişiklik olup olmadığını sorun. Eğer yoksa

dünün hava durumunu* kullanın eğer Takım üyelerinin Sprint’e katılımlarında değişiklik varsa

buna göre Sprint’e alınan işlerde değişiklik yapın.

* Dünün hava durumu deyimi şu anlama gelmektedir: Eğer dün hava yağmurlu olduysa ve

bulutlar dağılmadıysa yani hava da bir değişiklik olmadıysa dün giyindiğiniz şekilde

giyinmelisinizdir. Bugünde şemsiyenizi yanınıza almalısınız demektir. Özetle bir önceki Sprint de

bitirdiğiniz kadar iş almalısınız!

Page 53: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

53

● Veri erişim katmanının iyileştirilmesi

Neden yapılmalı: Çünkü veri erişim katmanı oldukça karmaşıklaşmaya başladı. Herkesin aklını

karıştırıyor ve gereksiz hatalar yapılmasına neden oluyor. Kodun temizlenmesi herkesin zaman

kazanmasını sağlar ve sistemin sağlamlığını artırır.

● Jira’yı yeni sürüme geçirme

Neden yapılmalı: Şuan kullandığımız versiyonda birçok problem var ve yavaş, Jira’yı

güncellemek herkese zaman kazandırır.

Bu kullanıcı hikayeleri normal mi? Yoksa hiçbir kullanıcı hikayesiyle ilgisi olmayan teknik işler mi?

Bunları kim önceliklendirecek? Ürün Sahibi bu işe dahil edilmeli mi?

Teknik kullanıcı hikayeleriyle baş edebilmek için birçok deney yaptık. Tıpkı diğer kullanıcı hikayeleri

gibi birinci sınıf kullanıcı hikayesi gibi düşündük. Bu bizim işimize yaramadı. Ürün Sahibi, Ürün İş

Listesi’ni önceliklendirdiği zaman elmaları ve portakalları karşılaştırıyormuş gibi oldu. Belli

nedenlerden teknik kullanıcı hikayelerine düşük öncelikler verilir. “Evet arkadaşlar, sürekli teslim ana

bilgisayarının kurulmasının çok önemli olduğunu biliyorum fakat önce gelir getirecek işleri yapalım,

ne dersiniz? Daha sonra sürekli teslim lolipopunuzu ekleyebilirsiniz, tamam mı?”

Bazı durumlarda Ürün Sahibi haklıdır fakat genelde haksızdır. Ürün Sahibi’nin her zaman bu kararı

verebilecek yetkinlikte olamayabileceğine karar verdik. Bu nedenle biz aşağıdaki yolu izliyoruz:

1. Teknik kullanıcı hikayelerini görmezden geliriz. Teknik bir kullanıcı hikayesini değer getiren

normal bir kullanıcı hikayesine dönüştürmeye çalışırız. Bu şekilde Ürün Sahibi elmalar ve

portakalları karşılaştırmamış olur.

2. Eğer teknik kullanıcı hikayesini normal bir kullanıcı hikayesine dönüştüremiyorsak yapılacak

teknik iş normal bir kullanıcı hikayesinin içinde bir iş(task) olarak yapılabilir mi diye

düşünürüz. Örneğin DAO katmanının iyileştirilmesi “kullanıcı ekleme” hikayesinin altında bir

iş olarak yapılabilir mi? Sonuçta “kullanıcı ekleme” hikayesi DAO katmanını da içerir.

3. Eğer yukarıdaki iki madde de başarısız olursa teknik kullanıcı hikayesi olarak tanımlayın ve

teknik işler için ayrı bir liste tutun. Ürün Sahibi’nin bu listeyi görmesine izin verin fakat

değişiklik yapmasına izin vermeyin. “Odak çarpanını” ve “tahmini takım hızını”

Page 54: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

54

parametrelerini kullanarak Ürün Sahibi’yle pazarlık yapın ve teknik kullanıcı hikayelerini

gerçekleştirebilmek için Sprint içinde zaman kazanın.

Buna çok benzer bir diyalog Sprint Planlama Toplantıları’mızdan birinde gerçekleşmişti:

Takım: Yapmamız gereken bazı teknik işler var. Zamanımızın %10’ununu bu işlere ayırmak istiyoruz.

Odak çarpanını %75’ten %65’e indirebilir miyiz?

Ürün Sahibi: Tabi kiiiii hayır! Zamanımız yok!

Takım: Peki, geçen Sprint’e bak.(Tüm başlar takım hızının yazıldığı yere döner). Tahmin ettiğimiz

takım hızımız 80’di ve gerçek takım hızımız 30’du, değil mi?

Ürün Sahibi: Aynen! Bu nedenle teknik işlere ayıracak vaktimiz yok, gelir elde edebileceğimiz yeni

işlevselliklere ihtiyacımız var.

Takım: Takım hızımızın bu kadar düşük olmasının nedeni uyumlu teslimleri bir araya getirip test

etmeye çok fazla zaman harcamamızdır.

Ürün Sahibi: Eeee, yani?

Takım: Bu konuda bir şey yapmazsak takım hızımız böyle kötü olmaya devam edecektir.

Ürün Sahibi: Eeee, yani?

Takım: Önerimiz bu Sprint’in %10’luk zamanımızı ayırıp sürekli teslim ana bilgisayarını kurar ve

entegrasyonla ilgili diğer sıkıntıları hallederiz. Bunu yapmak takım hızımızı en az %20 artıracak.

Ürün Sahibi: Hadi canım, gerçekten mi? Peki geçen Sprint bunu neden yapmadık?!

Takım: Çünkü sen yapmamızı istemedin…

Ürün Sahibi: Hmm peki. O zaman bu Sprint yapalım.

Elbet diğer seçenek Ürün Sahibi’ni bu işin dışında tutmaktır. Fakat önce ortak anlayışa ulaşmamak

için bir bahane yok.

Teknik kullanıcı hikayelerinin mükemmel bir model olduğunu düşünüyorum ve hala kullanıyorum.

Küçük teknik hikayeleri günlük işlerin içinde yaparız. Büyük teknik hikayeleri yazar ve teknik

kullanıcı hikayeleri listesine ekleriz. Ürün Sahibi bu hikayeleri görebilir fakat bu hikayeler takım

tarafından yönetilir. Geliştirme Takımı ve Ürün Sahibi Sprint’in %10-20 zamanını bu hikayelere

ayırma konusunda anlaşırlar. Odak çarpanı ya da zaman çizelgesi gibi detaylı izleme modellerine

gerek yok sadece içinizden geçen tahminle belirleyin. Retrospektif toplantısında sorun: ”Sizce bu

Sprint’te teknik kullanıcı hikayelerine kabaca ne kadar zaman harcamışızdır. Sizce doğru mu

yaptık?”

Page 55: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

55

Eğer Ürün Sahibi yetkin ve mantıklı biriyse(eğer öyle biri olursa şanslıyız demektir) mümkün

olduğunca her şeyden haberdar etmenizi ve tüm öncelikleri onun belirlemesine izin vermenizi tavsiye

ederim. Şeffaflık, Scrum’ın ana değerlerinden biri, değil mi?

Hata Takip Sistemi mi? Ürün İş Listesi mi?

İşte zor bir konu! Ürün İş Listesi için Excel mükemmel bir araçtır. Fakat yine de hata takip sistemine

ihtiyacınız vardır ve Excel bu konuda başarılı değildir. Bunun biz Jira kullanırız.

Peki Jira’da bulunan işleri Sprint Planlama Toplantısı’na nasıl dahil ederiz? Demek istediğim şey

hataları görmezden gelmek ve sadece kullanıcı hikayelerine odaklanmak olabilecek bir şey değildir.

Birkaç denememiz oldu:

1. Ürün Sahibi Jira’da bulunan önceliği en yüksek işlerin çıktısını alır. Bunları Sprint Planlama

Toplantısı’na getirir ve diğer kullanıcı hikayeleriyle beraber duvara yapıştırır. Jira’daki işlerin

önceliğini belirlerken sadece Jira’da bulunan hatalarla karşılaştırmaz, elimizde bulunan

kullanıcı hikayeleriyle de öncelik karşılaştırmasında bulunur.

2. Ürün Sahibi, Jira’da seçtiği işler için kullanıcı hikayeleri oluşturur. Örneğin; “Arka ofis

raporlarındaki en önemli hataların düzeltilmesi: Jira-124, Jira-126 ve Jira-180”

3. Hataları düzeltme Sprint’e dahil olmama gibi düşünülür. Geliştirme Takımı odak çarpanını

düşük(%50) tutar. Böylece hataları çözmek için yeterli zaman ayırdıklarından emin olurlar. En

basit haliyle Jira’da bulunan hatalar için takımın belirli bir zaman ayıracağı varsayılır.

4. Ürün İş Listesi maddesi Jira’ya eklenir. Hata, herhangi bir kullanıcı hikayesi gibi düşünülür.

Bu strateji bizim için en iyisi diyemem. Aslında takımdan takıma ve Sprint’ten Sprint’e değişiklik

gösteriyor. Birinci seçenekten yanayım, güzel ve basit.

Sekiz yıl sonra aynı fikirdeyim. Sadece bir tane iyi pratik yoktur. Her strateji içinde bulunduğunuz

şartlara göre iyi olabilir. Sizin için en iyi stratejiyi bulana kadar deney yapın!

Eğer Ürün Sahibi’yle teknik kullanıcı hikayeleri, kalite ve teknik borç hakkında açık bir konuşma

yapamazsanız o zaman çözmeniz gereken daha büyük bir sorununuz var demektir. Bunun bir

göstergesi Ürün Sahibi’nden bilgi saklamanızdır. Her konuşmaya Ürün Sahibi’ni dahil etmek

zorunda değilsiniz fakat Takım ve Ürün Sahibi arasındaki ilişkinin temelinde güven ve saygı

olmalıdır. Bu olmadan geliştirdiğiniz ürünün başarılı olması olasılık dışı bir şeydir.

Page 56: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

56

Sprint Planlama Toplantısı Sonunda Biter

Sprint Planlama Toplantısı’yla ilgili bölümün bu kadar uzun olacağını düşünmemiştim. Sanırım Sprint

Planlama’nın Scrum’da yaptığınız en önemli şey olduğuna dair görüşümün bir kanıtı bu olabilir. Doğru

yapabilmek için çok fazla efor harcayın böylece kalanı çok daha kolay olacaktır.

Eğer herkes(Geliştirme Takımı’nın tüm üyeleri ve Ürün Sahibi) yüzünde bir gülümsemeyle ayrılıyorsa

ve ertesi sabah yüzünde bir gülümsemeyle uyanıyorsa ve ilk Günlük Scrum’larını gülümseyerek

yapıyorlarsa başarılı olmuştur.

Daha sonra elbet her şey kötü gidebilir fakat en azından bunun için Sprint’in planlamasını

suçlayamazsınız! :)

Ya da tam tersi. Diğer her şeyi iyi yapın. Sprint Planlama Toplantısı çantada keklik olsun! :)

Page 57: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

57

Bölüm

Beş

İletişimi Nasıl Gerçekleştiriyoruz?

Neler olduğuna dair tüm şirketi haberdar etmek çok önemlidir. Aksi takdirde insanlar şikayet

edeceklerdir ya da daha kötüsü neler olduğuna dair hatalı varsayımlarda bulunacaklardır.

Bunun için “Sprint Bilgi Sayfası” kullanırız.

Bazen her bir kullanıcı hikayesinin nasıl demo yapılacağına dair bilgi de ekleriz.

Sprint Planlama Toplantısı’ndan hemen sonra Scrum Master bu sayfayı oluşturur, wiki’ye koyar ve

tüm şirkete e-posta gönderir.

Page 58: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

58

Ayrıca wiki’mizde bir de gösterge panelimiz bulunur. Bu gösterge panelinde devam eden tüm

Sprint’lere ulaşılabilir.

Ayrıca Scrum Master Sprint Bilgi formunun çıktısını alır ve takım odasının dışına bu sayfayı yapıştırır.

Böylece takım odasının yanından geçen biri bu sayfaya bakar ve takımın hangi işlerle ilgilendiğinden

haberdar olur. Takım odasının yanından geçen kişi, Sprint Bilgi Sayfası’nda, Günlük Scrum’ın, Sprint

demosunun yeri ve zamanı olduğu için daha fazlasını nerede ve ne zaman öğrenebileceğini bilir.

Sprint’in sonu yaklaştığında Scrum Master yapılacak demoyu herkese hatırlatır.

Bütün bunlar göz önüne alındığında, Takımın neler yaptığını bilmediği üzerine kimsenin şikayeti

olamaz ya da hatalı varsayımlarda bulunamaz.

Mükemmel fikir! Bunu daha sık yapmalıyım!

Page 59: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

59

Bölüm

Altı

Sprint İş Listesi’ni Nasıl Oluştururuz?

Sprint Planlama Toplantısı’nı bitirdik ve yepyeni Sprint’imiz hakkında dünyaya bilgi verdik. Sıra Scrum

Master’ın Sprint İş Listesi’ni hazırlamasında. Bu aktivite Sprint Planlama Toplantısı’ndan sonra fakat

ilk Günlük Scrum’dan önce yapılmalıdır.

Sprint İş Listesi’nin Formatı

Sprint İş Listesi’nin farklı(Jira, Excel, fiziksel duvar) formatlarını deneyimledik. Başlangıçta Excel

kullandık, Sprint İş Listesi’ni oluşturabileceğiniz birçok farklı Excel şablonunu internette bulabilirsiniz.

Hatta otomatik burn-down grafik oluşturanlar bile var. Excel üzerindeki Sprint İş Listemizi nasıl

oluşturduğumuz üzerine çok şey söyleyebilirim. Fakat söylemeyeceğim. Hatta bir örnek bile

vermeyeceğim.

Bunun yerine bizce en etkili yol olan fiziksel duvardaki Sprint İş Listemizi detaylarıyla anlatacağım.

Kullanılmayan bir duvar ya da üzerinde gereksiz şirket logosu, eski şablonlar ya da çirkin tablolar olan

büyük bir duvar bulun. Duvarı temizleyin(eğer gerçekten izin almanız gerekiyorsa izin alın).

Çoooooookkk büyük bir duvar kağıdı bulun en az 2x2 metre ya da 3x2 metre, daha sonra bunu yapın.

Fiziksel duvarlar(Scrum Duvarları) araçlar içinde her zaman ilk tercihimdir! Şaşırtıcı bir şekilde

güçlüdür. Takım üyeleri farklı lokasyonlarda bulunan takımlar Scrum Duvarı görüntüsüne sahip

bir araç kullanın, bunu sağlayabilen birçok uygulama mevcuttur. Daha sonra bu görüntüyü büyük

bir ekrana yansıtın. Günlük Scrum’da herkes ofisindeki ekranın karşısına geçebilir ve Skype(ya da benzeri bir araç) üzerinden konuşabilir.

Page 60: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

60

Tabi ki beyaz tahta kullanabilirsiniz. Fakat bunu yapmak biraz israf gibi olabilir çünkü beyaz tahtaları

tasarım çizimleri için kullanmak daha doğrudur. Scrum Duvarı olarak kullandığınızda atıl kalmış

olacaktır.

Eğer işler(task) için yapışkan kağıt kullanıyorsanız gerçek bant kullanarak yapıştırmayı unutmayın.

Yoksa bir gün geldiğinizde yapışkan kağıtlardan oluşan bir zeminle karşılaşabilirsiniz.

Daha güzeli! Süper yapışkan kağıtlar kullanın. Biraz daha pahalılar fakat düşmüyorlar.(Hayır,

düşündüğünüz gibi değil bana sponsor olmadılar.)

Daha güzeli! Duvarlarınızın tamamını beyaz tahtayla kaplatın! Buna değecek bir yatırım.

Page 61: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

61

Scrum Duvarı Nasıl Kullanılır?

Elbet istediğiniz kadar kolon ekleyebilirsiniz. “Entegrasyon testi için bekleyenler” ya da “İptal

edilenler”. Bir şeyleri karışık hale getirmeden önce iyi düşünün. Ekleyeceğiniz bu kolon gerçekten

ama gerçekten gerekli mi?

Bu konularda basitliğin hayati derecede önemli olduğunu düşünüyorum. Bu nedenle işi

karmaşıklaştıracak şeyleri yapmamanın bedeli gerçekten çok yüksekse yapıyorum.

Örnek 1: İlk Günlük Scrum’dan sonra

İlk Günlük Scrum’dan sonra Scrum Duvarı aşağıdaki gibi görünebilir:

Page 62: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

62

Gördüğünüz gibi sadece üç iş ileriki bir kolona taşındı. Geliştirme Takımı bugün bu işler üzerinde

çalışacak demektir.

Bazen büyük takımlarda bir iş “check out” kolonunda kalabiliyor çünkü hiç kimse o işle ilgili kimin

çalıştığını hatırlamıyor. Eğer bu olay bir takımda sık oluyorsa bunun için bir kural belirlenir örneğin bir

işi “check out” kolonuna taşıyan kişinin adını yapışkan kağıdın üzerine yazabiliriz.

Bugünlerde herkes avatar kullanıyor. Geliştirme Takımı’nın her bir üyesi kendine bir karakter(South

Park karakteri ya da herhangi bir şey) seçer, çıktısını alır ve bir mıknatısla bunu duvara yerleştirir.

Kimin hangi iş üzerinde çalıştığını görmenin harika bir yoludur. Ayrıca Geliştirme Takımı üyelerinin

sadece iki tane mıknatısı olduğunu varsayalım, o zaman hem aynı anda çalışılan iş sayısını limitlemiş

hem de çok görevliliğin önüne geçmiş olursunuz. “WTF(İngilizce’deki güzel olan birkaç ifadeden biri),

yapıştıracak avatarım kalmamış!” Evet, işte bu nedenle yeni işlere başlamayı bırak ve elindeki işleri

bitirmeye başla!

Page 63: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

63

Örnek 2: Birkaç gün sonra

Birkaç gün sonra Scrum Duvarı aşağıdaki gibi görünebilir:

Gördüğünüz gibi Deposit’le ilgili kullanıcı hikayesini tamamladık(kodlar kaynak kodla birleştirildi,

testleri ve kod iyileştirmeleri yapıldı). “Migration Tool” kullanıcı hikayesinin bir bölümü tamamlandı.

“Backoffice Login” kullanıcı hikayesine yeni başlandı ve “Backoffice User Admin” kullanıcı hikayesine

daha başlanmadı.

Sağ alt köşede gördüğünüz gibi planlamaya dahil etmediğimiz üç maddemiz bulunuyor. Sprint

Retrospektif Toplantısı’nda bunları konuşmak isterseniz diye hatırlatıcı olarak bulunması kullanışlı

olabilir.

Aşağıda Sprint sonuna yaklaşmış gerçek bir Scrum Duvarı’nın resmi bulunuyor. Sprint ilerledikçe

duvar karmaşık hale gelir. Scrum Duvarı her Sprint’te yeniden oluşturulduğu için karmaşık hale

gelmesinde herhangi bir problem yok.

Page 64: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

64

Burn-down Grafik Nasıl Oluşturulur?

Burn-down grafiğe yakından bakalım!

Bu grafikten aşağıdaki bilgilere ulaşabilirsiniz:

● Sprint’in ilk günü 1 Ağustos’ta Geliştirme Takımı 70 hikaye puanlık kalan iş olduğunu tahmin

etmiştir. Aslında bu takımın tahmin edilen hızıdır.

● 16 Ağustos’ta Geliştirme Takımı 15 hikaye puanlık kalan iş olduğunu tahmin etmiştir. Kesikli

çizgi yaklaşık olarak iyi bir seviyede olduklarını gösterir. Eğer bu hızla ilerlemeye devam

ederlerse Sprint sonunda bütün işleri tamamlamış olacaklardır.

Page 65: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

65

X ekseni üzerinde tatil günlerini atlarız. Sonuçta hafta sonları neredeyse iş yapılmıyor. Önceleri hafta

sonlarını da dahil ederdik fakat bu burn-down grafiğin biraz karmaşık olmasına neden oluyor. X

ekseni üzerinde hafta sonuna denk gelen bölümler düz bir çizgi olarak kalıyordu. Bu da grafiğimizin

uyarı işareti gibi görünmesine neden oluyordu.

Scrum Duvarı’nda Uyarı İşaretleri

Scrum Duvarı’na hızlı bir bakış atan herkes Sprint’in nasıl ilerlediğine dair fikir sahibi olabilmeli.

Scrum Master, Takımın uyarı işaretlerini dikkate alarak hareket etmesinden sorumludur. Uyarı

işaretleri aşağıdakiler gibi olabilir:

Scrum bir aylık Sprint’ler koşan takımlar için tasarlanmıştır ve işlerin takibi için Excel

kullanılmıştır. Böyle bir durumda burn-down grafik gerçekten çok kullanışlı bir araçtır. Nerede

olduğunuzu görsel bir şekilde çok güzel gösterir. Şimdilerdeyse birçok takım daha kısa Sprint’ler

koşmaktadır ve oldukça görsel Scrum Duvarları bulunmaktadır. Bu nedenle bazı takımlar burn-

down grafik çizmeyi bırakmıştır. Çünkü Scrum Duvarı’na bir bakışla ihtiyaç duydukları bilgiyi

edinebilmektedirler. Burn-down grafiği kullanmayın bakalım özleyecek misiniz? :)

Page 66: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

66

Takip Edilebilirlik?

Bu modelde takip edilebilirlik için önerebileceğim en iyi yöntem Scrum Duvarı’nın her gün bir

fotoğrafının çekilmesidir. Ben de bu yöntemi kimi zaman denerim fakat fotoğrafları incelemek gibi bir

ihtiyacım hiç olmadı.

Page 67: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

67

Eğer takip edilebilirlik sizin için çok önemliyse belki de Scrum Duvarı çözümü sizin için uygun değildir.

Fakat size şunu önerebilirim: Sprint’in detaylı bir planlamasını yapabilirsiniz. Sprint bittiğinde ve

çalışan kod teslim edildiğinde, gerekli dokümanlar oluşturulduğunda Sprint’in beşinci gününde kaç

kullanıcı hikayesinin tamamlandığını biri önemsiyor mu? Deposit kullanıcı hikayesi için test

yazılmasının kaç saat sürdüğü ve bu testin yazılması için kaç saat tahminde bulunulduğunu biri

önemsiyor mu?

Bugünlerde de takip edilebilirliğin çok abartıldığını düşünüyorum. Bu tarz verileri sağlayan araçlar

bulunuyor fakat kullanan birini hiç görmedim. Kod versiyon kontrol sisteminiz ihtiyacınız olan şeyi

fazlasıyla verecektir. (WTF, bu değişikliği kim yaptı?) Basit kurallar koyabilirsiniz örneğin kullanıcı

hikayesinin numarasını kodunuzu göndermeden önce yorum bölümüne ekleyebilirsiniz ve birçok

durum için takip edilebilirlik elde edebilirsiniz.

Tahminler Günlük mü, Saatlik mi Olmalı?

Scrum üzerine yazılan kitaplar ve makalelerde işler(task’lar) saat bazında tahmin edilmiştir, gün

bazında değil. Bizde saatleri kullanıyorduk. Genel formülümüz: 1 verimli adam/gün = 6 verimli

adam/saat.

Aşağıdaki nedenlerden dolayı bugünlerde bu yöntemi birçok takımımızda kullanmıyoruz:

- Adam/Saat tahminler işleri çok küçük parçalara bölmek anlamına geliyor. Bu da bir saatlik, iki

saatlik birçok iş olmasına ve dolaylı olarak mikro yönetime kayıyor.

- Zamanla anladık ki tahminler yapılırken zaten herkes adam/gün olarak düşünüyormuş ve

adam/saat tahminleri yaparken 6 ile çarpıyormuş. “Hmmm bu iş 1 günde biter o zaman bu

işe 6 saat yazabiliriz.

- İki farklı birim kafa karışıklığına neden olur. “Bu tahminler adam/gün mü yoksa adam/saat

mi?

Bu nedenle tüm zaman bazlı tahminler için adam/gün’ü kullanırız. Bu tahminlere hikaye puanı deriz.

En küçük değerimiz 0.5’tir. 0.5’ten daha küçük işler ya silinir ya da diğer birkaç küçük işle bir araya

toplanır. En kötü ihtimalle 0.5’ten küçük olsa bile 0.5 olarak değer veririz. Tahminlerde küçük

sapmalar takıma büyük zarar vermez. Güzel ve basit olmak daha önemlidir.

Page 68: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

68

Daha basit ve güzeli: İşlerin büyüklüğüne tahmin vermeyi tamamen bırakın! Birçok takım işlerini

bir ya da iki günlük küçük işlere nasıl böleceğini zamanla öğrenir. Eğer bunu yapabilirseniz işlere

büyüklük tahmini vermeye zahmet etmeyin. Aslında böylece oldukça büyük bir çöpü* ortadan

kaldırmış olursunuz. Eğer kullanmak istiyorsanız burn-down grafikleri yine de kullanabilirsiniz. Bu

durumda sadece işleri(task’ları) saymanız ve burn-down grafikte nerede olduğunuzu belirlemeniz

yeterli olacaktır.

*Alper Tonga'nın Kanban; Evrimsel Değişim – S01E01 yazısını okuduktan israf sözcüğünün yerine

çöp sözcüğünü kullanmaya başladım. Alper'in çöp sözcüğünü kullanmasının nedeni çöpün somut

olarak bir varlık ifade etmesidir. Çöp, kötü kokusu, çirkin görüntüsü olan ve kurtulmamız gereken

her şey olabilir. Bu tanımın yanında israf sözcüğü kulağa çok soyut geliyor. Bu soyut anlam

aksiyon almamız için uyarıcı bir nitelik taşımıyor. Çöp ifadesini topluluğa kazandırdığı için Alper

Tonga'ya teşekkür ederim.

Page 69: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

69

Bölüm

Yedi

Takım Odasını Ayarlama

İlginç ve değerli tasarım konuşmalarının birçoğunun Scrum Duvarı önünde gerçekleştiğini fark ettim.

Bu nedenle bu bölümü “tasarım köşesi” olarak belirledik.

Çok yararlı olduğunu gördük. Tüm sistemin nasıl çal ıştığını anlayabilmek için tasarım köşesinde iki

Scrum Duvarı’na ve gerektiğinde bilgisayara bakmaktan daha iyi bir yol bulamadık.

“Tasarım duvarı”, en önemli tasarım çizimlerinin ve en önemli tasarım dokümanlarının(ara yüz

prototipleri, domain modelleri) çıktılarının bulunduğu bir beyaz tahtadır.

Page 70: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

70

Yukarıdaki resimde biraz evvel bahsettiğim köşede bir Günlük Scrum yapılıyor.

Hmm…burn-down grafik şüpheli bir şekilde dümdüz inmiş, değil mi? Fakat Takım bunun gerçek

olduğunda ısrar ediyor. ☺

Takım Beraber Otursun!

Konu takım üyelerinin nerede oturacağına ve masalarının nerede olacağına geldiğinde yeterince

güçlü ifade edilmeyen bir şey var.

Takım beraber otursun!

Daha net olması için tekrar söylüyorum:

Takım beraber otursun!

İnsanlar yerlerini değiştirmeye direnç gösterirler. En azından benim çalıştığım yerlerde. Bütün

eşyalarını ve bilgisayarını toplayıp başka bir masaya taşınmak istemezler. Taşınacakları mesafe ne

kadar az olursa direnç o kadar yüksek olur. “Hadi aaaammmaaa! Oradan oraya beş metre taşınmanın

anlamı nedir ki?”

Scrum konusunda şirketlere 8 yıldır yardım ediyorum ve eklemek istediğim bir şey var:

TAKIM BERABER OTURSUN!

Page 71: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

71

Verimli Scrum Takımları oluştururken başka bir alternatif yoktur. Takım üyelerini bir araya getirin.

Her bir takım üyesini tehdit etmek, tüm eşyalarını taşımak ve eski kahve izlerini silmek zorunda

olsanız bile. Eğer takımın beraber oturabileceği bir yer yoksa oturabilecekleri bir yer ayarlayın. Hatta

gerekiyorsa bodrum kata taşının. Masaları sağa sola çekin, ofis yöneticisine rüşvet verin, ne

gerekiyorsa yapın. Takım beraber otursun.

Bir kere takım beraber oturmaya başladığında anında kazanç elde etmeye başlayacaksınız. Bir

Sprint’ten sonra Takım bunun iyi bir fikir olduğunda fikir birliğine varacaktır.

Peki “beraber” ne anlama geliyor? Masalar nasıl yerleştirilmeli? Masaların en iyi şekilde nasıl

yerleştirilebileceğine dair bir fikrim yok. Fakat olsa bile birçok takımın nasıl oturabileceklerini

belirleme lüksüne sahip olmadığını varsayıyorum. Genellikle fiziksel kısıtlar vardır, komşu takım,

tuvalet kapısı ya da ofisin ortasındaki otomat.

Beraber’in anlamı:

Duyulabilirlik: Takımdaki herhangi biri başka biriyle konuşmak için bağırmamalı ya da masasından

kalkmamalıdır.

Görülebilirlik: Herkes birbirini görebilmelidir. Herkes Scrum Duvarı’nı görebilmelidir. Okuyacak kadar

yakın olmak şart değil fakat görebilecek kadar yakın olunmalıdır.

İzolasyon: Eğer takım üyelerinizin tamamı birden ayağa kalkıp bir konu hakkında konuşmaya

başlarsa, bir tasarım konusunda canlı bir tartışma yaşanırsa takım dışındaki kişilerin rahatsız

olmayacağı kadar ayrı olunmalıdır. Tabi ki tersi de geçerlidir, takım üyeleri diğer çalışanları rahatsız

etmeyecek şekilde olması gerekir.

“İzolasyon”un anlamı takımın organizasyondan tamamıyla yalıtılması demek değildir. Kübiklerden

oluşan bir ofiste takımınızın kendi kübiğinin bulunması ve rahatsız edici seslerden yalıtılmış olması

yeterli olabilir.

Page 72: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

72

Peki ya dağınık takımınız bulunuyorsa? O zaman şansınız yok demektir. Zararın en aza

indirgeyebileceğiniz kadar teknik yardımı(video konferans, web kameralar, masaüstü paylaşım

araçları vb.) kullanın.

Ürün Sahibi’ni Yakında Tutun

Ürün Sahibi, Geliştirme Takımı’nın bir sorusu olduğunda gidip sorabileceği ve Ürün Sahibi istediği

zaman gelip Scrum Duvarı’nı görebileceği kadar mesafede olmalıdır. Fakat Takımla beraber

oturmamalıdır. Neden? Çünkü büyük ihtimalle işlerin detayına karışmadan duramayacak ve Takım

kendi havasını(sıkı, kendini yöneten, hiper verimli bir hava) bulamayacak.

Doğruyu söylemek gerekirse bu bir spekülasyon. Ürün Sahibi’nin Takımla beraber oturduğu bir

durumla hiç karşılaşmadım. Bu nedenle bunun kötü bir fikir olduğuna dair elimde gerçek bir örnek

bulunmuyor. Sadece bir his ve diğer Scrum Master’lardan duyduklarım var.

Müdürleri ve Koçları Yakında Tutun

Hem müdür hem koç olduğum için bunu yazmak benim için biraz zor...

Takımla olabildiğince yakın çalışmak benim işimdi. Takımları kurardım, birinden diğerine yardıma

koşardım, takım üyesi arkadaşlarımla eşli programlama yapardım, Scrum Master’lara koçluk

yapardım, Sprint Planlama Toplantıları’nı ayarlardım. Birçok kişi bunun iyi bir şey olduğunu

düşünüyordu çünkü Çevik yazılım geliştirme üzerine bilgim vardı.

Fakat aynı zamanda yazılım geliştirmeden sorumlu müdürdüm. Bunun anlamı bir takımla bir araya

geldiğimde otomatik olarak takımın kendi kendini yönetmesine olumsuz etki ediyordum. Bu

olumsuzluğun oluşması benim yaptıklarımdan değil sadece varlığımdan kaynaklanıyordu. “Offf

patron geldi. Muhtemelen ne yapmamız gerektiğine ve kimin yapması gerektiğine dair birçok fikri

vardır. En iyisi konuşma işini ona bırakalım.”

Çok büyük yanılmışım hem de çok büyük. Gördüğüm en iyi takımlar içinde Ürün Sahibi bulunan

takımlardır. Ürün Sahibi uzakta ve erişilemez olduğunda Geliştirme Takımları büyük sıkıntı

yaşarlar. Bu da yakın olmaktan kaynaklanan problemlerden daha büyüklerine neden olabilir. Ürün

Sahibi, Takım ve paydaşlarla geçirdiği zamanı ölçülü bir şekilde dengelemelidir. Demek istediğim

şey zamanının tamamını Geliştirme Takımı’yla geçirmemelidir.

Page 73: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

73

Benim mottom: Eğer Scrum Koçu’ysanız(belki aynı zamanda yönetici) olabildiğince takıma dahil olun.

Fakat sadece belirli bir zaman dilimi için daha sonra kenara çekilin ve takımın kendi kendini

yönetmesine izin verin. Arada bir takımı kontrol edin, bu çok sık olmasın. Belki Sprint demolarına

katılabilirsiniz ya da Scrum Duvarları’na göz atabilirsiniz, Günlük Scrum’larına katılıp dinleyebilirsiniz.

Eğer bir geliştirme alanı görürseniz Scrum Master’ı kenara çekin ve koçluk yapın, bunu takım önünde

yapmayın. Diğer iyi bir fikirse Sprint Retrospektif Toplantısı’na katılmak olabilir. Eğer takımınız size

yeterince güveniyorsa sizin varlığınızdan ötürü içlerine kapanmayacaklardır.

İyi işleyen bir Scrum Takımı için takımınızın ihtiyacı olan her şeyi yaptığınızdan emin olun ve daha

sonra takımın önünden çekilin ta ki Sprint demosuna kadar.

Çeviklik bağlamında müdürlere verebileceğim en iyi tavsiye son cümledir. İyi müdürler, takımın

başarısında çok önemli etkendir. İyi bir müdür olarak takımın size ihtiyacı kalmayacak şekilde

takımı yetiştirmeli ve geri çekilmelisiniz. Muhtemelen bunda başarısız olacaksınız fakat deneme

girişiminiz bile sizi doğru yöne itecektir. “Bu takımı nasıl yönetmeliyim?” sorusundan ziyade

“Takımın kendini yönetmesi için neye ihtiyacı var?” sorusunu sorun. Takımın ihtiyacı olan

şeffaflık, net bir hedef, eğlenceli ve motive edici bir iş ortamı ve engelleri çözebilmek için

yönetimsel olarak izlemeleri gereken bir yol.

Page 74: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

74

Bölüm

Sekiz

Günlük Scrum’ları Nasıl Yapıyoruz?

Günlük Scrum’larımız oldukça kitabına uygun şekilde gerçekleşiyor. Her gün aynı yer ve saatte

zamanında başlıyor. Başlangıçta Sprint planlamasını* yapmak için başka bir odaya gidiyorduk(o

günlerde elektronik bir Sprint İş Listemiz vardı). Her neyse bugünlerde Günlük Scrum’ı Scrum

Duvarı’nın önünde yapıyoruz ve hiçbir teknik bundan daha iyi değil.

Günlük Scrum Toplantıları’nı ayakta yapıyoruz çünkü ayakta yapmamız 15 dakika zaman kısıtını

aşmamız riskini azaltıyor.

*Yazar Sprint Planlama Toplantısı’ndan bahsetmiyor. Her gün takım üyelerinin bir araya gelip Günlük Scrum

Toplantısı’nda Sprint’te nasıl i lerlemeleri gerektiğini konuşurlar. Bu da Sprint’in yeniden planlanması anlamına

gelmektedir.

Scrum Kılavuzuna, son güncellemesinde(2006 güncellemesi olabilir) bu duruma karşılık üç soru

eklendi:

- Takımın, Sprint Hedefine ulaşabilmesi için ne yaptım?

- Takımın, Sprint Hedefine ulaşabilmesi için bugün ne yapacağım?

- Benim ya da Takımı’mın önünde engel var mı?

Günlük Scrum gerçekten çok önemlidir! Bilgi senkronizasyonunun çoğunun gerçekleştiği ve

Takımın önündeki engellerden bahsettiği yerdir. Yine de kötü yapılıyorsa oldukça sıkıcı olabilir. Bir

grup insan düzensiz bir şekilde konuşuyor ve kimse kimseyi dinlemiyor.

Page 75: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

75

Scrum Duvarı’nı Güncelleme

Normalde Scrum Duvarı’nı Günlük Scrum Toplantıları’nda güncelleriz. Her bir takım üyesi dün ne

yaptım, bugün ne yapacağım konularını özetlerken Scrum Duvarı’ndaki yapışkan kağıtları da

günceller. Planlanmayan bir iş geldiyse bunun için yeni yapışkan kağıtlar yazılır ve duvara yapıştırılır

ya da ilerleme kaydedilen bir işte zaman güncellenir. Bu bazen iş için ayrılan zamanın azaltılması ya

da artırılması olabilir.

Bazı takımların Günlük Scrum öncesinde Scrum Duvarı’nın güncellenmesi gibi kuralları vardır. Bu da

işe yarayan bir yöntemdir. Önemli olan kuralı belirlemektir ve bu kurala uymaktır.

Sprint İş Listenizin hangi formatta olduğuna bakmadan bütün takımın Sprint İş Listesi’ni güncel

tutmasını sağlayın. Scrum Master’ın Sprint İş Listesi’nden sorumlu tek kişi olduğu Sprint’ler yaptık.

Scrum Master, her gün takım üyelerine gidip işlerin tamamlanması için ne kadar zaman kaldığını

öğrenmek zorundaydı. Bu yöntemin dezavantajları aşağıdaki gibi:

● Scrum Master, yönetimsel işlere çok fazla zaman harcıyor. Halbuki bunun yerine takıma

destek olabilir ve engelleri ortadan kaldırabilir.

● Takım üyeleri Sprint’te hakkındaki farkındalıkları azalıyor. Sonuçta Sprint İş Listesi bu

yöntemde onların önemsediği bir şey olmuyor. Bu geri bildirim eksikliği takımın çevikliğinin

ve odağının azalmasına neden oluyor.

Sprint Hedefine(takımın paylaşılmış amacı) odaklanıldığının farkına vardınız mı? Eğer Günlük

Scrum’larınız sıkıcı olmaya başladıysa yukarıdaki soruları deneyebilirsiniz! Ya da Dan North

versiyonunu deneyebilirsiniz: “Bugünün spesiyali nedir?” cümlesiyle açık bir tartışma

başlatılabilir. Ne yaparsanız yapın Günlük Scrum’ların sıkıcı olmasına izin vermeyin. Deney

yapmaya devam edin.

Birçok takım Günlük Scrum Toplantısı’nda işleri güncellemeye aşırı zaman harcar. Çöp! Günlük

Scrum’ın amacı takım üyeleri arasındaki bilginin eşitlenmesidir. Bu nedenle bence duvarın

güncellenmesi için en iyi yol “gerçek zamanlı” yapmaktır. Yani gün içinde olaylar geliştikçe duvarın

güncellenmesidir ve işlerin(task’ların) tahminlenmesi işi tamamıyla bırakılmalıdır. Böylece Günlük

Scrum, yönetimsel işler yerine gerçekten iletişim kurabilmek için kullanılır.

Page 76: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

76

Eğer Sprint İş Listesi iyi tasarlanmışsa her bir takım üyesi kolayca güncellemelerini yapabilir.

Günlük Scrum Toplantısı’ndan hemen sonra takımdan biri bütün zaman tahminlerini toplar ve Sprint

burn-down grafiğini çizer.

Geç Gelenlerle Başa Çıkma

Bazı takımlar bozuklukların ve kağıt paraların olduğu kutuları vardır. Geç kaldığınız zaman bir dakika

bile olsa kutuya katkıda bulunursunuz. Bunun bahanesi yoktur. Eğer toplantıdan önce arar ve geç

kalacağınızı söyleseniz bile kutuya katkıda bulunmak zorundasınız. Eğer gerçekten sağlam bir

bahaneniz varsa katkıda bulunmayabilirsiniz örneğin doktor randevusu ya da düğününüz falan…

Kutudaki para sosyal etkinlikler için kullanılabilir. Oyun gecelerinde hamburger almak için mesela. :)

Bu yöntem başarılıdır. Fakat sadece geç kalanların çok olduğu takımlar için gereklidir. Bazı

takımlarınsa buna ihtiyacı yoktur.

“Bugün Ne Yapacağımı Bilmiyorum”cularla Başa Çıkma

“Dün şunları, şunları, şunları yaptım. Bugün ne yapacağıma dair aklımda hiçbir şey yok!” ifadesi

yaygın bir şekilde kullanılır. Eeee şimdi ne olacak?

Diyelim ki Lisa ve Joe ne yapacaklarını bilmeyen kişiler olsun.

Eğer ben Scrum Master’sam Lisa ve Joe’u geçer sıradaki kişinin konuşmasını isterim fakat Lisa ve

Joe’un yapacak işleri olmadığına dair notumu da alırım. Herkes konuştuktan sonra Takımla beraber

Scrum Duvarı’na yaklaşır ve yukarıdan aşağıya her şey olması gerektiği gibi mi bakarım. İşi olmayanlar

için yeni işler belirlenir ve daha sonra ne yapacağını bilmeyen kişilerin yanına gider, yeni işlerin

eklendiğini söylerim. Ne yapacaklarına dair fikirleri olup olmadığını sorarım ve sonunda bir fikir

edinirler.

Takımlar iyileştirmeler için bu tarz şaka yollu aktiviteleri her zaman kullanırlar. Önemli olan

bunun takım içinden çıkmasıdır. Bu şaka yollu iyileştirme takıma yukarıdan ya da dışarıdan zorla

gelmemelidir. Bir takımda geç kalan kişiler şarkı söylemek zorundaydılar. Eğer ikinci defa geç

kalırsanız hem şarkı söylemek hem de dans etmek zorundaydınız. :)

Page 77: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

77

Eğer yine de fikirleri yoksa eşli programlama için birileri var mı bakarım. Diyelim ki Niklas arka ofis

yönetici ekranını geliştirecek. Bu durumda nazik bir şekilde Lisa ya da Joe’un Niklas ile eş olmasını

rica ederim. Genellikle çalışan bir yöntemdir.

Eğer bu yöntemde işe yaramıyorsa işte küçük bir numara:

Scrum Master: Betaya hazır teslim sürümünü kim göstermek ister?(Diyelim Sprint Hedefi bu olsun)

Team: (Takımın kafası karışır ve sessizce bekler)

Scrum Master: Daha bitiremedik mi?

Team: hmmm...hayır.

Scrum Master: Hadi ya! Neden ki? Ne kaldı?

Team: Test makinemiz yok, derleme script’lerinin düzeltilmesi gerekiyor.

Scrum Master:(Scrum Master içinden Aha! der) Hadi ya, Scrum Duvarı’na iki yapışkan kağıt daha

ekler. Joe, Lisa, bugün bu konularda yardımcı olabilir misiniz?

Joe: Sanırım bir yerlerden bir test makinesi bulabilirim.

Lisa: O zaman bende derleme script’ini düzeltmeye çalışayım.

Eğer şanslıysanız sorduğunuz betaya hazır teslimi biri size gösterecektir. Harika! Sprint Hedefi’ne

ulaştınız. Fakat ya Sprint’in ortasındaysanız ne olacak? Takımı iyi iş çıkardıkları konusunda tebrik edin.

Ürün İş Listesi’nden alınması gereken işleri belirleyin. Bunları Sprint İş Listesi’ne ve Scrum Duvarı’na

ekleyin. Yeni bir Günlük Scrum yapın. Ürün Sahibi’ne Ürün İş Listesi’nden yeni işler çektiğinize dair

bilgi verin.

Diyelim ki Takım, Sprint Hedefi’ne ulaşmadı ve Joe ve Lisa Sprint Hedefi’ne yönelik bir şey yapmayı

reddediyorlar. Aşağıdaki stratejilerden birkaçını denerim(hiçbiri hoş değildir fakat son çaredir):

Utanma:”Peki, takıma nasıl yardımcı olabileceğinize dair fikriniz yoksa eve gitmenizi ya da kitap

okumanızı falan öneririm. Ya da oturun ve biri sizi yardım için çağırana kadar bekleyin.”

Eski Usül: En basit haliyle iş atayın.

Ya da bu zamanı teknik borcu ödemek ya da yeni teknolojileri keşfetmek için kullanabilirsiniz.

Yine de Ürün Sahibi’ni bilgilendirin.

Page 78: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

78

İş Arkadaşı Baskısı:”Joe ve Lisa Sprint Hedefi’ne ulaşabilmemiz için yapacak yararlı bir şey bulana

kadar burada bekleyeceğiz. O yüzden sakin olun ve bekleyin.”

Hizmetkarlık: “Peki Takıma direkt olmayan bir şekilde yapılması gerekenler konusunda hizmet

ederek yardımcı olabilirsiniz. Kahve alabilir, çalışanlara masaj yapabilir, çöpü temizleyebilir, öğle

yemeği yapabilir ya da gün içinde ne ihtiyacımız olursa onu yerine getirebilirsiniz.” Joe ve Lisa’nın

yapacakları teknik bir iş bulma hızına şaşıracaksınız.

Eğer bir kişi sık sık sizi bu kadar yoruyorsa muhtemelen o kişiyi bir köşeye çekmeli ve ciddi bir şekilde

koçluk yapmalısınız demektir. Eğer problem devam ederse bu kişinin takımınıza yararlı olup

olmadığını değerlendirmelisiniz.

Eğer çoookk önemli değilse takımdan gönderilmesini deneyebilirsiniz.

Eğer önemliyse ona çobanlık yapabilecek potansiyele sahip biriyle eşleştirebilirsiniz. Joe mükemmel

bir yazılım geliştirici ve mimar olabilir fakat bu kadar. Onun tercihi ne yapacağını başkalarının

söylemesi yönündedir. Niklas’a Joe’nun çobanı olma görevini verin ya da bu görevi siz üstlenin. Eğer

Joe takım için bu kadar önemliyse bu efora değecektir. Benzer durumlar yaşadık öyle ya da böyle işe

yaradı.

“Bugün ne yapacağımı bilmiyorum” durumu Scrum’a yeni başlayan takımlarda tipik bir

problemdir. Çünkü bu kişiler daha önceleri birilerinden emir alarak işlerini yapıyorlardı. Kendi

kendini yönetme konusunda tecrübe edindikçe problem ortadan kalkacaktır. İnsanlar ne

yapmaları gerektiğini öğreniyorlar. Yani Scrum Master’sanız ve yukarıdaki numaraları sık sık

kullanmak zorunda kalıyorsanız belki de bir adım geride durmayı düşünmelisiniz. Yardımsever

niyetinize rağmen belki de takımın önündeki en büyük engel, kendi kendini yönetmeyi

öğrenmelerinin önündeki engel siz olabilirsiniz.

Page 79: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

79

Bölüm

Dokuz

Sprint Demo’larını Nasıl Yapıyoruz?

Sprint Demo(ya da Sprint Değerlendirme), Scrum’ın insanların küçümsemeye yatkın olduğu önemli

bir parçasıdır.

“Gerçekten demo yapmak zorunda mıyız? Gösterebileceğimiz çok fazla şey yok!”

“&%$# demoyu hazırlamaya vaktimiz yok!”

“Diğer takımların demo’larına katılmaya vaktim yok!”

Bütün Sprint’lerin Bir Demo’yla Bitmesinde Neden Israr Ediyoruz?

İyi yapılan bir demo’nun öyle görünmemesine rağmen etkisi büyük olur:

Takım başarısı için ödüllendirilir, kendilerini iyi hissederler.

- Takım dışındaki kişiler takımın neler yaptığından haberdar olur.

- Demo, paydaşlardan geri bildirim alınmasını sağlar.

- Demo’lar farklı takımların bir araya geldiği ve işleri üzerine konuştukları sosyal etkinlikler

olmalıdır. Bu çok değerlidir.

Neden Sprint Demo dediğimi hiç anlayamıyorum. Ne düşünüyordum acaba?! Resmi adı Sprint

Değerlendirme ve çok daha iyi bir terim. Demo tek yönlü bir iletişimi ifade ediyor. “İşte buyrun

bakın, bizim geliştirdiğimiz şey”. Öte yandan “Değerlendirme” çift yönlü bir iletişimi ifade eder.

“İşte buyrun bakın, bizim geliştirdiğimiz şey. Ne düşünüyorsunuz?” Sprint Değerlendirme’nin

amacı aslında müşteriden alınacak geri bildirimdir! Yani aşağıda demo diye bir şey okursanız

değerlendirme diye düşünün. Tamam mı?

Page 80: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

80

- Demo yapmak, işleri bitirme ve teslim etme konusunda Geliştirme Takımı’nı motive eder,

dolaylı yoldan işleri bitirme konusunda yararlı bir strese neden olur. Demo’lar olmadan %99

bitmiş işleri üste üste yığıyoruz demektir. Demo’larla daha az iş bitiriyor olabiliriz fakat bu

işler %100 bitmiş oluyor. Bu durum tam bitmemiş bir sürü şeye sahip olmaktan daha iyidir.

Ayrıca bir sonraki Sprint’e bu yarım işlerde eklenecek ve bir sonraki Sprint’in odağını da

dağıtacaktır.

Eğer bir takım demo yapmaya zorlanırsa ve gösterecekleri gerçekten çalışan fazla bir şey yoksa demo

utanç verici geçecektir. Demo’yu yaparken takım kekeleyecek ve dili sürçecektir ve sonrasındaki

alkışlar çokta içten olmayacaktır. İnsanlar takım için kendilerini kötü hissedecektir. Belki de bazıları

bu kadar kötü bir demo yaptıkları için takıma kızacaktır.

Bu can yakar! Fakat etkisi acı bir ilacın etkisi gibidir. Bir sonraki Sprint takım bir şeyleri gerçekten

bitirmeye çalışacaktır. Şöyle düşüneceklerdir: “Belki de bu Sprint beş maddenin gösterimini yapmak

yerine iki maddenin gösterimini yapmalıyız. Fakat çalışan iki tane!” Takım ne yapmak zorunda

olduğunu bilir. Bu da bir sonraki demoda çalışan bir şeyler olma olasılığını artırır. Bunun olduğunu

birçok kere gördüm.

Birden fazla takımın çalıştığı projelerde bu durum daha da can sıkıcı bir şeydir. Projeye dahil olan

herkes düzenli aralıklarla yapılanların entegre olduğunu görmelidir. Entegrasyonla ilgili problemler

her zaman olacaktır. Fakat ne kadar erken fark ederseniz o kadar kolay çözebilirsiniz. Kendi kendini

yönetme sadece şeffaflık ve geribildirimlerle çalışır. İyi yapılan bir Sprint Değerlendirme ikisini de

sağlar.

Sprint Demo’lar için Kontrol Listesi

- Sprint Hedefi’ni net bir şekilde belirttiğinizden emin olun. Eğer ürününüz hakkında bilgi

sahibi olmayan insanlar varsa birkaç dakika ürününüzü anlatın.

- Demo’yu hazırlamak için çok fazla vakit harcamayın, özellikle janjanlı sunumlar. Boş işleri

konuşmayın ve yazılan kodun çalıştığını gösterin.

- Hızı yüksek tutun, demoyu güzel yapmaktansa hızlı yapmaya odaklanın.

- Demoyu iş(müşteri, işbirimi) odaklı tutun. Teknik detayları atlayın. Ne yaptığınıza odaklanın,

nasıl yaptığınıza değil.

- Eğer mümkünse katılımcıların ürünü kullanmasına izin verin.

Page 81: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

81

- Bir sürü küçük ve önemsiz hata çözümünün gösterimini yapmayın. Onlardan bahsedin fakat

gösterimini yapmayın. Bu uzun zaman alacaktır ve daha önemli kullanıcı hikayelerinin odak

olmasını engelleyecektir.

Demosu Yapılamayacak İşler

Takım Üyesi: Bu maddenin sunumunu yapmayacağım. Çünkü demosu yapılamaz. Kullanıcı hikayesi:

“sistemin aynı anda 10.000 kullanıcıya hizmet vermesi için büyütülmesi”. 10.000 kullanıcıyı demoya

davet edip kullanıcı hikayesinin demosunu yapamam.

Scrum Master: Kullanıcı hikayesi bitti mi?

Takım Üyesi: Evet, tabiki.

Scrum Master: Emin misin?

Takım Üyesi: Sistemi performans testini yaptığımız ortama aldım, 8 yüklenici ana bilgisayarı

başlattım, aynı anda yapılan isteklerle sisteme yüklendim.

Scrum Master: Fakat sistemin aynı anda bağlı 10.000 kullanıcıyla başa çıkabileceğine dair gösterge

var mı?

Takım Üyesi: Evet. Test makineleri eski buna rağmen aynı anda 50.000 isteğe cevap verebildiler.

Scrum Master: Nerden biliyorsun?

Takım Üyesi: (Takım üyesi gerilmiş bir şekilde) Elimde raporu var! İstersen kendin görebilirsin. Testin

nasıl kurulduğunu ve kaç isteğin gönderildiği yazıyor.

Scrum Master: Süper! İşte senin demon. Sadece raporu göster, elinde hiçbir şey olmamasından

iyidir, değil mi?

Takım Üyesi: Sadece rapor yeterli mi? Fakat pek bir şeye benzemiyor, üzerinde biraz çalışmam ve

raporu parlatmam gerekiyor.

Scrum Master: Peki fakat çok fazla zaman harcama. Çok güzel olmasına gerek yok sadece bilgi verici

olsun yeter.

Bazı takımlar iki değerlendirme yaparlar: herkese açık küçük bir değerlendirme, takım dışı

paydaşların katılımının hedeflendiği bunu takiben daha detaylı, önemli zorlukların, teknik

kararların nasıl alındığının konusu olduğu bir değerlendirme yapılır. Takımlar arası bilgiyi yaymak

ve teknik detayları önemsemeyen paydaşları bundan ayrı tutmak için mükemmel bir yol.

Page 82: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

82

Bölüm

On

Sprint Retrospektifleri Nasıl Yapıyoruz?

Neden Bütün Takımların Retrospektif Yapması Konusunda Israr

Ediyoruz?

Retrospektif konusunda en önemli şey yapıldıklarından emin olmaktır.

Bir nedenden ötürü takımlar retrospektif yapmak istemezler. Nazikçe bir dürtme olmasa

takımlarımızın birçoğu retrospektif toplantısını atlar ve gelecek Sprint’e başlarlardı. Belki İsveç’in

kültüründen kaynaklı bir şey, bilmiyorum.

Yine de retrospektiflerin yararlı olduğu konusunda herkes hemfikirdir. Aslında retrospektifin

Scrum’daki en önemli ikinci ritüel olduğunu söyleyebilirim. Birinci ritüel Sprint Planlama

Toplantısı’dır. Retrospektifse kendinizi geliştirmek için en iyi şansınızdır.

Hayır! Birçok ülkede aynı durumun yaşandığını gördüm. Yani bu insan doğasıyla ilgili bir şeydir.

Sürekli bir sonraki şeye geçmek istiyoruz. İronik bir şekilde ne kadar stres altındaysanız retrospektif

yapmama isteğiniz o kadar çok oluyor. Fakat ne kadar stresliyseniz aslında retrospektife o kadar

çok ihtiyacınız var demektir! Tıpkı şuna benziyor: “Ağaçları kesmek için o kadar acelem var ki durup

baltamı bileyecek vaktim yok!” Bu nedenle Scrum Master retrospektiflerin yapılması konusunda

gerçekten ısrarı olmalı. Çok fazla zaman harcamaya gerek yok. İki haftalık Sprint’ler için bir saatlik

Sprint Retrospektif Toplantısı yapılabilir. Fakat birkaç ayda bir yarım gün ya da tüm gün süren

retrospektifler yapın böylece daha çetrefilli konuları çözebilirsiniz.

Kesinlikle! Bu nedenle retrospektif Scrum’daki en önemli ritüel, ikinci değil!

Page 83: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

83

Ortaya iyi fikirlerin çıkması için retrospektifi beklemenize gerek yok. Bunu küvetinizde de

yapabilirsiniz. Fakat takım fikrinizi kabul edecek mi? Belki, fakat takımın olurunu almak fikirler

takımdan çıkarsa çok daha olasıdır.

Retrospektif olmadan takımın aynı hataları tekrar tekrar yaptığını göreceksiniz.

Retrospektifleri Nasıl Organize Ederiz?

Genel format çeşitlidir. Fakat biz aşağıdakine benzer bir şey yapıyoruz:

- Ne kadar çok konuşulacağına bağlı olarak 1-3 saat arası zaman ayırırız.

- Katılımcılar: Ürün Sahibi, Geliştirme Takımı ve ben.

- Yakındaki bir odaya, rahat kanepelerin olduğu bir yer, verandaya ya da benzer bir yere

geçeriz. Yeter ki rahatsız edilmeden konuşabilelim.

- Retrospektifleri genellikle takım odasında yapmayız.

- Takımdan biri sekreter olarak belirlenir.

- Scrum Master, Sprint İş Listesi’ni gösterir ve Geliştirme Takımı’nın yardımıyla Sprint’i özetler.

Önemli olaylar ve kararların üstünden geçilir.

- Sprint içinde olanları “turlar” içinde konuşuruz. Scrum Takımı’nda bulunan herkes

bölünmeden konuşma şansı elde eder. İyi olduğunu düşündükleri şeyleri, daha iyi

olabileceğini düşündükleri şeyleri ve gelecek Sprint’te farklı yapmak istedikleri şeyleri

anlatırlar.

- Tahmin edilen ve gerçek takım hızını karşılaştırırız. Eğer arada çok büyük bir fark varsa neden

olduğuna dair bir analiz yaparız.

- Zamanın bitmesine yakın Scrum Master gelecek Sprint’te neleri daha iyi yapabileceğimize

dair somut önerileri özetlemeye çalışır.

Retrospektif toplantılarımızın çok katı bir yapısı yoktur. Gerçi ana tema her zaman aynıdır: “Gelecek

Sprint’te neyi daha iyi yapabiliriz?”

Page 84: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

84

Son Sprint Retrospektif Toplantısı’ndan bir örnek:

Üç kolon:

- İyi: Eğer Sprint’i tekrar koşsaydık bu şeyleri aynı şekilde yapardık.

- Daha iyi olabilirdi: Eğer Sprint’i tekrar koşsaydık bu şeyleri farklı yapardık.

- İyileştirmeler: Gelecekte nasıl daha iyi olabileceğimize dair somut fikirler.

Yani birinci ve ikinci kolon geçmişe bakarken üçüncü kolon geleceğe bakar.

Yapışkan kağıtlardaki fikirler üzerine takım beyin fırtınası yaptıktan sonra “nokta oylamayla” gelecek

Sprint’te odaklanacağı iyileştirmenin hangisi olacağına karar verir. Her bir takım üyesine üç mıknatıs

verilir ve takımın gelecek Sprint’te odaklanması gerektiğini düşündükleri iyileştirmeleri seçmeleri

istenir. Herkes mıknatısları istedikleri iyileştirmeye yapıştırabilir. İsterlerse üç mıknatısı farklı

iyileştirme fikirlerine dağıtabilirler ya da üç mıknatısı da aynı iyileştirme üzerine yapıştırabilirler.

Takım beş iyileştirme noktası belirler ve bir sonraki retrospektifte bunları yerine getirip

getirmediğine bakar.

Burada aşırı hırslı olmamak önemlidir. Her Sprint için birkaç iyileştirmeye odaklanın.

Retrospektif yapmanın birçok eğlenceli yolu vardır. Arada bir toplantı formatını değiştirin ki sıkıcı

olmasın. Agile Retrospectives kitabında birçok fikir bulacaksınız. Retromat, rastgele retrospektif

jeneratörüdür ve çok eğlencelidir. :) www.plans-for-retrospectives.com

Her neyse fark ettim ki yaptığım bütün tekniklerde yukarıdaki basit formata dönüyorum. Çoğu

zaman işe yarıyor. Daha basitini de yapabilirsiniz. 20 dakikalık bir kahve arası yapın ve iki konu

belirleyin: “Ne aynı kalmalı?”, “Neyi değiştirmeliyiz?”. Biraz sığ fakat bir şey yapmamaktan iyidir.

Page 85: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

85

Takımlar Arası Bilgi Paylaşımı

Sprint Retrospektif sırasında ortaya çıkan bilgi genelde çok değerlidir. Satış müdürü takım üyelerini

satış toplantılarında teknoloji uzmanları olsun diye sürekli kaçırıyor bu nedenle takım odaklanma

sorunu mu yaşıyor? Bu önemli bir bilgidir. Belki diğer takımlar da benzer sorunlar yaşıyordur. Ürün

Yönetimini, ürünlerimiz hakkında daha fazla bilgilendirmeli miyiz? Böylece satış desteğini kendileri

verebilir.

Sprint Retrospektif bir takımın gelecek Sprint’te nasıl daha iyi iş yapabileceği üzerine değildir, bundan

daha büyük bir anlamı vardır.

Bununla ilgili stratejimiz çok basittir. Bir kişi(bu durum içinde ben) bütün retrospektiflere katılır ve

bilgi taşıyan köprü görevi görür.

Alternatifi her Scrum Takımı’nın retrospektif raporu yayınlamasıdır. Bunu denedik fakat birçok kişinin

bu tarz raporları okumadıklarını ve daha azının raporları dikkate alarak hareket ettiklerini anladık.

Rapor yayınlamanın yerine daha basit yolu seçtik.

Bilgi köprüsü görevi gören kişi için önemli kurallar:

- İyi bir dinleyici olmalıdır.

- Eğer retrospektifte kimse konuşmuyorsa basit fakat hedefi vuran, tartışmayı canlandıran

sorular sormak için iyi hazırlanmalıdır. Örneğin, “eğer zamanı geri alabilseydiniz ve bu Sprint’i

baştan yapabilseydiniz, neyi farklı yapardınız?”

- Bütün takımların retrospektiflerine katılmak için zaman ayırmalı ve gönüllü olmalı.

- Takımın ulaşamayacağı yerlere ulaşabilecek otoriteye sahip olmalı.

Bu yöntem oldukça iyi işliyor fakat belki daha iyi başka yaklaşımlar da vardır. Lütfen beni aydınlatın :)

Daha iyisi satış müdürüyle bir toplantı yapın, ihtiyaçlarını öğrenin ve olası çözümleri beraber

konuşun!

Toplantıları yöneten kişilerin arada çapraz olarak değişmesi iyi bir modeldir. “Senin takımın

retrospektifini ben yapacağım, sen de benim takımın retrospektifini yaparsın.” İki yönlü bilgi

paylaşımı yapmanın kolay yoludur. Ayrıca Scrum Master olarak takımınızın retrospektifine

tamamıyla katılım gösterebilirsiniz çünkü retrospektifi yönetmekle uğraşmamış olacaksınız.

Page 86: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

86

Değişmeli ya da Değişmemeli

Diyelim ki takım üyeleri takım içinde iletişimin çok az olduğunu, sürekli olarak yaptıkları işlerin

çakıştıklarını ve birbirlerinin tasarımlarını etkilediklerini söylüyorlar.

Ne yapmalısınız? Günlük tasarım toplantıları? İletişimi basitleştirici araçlar önerme? Wiki’ye daha

fazla bilgi koyma? Belki evet, belki de hayır.

Birçok durumda şunu anladık ki bir problemi net bir şekilde tanımlamak, problemin gelecek Sprint’te

kendi kendine çözülmesini sağlar. Özellikle Sprint Retrospektif’ini takım odasına asarsanız. Yaptığınız

her değişikliğin bir maliyeti vardır. Bu nedenle değişikliği yapmadan önce hiçbir şey yapmamayı göz

önünde bulundurun ve problemin kendiliğinden çözülmesi ya da küçülmesini umut edin.

Yukarıdaki iletişim örneği belki de hiçbir şey yapmadan kendiliğinden çözülecek problemlere en iyi

örnektir.

Biri bir konuda şikayette bulunduğu zaman şikayetin hemen ertesinde bir değişiklik yapmak

insanların küçük problemleri gizlemesine neden olur. Bu takımı olumsuz etkileyen bir şeydir.

Retrospektifte Ortaya Çıkan Örnekler

Aşağıda Sprint Retrospektif Toplantısı’nda ortaya çıkan tipik örnek bulunuyor.

“Kullanıcı hikayelerini daha küçük kullanıcı hikayelerine ya da işlere

bölmek için daha fazla zaman ayırmalıyız”

Bu oldukça yaygındır. Her Günlük Scrum’da takım üyeleri kendilerini “bugün ne yapacağımı

gerçekten bilmiyorum” derken bulur. Bu nedenle her Günlük Scrum’dan sonra somut işleri ortaya

çıkarmak için zaman harcarsınız. Bunu öncesinde yapmak daha verimli olacaktır.

Aksiyon: Yok. Büyük ihtimalle Takım gelecek Sprint Planlama’da bunu kendisi çözecektir. Eğer bu

durum devam ederse Sprint Planlama için ayrılan süreyi artırın.

Page 87: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

87

“Dikkat dağıtan şeyler”

Aksiyonlar:

- Takımın Gelecek Sprint’te odak çarpanını azaltmasını söyleyebilirsiniz. Böylece daha gerçekçi

bir planları olabilir.

- Dikkati dağıtan şeyleri kaydetmelerini isteyebilirsiniz. Kim dikkatlerini dağıttı, ne kadar sürdü

vb. Bunları kaydetmek problemin çözümüne faydalı olacak mı?

- Dikkat dağıtan konularda Scrum Master’a ya da Ürün Sahibi’ne yönlendirme yapılmasını

söyleyebilirsiniz.

- Bir kişinin nöbetçi olarak belirlenmesini söyleyebilirsiniz. Dikkat dağıtan her şeyi nöbetçi

göğüsleyecek böylece geriye kalan takım üyeleri gerçekten işlerine odaklanabilecekler. Bu

kişi Scrum Master olabilir mi yoksa dönüşümlü olarak mı yapılmalı?

“Sprint’e fazla iş alıyoruz ve aldıklarımızın yarısını bitirebiliyoruz”

Aksiyon: Yok. Muhtemelen Takım, Gelecek Sprint’te yapabileceğinden fazla iş almayacak, en azından

bu Sprint’te olduğu kadar çok almayacak.

“Ofisimiz çok gürültülü ve dağınık”

Aksiyon:

- Daha iyi bir ofis ortamı oluşturmaya çalışın ya da takımı başka bir yere taşıyın, otel odası

kiralayın.

Dönüşümlü nöbetçi modeli oldukça yaygın ve genelde iyi işliyor. Deneyin!

2014 yılı itibariyle “Sprint Commitment” ifadesi Scrum Kılavuzu’ndan tamamıyla kaldırıldı. Bunun

yerine “Sprint Tahmini” ifadesi geldi. Commitment ifadesi çok fazla yanlış anlaşılmaya neden

oluyordu. Birçok takım Sprint planının bir çeşit söz verme olduğunu düşünüyordu(Çeviklik’teki

dört ana değerden birinin “plana uymaktan ziyade değişime cevap verme” olduğu göz önünden

bulundurulunca, biraz uyumsuz bir ifadeydi commitment). Sprint planı bir söz verme değildir

sadece bir tahmin ve hipotezdir. “Sprint Hedefi’ne ulaşabileceğimizi düşündüğümüz en iyi yol

budur!”

Yine de tahmin ettiğinden daha azını teslim etmek kötü bir durum. Eğer problem buysa bir önceki

Sprint’te bitirebildiğiniz kadar işi Sprint’inize alma konusunda katı davranın. Bu basit ve güçlü bir

numaradır ve genellikle problemlerin ortadan kalkmasını sağlar.

Page 88: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

88

- Eğer bunlar olası değilse takıma odak çarpanını düşürmelerini söyleyin. Daha sonra yönetime

odak çarpanının düşürülmesinin nedeninin ofisin gürültülü ve dağınık olmasından

kaynaklandığını söyleyin. Bu Ürün Sahibi’nin üst yönetime baskı yapmaya başlamasına neden

olacaktır.

Ne mutlu ki bana takımı bir otel odasına taşıma gibi bir tehditte bulunmadım. Fakat zorunda kalırsam

yaparım. :)

Page 89: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

89

Bölüm

Onbir

Sprint’ler arasında boş zaman

Gerçek hayatta sürekli Sprint’ler atamazsınız. Sprint’ler arasında dinlenmeniz gerekir. Eğer sürekli

Sprint koşuyorsanız gerçekte sadece koşuyorsunuzdur.

Genel kural Scrum ve yazılım geliştirme için de geçerlidir. Sprint’ler oldukça yoğun olabilir. Yazılım

geliştirici olarak boş zamanınız hiç olmayabilir. Her gün Günlük Scrum’a katılıp dün ne yaptığınızı

insanlara söylemek zorundasınız. Çok az kişi zamanımın çoğunda bacaklarımı masaya uzattım ve

blog’ları arasında dolaştım, kahvemi yudumladım diyebilir.

Ayrıca Sprint’ler arasında boş zamana sahip olmak için başka iyi bir neden daha vardır. Sprint

demo’sundan ve Sprint Retrospektif Toplantısı’ndan sonra Takım ve Ürün Sahibi sindirmeleri gereken

birçok bilgi ve fikirle dolu olacaktır. Eğer hemen sıradaki Sprint’e geçerlerse hiç kimse bu bil gileri

sindirme ve derslerden öğrenme şansı elde edemeyecektir. Ürün Sahibi, Sprint demo’sundan sonra

önceliklerini değiştirme şansı bulamayacaktır.

Kötü:

Bu kural sadece Scrum için değil hayat içinde geçerlidir! Örneğin eğer hayatımda boş zaman

olmasaydı, bu kitap olmazdı. Boş zaman verimlilik ve kişisel refah için hayati derecede önemlidir!

Eğer siz de takvimi sürekli dolu olan kişilerden biriyseniz, şunu deneyin: takviminizi açın bir

haftanın yarım gününe “boş zaman” yazın. Boş zaman içinde ne yapacağınıza önceden karar vermeyin. Neler olacak görün. :)

Page 90: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

90

Yeni Sprint’e başlamadan önce boş zaman yaratmaya çalışıyoruz. Daha net olmak gerekirse Sprint

Retrospektif Toplantısı’ndan sonra ve Sprint Planlama Toplantısı’ndan önce. Gerçi her zaman başarılı

olamıyoruz ama olsun.

En azından Sprint Retrospektif ve Sprint Planlama Toplantıları’nın aynı gün olmamasına dikkat

ediyoruz. En azından herkes Sprint’siz bir gece uykusu uyuyabilmelidir.

İyi:

Daha iyi:

Boş zaman yaratmanın bir yolu laboratuvar günleri(ya da siz adını ne koymak istiyorsanız) olabilir.

Bugünlerde yazılım geliştiriciler canları ne isterse onu yapmaya izinlidirler.(Peki peki kabul ediyorum,

google’dan ilham aldım). Örneğin en son çıkan araçları ve API’leri araştırma, sertifika için çalışma, iş

arkadaşlarıyla teknoloji konusunda faydalı tartışmalar yapma, hobi için yaratılan bir projeyi kodlama

vb.

Hedefimiz her Sprint arasında bir laboratuvar gününe sahip olmak. Bu şekilde Sprint’ler arasında

doğal bir dinlenmeye sahip olursunuz. Ayrıca bilgilerini güncelleme şansına sahip bir geliştirme

takımınız olur. Artı potansiyel çalışanlar için oldukça çekici haktır.

En iyi?

Şu an ayda bir laboratuvar günümüz var, her ayın ilk Cuma günü. Neden Sprint’ler arasında değil?

Çünkü tüm şirketin aynı gün laboratuvar günü yapmasının önemli olduğunu düşündüm. Yoksa

Page 91: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

91

insanlar bunu ciddiye almama eğilimindedirler. Ayrıca senkronize Sprint’lerimiz bulunmadığına göre

Sprint’leri baz almayan bir gün seçmeliydim.

İleride bir gün tüm ürünlerimiz için koştuğumuz Sprint’leri senkronize etmeyi deneyebiliriz. Bu

durumda iki Sprint arasında bir laboratuvar günümüz olabilir.

Spotify’daki birçok deneyden sonra şirket genelinde “hack weeks” yapmaya başladık. Yılda iki

defa tüm hafta canımız ne isterse onu ve sonunda bir demo bir de parti yapıyoruz. Tüm şirket

sadece teknoloji ekibi değil. Buradan çıkan yaratıcı fikirlerin tetiklediği yenilikçilik şaşırtıcı! Herkes

aynı anda yaptığı için takımlar arasındaki bağımlılık en aza inmiş oluyor. Spotify mühendislik

kültürü üzerine bir video yaptım, bu video da “hack weeks” ve daha birçok şeyi anlattım. Buradan

erişebilirsiniz: http://tinyurl.com/spotifyagile

Page 92: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

92

Bölüm

Oniki

Teslim planlamasını ve sabit fiyat anlaşmalarını nasıl yapıyoruz?

Bazen bir Sprint’ten fazla önünüzü görmeniz gerekir. Sabit fiyatlı anlaşmaların yapıldığı ürünlerde

sadece önümüzdeki Sprint’i değil ileriki Sprint’leri de planlamak zorunda kalabiliriz.

Teslim planlaması yeni sistemin 1.0.0 versiyonu “ne zaman” teslim edilecek sorusunu

cevaplayabilmek için bir girişimdir.

Eğer teslim planlaması hakkında gerçekten bir şeyler öğrenmek istiyorsanız kitabımın bu bölümünü

atlayın ve Mike Cohn’un Agile Estimating and Planning kitabını okuyun. Keşke bu kitabı daha önce

okusaydım. Teslim planlamasıyla ilgili problemleri kendi kendimize çözdükten sonra bu kitabı

okudum. Benim durumumda teslim planlaması biraz daha basit fakat iyi bir başlangıç noktasıdır.

Kabul Eşiklerinizi Belirleyin

Geleneksel Ürün İş Listesi’ne ek olarak Ürün Sahibi kabul eşik listesini belirler. Ürün İş Listesi’ndeki

maddelerin önem seviyesini belirten basit bir sınıflandırmadır.

Aşağıda kabul eşiklerine örnek bulunuyor:

- Önem derecesi >= 100 olan bütün kullanıcı hikayeleri versiyon 1.0 içinde teslim edilmek

zorundadır yoksa ölümle cezalandırılırız.

- Önem derecesi 50-99 arasında olan kullanıcı hikayeleri versiyon 1.0’a dahil edilmelidir. Fakat

büyük teslimden sonra bu maddelerin içinde olacağı bazı küçük teslimler yapabiliriz.

Ayrıca Eric Ries’in Lean Startup kitabını da okuyabilirsiniz. Birçok projenin büyük bir teslim

planının önceden yapılması büyük problemdir. Bunun yerine küçük teslimlerin yapılması ve bu

teslimlerin belirlenen zamana uyup uymadığının ölçülmesi gerekir. Yalınlık eğer uygun şekilde uygulanırsa başarısızlık riskini ve maliyetini radikal bir şekilde düşürür.

Page 93: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

93

- Önem derecesi 25-49 olanlar gereklidir. Fakat versiyon 1.1’de teslim edilebilirler.

- Önem derecesi < 25 olan maddeler spekülatiftir ve hiç gerek olmayabilir.

Yukarıdaki kurallara göre renklendirilmiş örnek bir Ürün İş Listesi:

Önem Derecesi Adı

130 Muz

120 Elma

115 Portakal

110 Guava

100 Armut

95 Üzüm

80 Fıstık

70 Donut

60 Soğan

40 Greyfurt

35 Papaya

10 Yaban mersini

10 Şeftali

Kırmızı: Versiyon 1.0’da kesinlikle olması gerekenler.

Sarı: Versiyon 1.0’a eklenmesi iyi olanlar.

Yeşil: Belki daha sonra yapılır.

Yani bitiş tarihine kadar Kırmızıları ve Sarıları bitirebilirsek güvendeyiz demektir. Eğer zaman

yetmezse Sarılardan bazılarını atlayabiliriz. Yeşil olanları hepsi bonus.

Bu analizi numerik değerler vermeden de yapabilirsiniz! Sadece listeyi sıralayın.

Page 94: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

94

En Önemli İş Maddelerinin Zaman Tahmini

Teslim planı yapabilmek için Ürün Sahibi‘nin tahminlere ihtiyacı vardır, en azından kontratta yer alan

bütün maddeler için. Sprint Planlama gibi bu da Ürün Sahibi ve Takım arasında iş birliği içinde

yapılması gereken bir şeydir. Ürün Sahibi iş maddelerini açıklar, soruları cevaplar ve Takım işlerin

büyüklük tahmini yapar.

Zaman bazlı tahminde bulunmak eğer gerçeğe yakın değerler verebiliyorsanız değerlidir. Eğer

gerçeğe yakın tahminde bulunamıyorsanız değeri azdır. Eğer gerçekle uzaktan yakından ilişkisi yoksa

tahminde bulunmak tamamıyla değersizdir.

Kimin ne kadar süre harcadığı ilişkisini kurarak işlerin büyüklüğünü zaman bazında tahmin etmenin

değeri(kendi düşüncem):

Aslında bu kadar uzatıp söylemeye çalıştığım şey:

- İşlerin büyüklüğünü tahmin etme işini Takım’a bırakın.

- Bunun için çok fazla zaman harcamamalarını söyleyin.

- Tahminlerin sadece kaba bir tahmin olduğunu ve bir söz verme olmadığını anladıklarından

emin olun.

Genelde Ürün Sahibi tüm takım üyelerini bir odaya toplar, iş maddelerini hatırlatır ve Takıma bu

toplantının amacının Ürün İş Listesi’nde en üstteki 20 iş maddesinin zaman tahminlerinin verilmesi

olduğunu söyler. Ürün Sahibi, her bir kullanıcı hikayesinin üstünden geçer ve Takımın işini yapmasına

izin verir. Soruları cevaplamak ve net olmayan kullanıcı hikayelerinin kapsamını belirtmek için Ürün

Sahibi oda da bulunur. Sprint Planlama’da olduğu gibi yanlış anlaşılma riskini azaltmak için “Nasıl

demo yapacağız?” alanı oldukça kullanışlıdır.

Bu toplantının süresine uyulmalıdır yoksa Takım birkaç kullanıcı hikayesini büyüklük tahmini vermek

için çok fazla zaman harcayabilir.

Page 95: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

95

Eğer Ürün Sahibi bu konu üzerine daha fazla zaman harcanması gerektiğini düşünüyorsa daha sonra

başka bir toplantı da ayarlayabilir. Geliştirme Takımı, bu toplantıların içinde bulunulan Sprint’e etkisi

olduğunu Ürün Sahibi’ne söylemeli ve etkisini anladığından emin olmalıdır.

İşlerin büyüklüğünü hikaye puanı bazında tahmin etme aşağıdaki gibi bitebilir:

Önem Derecesi Adı Tahmin

130 Muz 12

120 Elma 9

115 Portakal 20

110 Guava 8

100 Armut 20

95 Üzüm 12

80 Fıstık 10

70 Donut 8

60 Soğan 10

40 Greyfurt 14

35 Papaya 4

10 Yaban mersini

10 Şeftali

Takım Hızını Tahmin Etme

Şimdi önceliği en yüksek kullanıcı hikayeleri için kaba zaman tahminine sahibiz.

Sıra Sprint başına ortalama takım hızını tahmin etmede.

Bunun anlamı odak çarpanımızın kaç olduğuna karar vermektir.

“Zaman tahmini” olarak adlandırma oldukça kafa karıştırıcı halbuki “büyüklük tahmini” ifadesini

kullanabilirmişim. Muz’un ne kadar süreceğini bilemem fakat Elma’dan fazla Portakal’dan çok

daha kısa süreceğinden eminim. Tamamıyla yanlış olmaktansa kabaca doğru olmak daha iyidir.

Lanet olsun şu odak çarpanına...

Page 96: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

96

Odak çarpanı temelde Takım’ın Sprint’e aldığı işlere ne kadar zaman ayıracağıdır. Hiçbir zaman %100

değildir çünkü planlanmamış işlere, aynı anda birden fazla iş yapmaya, diğer takımlara desteğe, e-

postalarına bakmaya, bilgisayarlarını iyileştirmeye ve mutfakta politika konuşmaya zaman ayırmak

zorundadır.

Diyelim ki odak çarpanının %50 olmasına karar verdik(bu örnek oldukça düşük, takımımızda ortalama

%70 civarında), Sprint’lerimiz ise 3 haftalık(15 iş günü) ve Geliştirme Takımı’mız 6 kişiden oluşuyor.

Her Sprint ortalama 90 adam/gün demektir fakat 45 adam/gün’lük kullanıcı hikayesi bitirilmesi

beklenmektedir. Yani tahmini takım hızımız 45 hikaye puanıdır.

Eğer her bir kullanıcı hikayesinin beş gün süreceğine dair zaman tahmininiz varsa o zaman bu takım

bir Sprint’te dokuz kullanıcı hikayesini bitirebilir demektir.

Her Şeyi Teslim Planında Birleştirme

Şimdi elimizde zaman tahmini ve takım hızı(45) var. Ürün İş Listesi’ni hızlıca Sprint’lere bölebiliriz.

Önem Derecesi Adı Tahmin

Sprint 1

130 Muz 12

120 Elma 9

115 Portakal 20

Sprint 2

110 Guava 8

100 Armut 20

95 Üzüm 12

Odak çarpanını atlayın. Takıma listeye göz atmasını söyleyin ve Sprint’te listeden ne kadar iş

alabilecekleri konusunda iyi bir tahminde bulunmalarını isteyin. Hikaye puanlarını toplayın. Bu odak çarpanını hesaplamaktan daha hızlı ve doğruya daha yakın/uzak olacaktır.

Page 97: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

97

Sprint 3

80 Fıstık 10

70 Donut 8

60 Soğan 10

40 Greyfurt 14

Sprint 4

35 Papaya 4

10 Yaban mersini

10 Şeftali

Her bir Sprint tahmini takım hızı olan 45 hikaye puanını aşmayacak şekilde kullanıcı hikayesi içeriyor.

Şimdi görebiliyoruz ki sahip olmamız gereken bütün özellikleri(kırmızılar ve sarılar) 3 Sprint’te

geliştirebiliyoruz.

3 Sprint = 9 Hafta = 2 Ay

Bu müşteriye söz verdiğimiz bitiş tarihi mi? Kötü tahminlerden, beklenmeyen problemlerden, acil

gelen işlerden zarar görmemek için fazlasıyla boş vakit ayırmaya çalışırız. Bu durumda teslim tarihini

üç ay sonra olacak şekilde belirleyebiliriz.

Hepsi: Bu kullanıcı hikayelerinin hepsi bitmiş olacak takım hızımız(30) düşük olsa bile.

Bazıları: Bu kullanıcı hikayelerinin bazıları bitecek fakat tamamı bitmeyecek.

Güzel olan şey her üç haftada bir müşteriye kullanılabilir bir şey göstermemiz ve biz geliştirdikçe

isterse ihtiyaçlarını değiştirebilmesidir.(Bu seçenek tabi ki kontratın nasıl olduğuna bağlı)

Hiç biri: Bu kullanıcı hikayelerinin hiçbiri bitmeyecek, takım hızımız(50) yüksek olsa bile.

Buna alternatif olan ve iyi işleyen bir yol: Tahmini takım hızını (30-50) aralığı olarak belirleyin.

Daha sonra Ürün İş Listesi’ni 3 listeye bölün.

Page 98: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

98

Teslim Planını Uyarlama

Gerçekler kendini plana uyarlamaz! Bu nedenle planlar gerçeğe uyarlanmalıdır.

Her Sprint’ten sonra o Sprint’teki gerçek takım hızımıza bakarız. Eğer gerçek takım hızımız tahmin

ettiğimiz takım hızından çok farklıysa gelecek Sprint’ler için tahmini takım hızımızı gözden geçiririz ve

teslim planını güncelleriz. Eğer bu, teslim tarihini zora sokarsa Ürün Sahibi, müşteriyle pazarlığa

başlayabilir ya da kapsamın nasıl daraltılabileceğini kontrol edebilir. Daha güzeli Ürün Sahibi ya da

Takımın takım hızını artırmak için yeni bir fikri olabilir ya da odak çarpanını artırmak için bazı ciddi

engellerin ortadan kaldırılması denenebilir.

Ürün Sahibi, müşteriyi arayabilir ve şöyle diyebilir:

“Selam, tahminimizin biraz gerisinde kalıyoruz fakat çok fazla zamanımızı alacak Pac-Man özelliğini

kaldırırsak bitiş tarihine yetişebiliriz. Eğer isterseniz bitiş tarihinden sonraki ilk Sprint bu özelliği

ekleyebiliriz.”

Müşteri için iyi bir haber olmayabilir fakat en azından dürüstüz ve müşteriye erkenden seçim şansı

verdik. Önceliği yüksek işleri zamanında teslim etmek mi yoksa her şeyi geç teslim etmek mi?

Genelde zor bir seçim değildir. :)

Agile Product Ownership in a Nutshell(Özetle Çevik Ürün Sahipliği) adında 15 dakikalık bir video

yaptım. Scrum’da Ürün İş Listesi yönetimi ve teslim planlamasıyla ilgili kullanışlı birçok ipucu içeriyor. http://tinyurl.com/ponutshell

Page 99: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

99

Bölüm

Onüç

Scrum ve XP’yi Beraber Nasıl Kullanıyoruz?

Scrum ve XP(eXtreme Programming) çok verimli bir şekilde beraber kullanılabilir. İnternette

gördüğüm birçok şey bu hipotezi destekliyor. Bu yüzden “neden” sorusuna hiç girmeyeceğim.

Sadece bir şeyden bahsedeceğim. Scrum, yönetimsel ve organizasyonel pratiklere odaklanırken XP

gerçek programlama pratiklerine odaklanır. Bu nedenle ikisinin karışımı oldukça başarılı olur. Farklı

alanlardaki problemleri çözerler ve birbirlerini tamamlarlar.

Scrum ve XP çok verimli bir şekilde beraber kullanılabilir!

XP pratiklerinden bazılarını günlük işlerimize nasıl uyguladığımızı anlatacağım. Takımlarımızın hepsi

XP pratiklerinin tamamını benimsemiş değil. Fakat toplama baktığımızda XP/Scrum kombinasyonunu

çok farklı açılardan deneyimleme şansı elde ettik. Bazı XP pratikleri, Scrum’da hali hazırda kullanılan

pratiklerdir. Örneğin tüm takım, beraber oturma, kullanıcı hikayeleri, poker planlama. Eğer birbirinin

üstüne geçen pratikler varsa Scrum versiyonunu kullandık.

Eşli Programlama

Son zamanlarda takımlarımızdan birinde bu pratiği uygulamaya başladık. Oldukça iyi çalışan bir

pratiktir. Diğer takımlarımızın çoğu eşli programlama yapmıyor. Eşli programlama yapan takımımızsa

Jeff Sutherland’ten Scrum ilk ortaya çıktığında XP pratiklerinin hepsini barındırdığını öğrendim.

Fakat Ken Schwaber mühendislik pratiklerinin Scrum içinde olmaması gerektiğine Jeff’i ikna

etmiş. Böylece hem Scrum modeli basitleşmiş oldu hem de takımlar teknik pratiklerin

sorumluluklarını kendileri almış oldu. Belki de Scrum’ın bu kadar hızlı yayılmasının neden i budur.

İşin kötü tarafı birçok takımın teknik pratiklerin eksikliğinden kaynaklı sürdürülebilir Çevik yazılım geliştirme yapamamalarıdır.

Page 100: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

100

sadece birkaç Sprint’tir bu pratiği deneyimliyor. Diğer takımlarında bu pratiği deneyimlemesi için

koçluk veriyorum.

Eşli programlama konusunda şimdiye kadar gözlemlediklerim:

- Eşli programlama kod kalitesini geliştirir.

- Eşli programlama takımın odağını geliştirir.

- Şaşırtıcı bir şekilde eşli programlamayı denemeyen birçok yazılımcı eşli programlamaya

karşıdır. Eğer denerlerse de çok hoşlarına gider.

- Eşli programlama yorucudur ve tüm gün yapılmamalıdır.

- Eşleri sıkça değiştirmek iyidir.

- Eşli programlamayla bilgi dağılımı gelişir ve yine şaşırtıcı bir şekilde bu hızlı olur.

- Bazı insanlar eşli programlama yapmaktan hoşlanmazlar. Eşli programlama yapmaktan

hoşlanmıyor diye iyi bir yazılımcıdan vazgeçmeyin, bazı insanlar sadece hoşlanmıyor

olabilirler.

- Kod değerlendirme(Code Review), eşli programlamaya bir alternatif olabilir.

- Gözlemci’nin(klavyeyi kullanmayan kişi) kendi bilgisayarı olmalıdır. Sürücü(klavyeyi kullanan

kişi) tıkandığı zaman Gözlemci kendi bilgisayarından hızlıca araştırma yapabilmeli,

dokümanlara bakabilmelidir. Bu nedenle Gözlemci’nin de kendi bilgisayarı olmalıdır.

- İnsanları eşli programlama yapmaya zorlamayın. İnsanları cesaretlendirin ve doğru araçlara

sahip olmalarını sağlayın fakat kendi kendilerine deneyimlemelerine izin verin.

Test Yönelimli Geliştirme(Test Driven Development)

Bu, benim için Scrum’dan ve XP’den daha önemlidir. Evimi, televizyonumu ve köpeğimi alabilirsiniz

fakat TYG yapmamı engellemeye çalışmayın. Eğer TYG’den hoşlanmıyorsanız ofisinize girmeme izin

vermeyin çünkü öyle ya da böyle ofisinizde TYG yapmaya başlayacağım.

İşte 10 saniyede TYG’nin özeti:

Test Yönelimli Geliştirme’nin anlamı otomatize bir test yazarsınız daha sonra sadece o testi geçecek

kadar kodu yazarsınız. Sonrasındaysa kodunuzu gözden geçirir, okunabilirliğini iyileştirir ve fazla

kodları temizlersiniz. Cilala ve parlat!

Artık TYG konusunda bu kadar bağnaz değilim. Anladım ki TYG oldukça niş bir teknik ve çok az

insan ustası olacak kadar sabırlı. Artık sadece teknikleri öğretirim ve takımlar ne kadar yapmak

istiyorlarsa yaparlar.

Page 101: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

101

TYG üzerine düşüncelerim:

- TYG zordur. Anlaması zaman alır. Aslında birçok durumda ne kadar öğrettiğiniz, koçluk

yaptığınız ve gösterdiğiniz önemli değildir. Bir yazılımcının TYG’yi anlayabilmesinin en güzel

yolu TYG’yi iyi bilen başka bir yazılımcıyla eşli programlama yapmasıdır. Yazılımcı bir kere

öğrendiğinde muhtemelen ciddi bir şekilde bulaşıcı hastalığa yakalanacaktır. Bir daha başka

bir şekilde kod yazmak istemeyecektir.

- Sistem tasarımı üzerinde derin bir etkisi vardır.

- TYG’yi anlama ve yeni bir ürün üzerinde verimli şekilde kullanma ve özellikle kara kutu

entegrasyon testleri zaman alacaktır fakat yatırım getirisi oldukça hızlı geri dönecektir.

- Testleri yazabilmek için yeterli zamanı ayırdığınızdan emin olun. Bunun anlamı doğru araçları

bulma, insanları eğitme ve doğru ana sınıfları temin etme olarak düşünülebilir.

1) Her önemli özelliğin uçtan uca en az bir kere test edildiğinden emin olun.

2) Karmaşık ya da iş birimi açısından kritik kodların otomatize edilmiş birim testlerinin

yapıldığından emin olun.

3) Testleri yazılmamış kodlar olabilir, sorun yok. Fakat hangi kodların testlerinin

yazılmadığından haberdar olun. Testini yazmadığınız kodların testini yazmak manuel olarak

yapmaktan daha maliyetliyse bu testleri manuel yapın fakat ihmalkarlık yaparak testleri

atlamayın.

4) İlerledikçe testleri yazın, testleri yazmayı en sona bırakmayın. Daha sonra da şimdi olduğunuz

kadar meşgul olacaksınız.

TYG için aşağıdaki araçları kullanıyoruz:

- jUnit/httpUnit/jWebUnit kullanıyoruz. TestNG ve Selenium’u kullanmayı düşünüyoruz.

- HSQLDB test amaçlı gömülü bellek veritabanı olarak kullanıyoruz.

- Jetty test amaçlı gömülü bellek konteynırı olarak kullanıyoruz.

- Test kapsam metrikleri için Cobertura’yı kullanıyoruz.

TYG çok zor olduğu için insanları yapmaları için zorlamam. Bunun yerine aşağıdaki ilkeler çerçevesinde koçluk ederim:

TYG bağnazlığı yapmadan yeterince bilgi verdim gibi görünüyor. Test yazmanın getirisi zamanla

azaldığı için test kapsamı* genelde %70 oranlarında kalır. Özetlersem test otomasyonu hayatidir,

TYG ise seçenektir.

*Test coverage ifadesinin karşıl ığı olarak test kapsamı ifadesini kullandım.

Page 102: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

102

- Farklı test tiplerini(mock’la, mock’sız, harici veritabanı, entegre veritabanı) birbirine

bağlamak için Spring’i kullanıyoruz.

En gelişmiş ürünlerimizde(TYG açısından) otomatize edilmiş kara kutu(black box) kabul testleri vardır.

Bu testler tüm sistemi bellek, veritabanı ve web server’larını da içine alacak şekilde ayağa kaldırır.

Sisteme http üzerinden erişir tıpkı ürün kullanıma açıldığında olacağı gibi.

Yukarıdaki araçlar kullanılarak oldukça hızlı geliştir-derle-test et döngüleri kurulabilir. Yazılım

geliştiricilere kodu iyileştirmekten çekinmemeleri için güven de verir. Bunun anlamı da tasarım temiz

ve basit kalır, sisteminizin ne kadar büyüdüğünün önemi yoktur.

Yeni Projelerde TYG

Ürünün ilk kurulumunu geciktirse bile yeni yazdığımız bütün kodları TYG ile yazıyoruz. Yararları o

kadar çok ki TYG yapmamak için bir bahane yok.

Eski Projelerde TYG

TYG yapmak zordur fakat en başta TYG düşünülerek yazılmamış bir kodu TYG kullanarak devam

ettirmek gerçekten zordur! Neden? Çünkü… Bu konu hakkında sayfalarca yazabilirim. Burada

duruyorum. TDD from Trenches kitabıma saklıyorum. :)

Karmaşık sistemlerimizden biri için otomatize edilmiş entegrasyon testleri çok fazla zaman harcadık.

Kodlar uzun süre önce yazılmış, ciddi anlamdan karmaşık ve hiç testi yazılmamış bir sistemdi.

Sistemin her tesliminde tam zamanlı testçilerden oluşan bir takım bir sürü regresyon ve performans

testi yapıyordu. Regresyon testlerinin büyük çoğunluğu manuel’di. Bu, gelişt irme ve teslim

döngümüzü oldukça yavaşlattı. Hedefimiz bu testleri otomatize etmekti. Birkaç ay kafamızı duvarlara

vurduktan sonra yine de hedefimize yaklaşmış değildik.

Bu birkaç aydan sonra yaklaşımımızı değiştirdik. “Manuel test sürecine nasıl daha az zaman

harcarız?” diye sormak yerine manuel regresyon testlerinin başımıza bela olduğu gerçeğini

Bu kitabı yazabilmek için hiç zamanım olmadı. Gerçi TYG üzerine yazılmış birçok kitap zaten var.

En iyilerinden biri de Michael Feathers’ın yazdığı Working Effectively with Legacy Code kitabıdır. Ayrıca teknik borç konusunda birkaç makalem bulunuyor. Blog’uma bakabilirsiniz.

http://blog.crisp.se/tag/technical-debt

Bu şekilde çalışma şu an eskiden olduğundan çok daha kolay çünkü birçok iyi test aracı ve framework var. TYG yapın ya da yapmayın bu araçlar oldukça yararlıdır.

Page 103: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

103

kabullendik. Bu, bir oyun sistemiydi ve test takımının büyük bir zamanının önemsiz kurulum

işlerine(test amaçlı turnuvaların hazırlanması ya da planlanmış bir turnuvayı bekleme gibi)

harcandığını fark ettik. Bunun için yardımcı araçlar geliştirdik. Küçük ve kolayca erişilebilir kısa yollar

ve script’ler, testçilerin üzerindeki gereksiz işleri almamızı sağladı ve testçilere gerçek test işleri kaldı.

Bu efora gerçekten değdi. Aslında belki de en başta yapmamız gereken buydu. Testleri otomatize

etmeye o kadar kararlıydık ki adım adım gerçek hedefimizi unuttuk. Aslında ilk adım manuel testlerin

daha verimli bir şekilde yapılmasıydı.

Ders: Eğer manuel test yapma konusuna takıldıysanız ve bu şekilde otomatize etmek istiyorsanız,

yapmayın! Bunun yerine regresyon testlerini kolaylaştıracak şeyler yapın. Daha sonra tüm test

sistemini otomatize etmeyi düşünün.

Artımlı Tasarım

Bunun anlamı tasarımı en başta basit tutmak ve sürekli olarak iyileştirmektir. Yani her şeyi en baştan

düşünüp daha sonra da bu yapıyı dondurmak değildir.

Bu konuda oldukça iyiyiz. Var olan tasarımı iyileştirmek ve geliştirmek için makul zaman ayırırız ve

tasarım çalışmalarının başında çok az zaman harcarız. Elbet yanıldığımız zamanlar oluyor. Örneğin

zayıf bir tasarımın çok fazla derinine inerek iyileştirme işi büyük bir projeye dönüşebiliyor. Sonuç

olarak biz oldukça memnunuz.

Sürekli tasarım iyileştirmeleri TYG yapmanın bir yan etkisidir.

Sürekli Entegrasyon

Ürünlerimizin büyük çoğunluğunda Maven ve QuickBuild tabanlı sürekli entegrasyon yapısı bulunur.

Bu hayati derecede önemli ve zaman kazandırıcıdır. “Ama benim makinemde çalışıyor” konusunun

nihai çözümüdür. Sürekli derleme bilgisayarımız yargıç gibidir, kod tabanımızın sağlığı için bir

referans noktası görevi görür. Biri versiyon kontrol sistemine kodunu gönderdiğinde sürekli derleme

bilgisayarımız uyanır ve her şeyi en baştan paylaşımlı bir bilgisayar üzerinde derler ve tüm testleri

koşar. Eğer herhangi bir şey yanlış giderse derlemenin başarısız olduğuna dair tüm takıma

bilgilendirici bir eposta gönderir. Bu eposta içinde hangi kod değişikliğinin derlemeyi bozduğuna dair

bilgi ve test raporlarının bir bağlantısı bulunur.

Page 104: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

104

Her akşam sürekli entegrasyon bilgisayarı ürünü en baştan oluşturur ve binary dosyaları(ear’lar,

war’lar vb), dokümanları, test raporlarını, test kapsam raporlarını ve bağımlılık raporlarını doküman

portalımız üzerinde yeniden yaratır.

Bu yapıyı kurmak büyük bir işti fakat her dakikasına değdi.

Ortak Kod Sahipliği

Ortak kod sahipliği için takımları cesaretlendiririz fakat takımlarımızın tamamı bunu benimseyebilmiş

değil. Eşli programlama ve eşli programlama da eşlerin sürekli olarak değişmesiyle “ortak kod

sahipliğinin” kendiliğinden yükseldiğini fark ettik. Ortak kod sahipliği konusunda iyi takımların çok

güçlü olduklarını gördüm. Örneğin takımdaki önemli kişilerden biri hasta olduğu için Sprint kendi

haline bırakılmaz.

Bilgilendirici Çalışma Alanı

Tüm takımların beyaz tahtası, boş duvarları vardır ve bunları çok iyi kullanırlar. Birçok oda da ürün ve

proje hakkında bilgilerle donatılmış duvarlar bulursunuz. En büyük problem duvarda biriken eski

bilgilerdir. Belki de her takımda bir temizlikçi rolü oluşturmalıyız.

Scrum Duvarları’nın kullanılması için takımları cesaretlendiririz fakat tüm takımlarımız bu pratiği

benimsemiş değildir.

Bunu bir adım ileri taşırsanız sürekli teslime ulaşmış olursunuz. Kaynak sisteme gönderilen her

kod bir teslim olabilir ve teslim sadece bir tıklamayla yapılacak bir işe dönüşür. Bunu yapan takım

sayısı her gün artıyor ve kişisel projelerimde ben de kullanıyorum. Oldukça verimli ve güzel bir

yol. Continuous Delivery kitabını okumanızı(en azından araştırmanızı) öneririm. Bu yapıyı kurmak

büyük bir iş fakat yeni bir ürün geliştirmeye başladığınızda bunu yapmaya değer. Anında kazanç

sağlamaya başlarsınız ve şimdilerde bunu destekleyen harika araçlar var.

Spotify(ve hızla büyüyen birçok şirket) içlerinde “açık kaynak” modeline sahiptir. Kodun tamamı

dahili bir GitHub üzerinde bulunur ve çalışanlar repo’ları kopyalayabilir tıpkı halka açık olan açık

kaynak kodlar gibi sadece şirket içinde.

Page 105: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

105

Kodlama Standartları

Son günlerde kodlama standartlarını belirlemeye başladık. Oldukça yararlı keşke daha önce

yapsaydık. Neredeyse hiç zaman almıyor, önemli olan şey basit başlamak ve kendiliğinden

büyümesine izin vermek. Herkes için anlaşılır olmayan noktaları belirleyin ve yazın daha sonra var

olan bir materyale bağlantı kurun.

Her yazılım geliştiricinin kendine has bir kodlama şekli vardır. Ürün içinde oluşabilecek hataları nasıl

yakalarlar, koda yorumu nasıl yazarlar, ne zaman null değer dönerler vb. belirleyin. Kod standardının

olmaması bazı durumlarda önemli değildir fakat bazı durumlardaysa sistem tasarımında ciddi

tutarsızlıklara ve okuması zor koda neden olabilir. Kod standardı burada oldukça yararlı yeter ki

önemli şeylere odaklanın.

Kod standartlarımızdan bazı örnekler:

- Herhangi bir kuralı bozabilirsiniz fakat bunu yapmak için iyi bir nedeniniz olduğundan ve

bunu dokümante ettiğinizden emin olun.

- Varsayılan olarak Sun’ın kod düzeni kurallarını kullanırız: http://java.sun.com/docs/

codeconv/html/CodeConvTOC.doc.html

- Asla ama asla stack trace’i loglamadan bir hatayı yakalama. rethrowing.log.debug() yapılabilir

yeter ki stack trace’i kaybetme.

- Sınıfları birbirinden ayırmak için “setter” bazlı bağımlılık yönetimini kullan(sınıflar arası

bağlantı isteniyorsa elbette bunu kullanma)

- Kısaltmalar yapma. DAO gibi çok bilinen kısaltmalar kullanılabilir.

- Collection’lar veya diziler null dönmemelidir. Null yerine boş Collection ya da dizi dön.

Sürdürülebilir Hız / Enerjik İş

Çevik yazılım geliştirme üzerine yazılmış birçok kitap haddinden fazla mesainin yazılım geliştirmede

ters etki yaptığını iddia eder.

Gönülsüzce yapılan bir deneyden sonra buna tüm kalbimle katılıyorum!

Kodlama standartları ve stil kılavuzları harika bir araçtır. Fakat tekeri yeniden icat etmeye gerek

yoktur. Arkadaşım Google’dan bir tane kopyalayabilirsiniz:

https://github.com/google/styleguide

Page 106: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

106

Yaklaşık olarak bir yıl önce takımlarımızdan biri(en büyüğü) çılgınca mesai yapıyordu. Kod kalitesi

sıkıntılıydı ve zamanlarının çoğunu yangını söndürmekle uğraşıyorlardı. En iyi takım(ki bu takımda

fazla mesai yapıyordu) ciddi kalite testlerinin çoğunu yapabilecek şansı bulamadı. Kullanıcılarımız

sinirli bazı dergiler bizi canlı canlı yiyordu.

Birkaç aydan sonra insanların çalışma saatlerini uygun oranda düşürmeyi başardık. İnsanlar normal

saatlerde çalıştılar(projenin çatırdağı zamanlar hariç). Süprizzzzzz! Verimlilik ve kalite gözle görülür

bir şekilde iyileşti.

Elbette çalışma saatlerini düşürme iyileştirme için tek yol değildir fakat bu iyileştirmede büyük etkisi

olduğunu düşünüyoruz.

Bunu sürekli görüyorum. Yazılım geliştirmede(karmaşık ve yaratıcıl ık gerektiren herhangi bir işte)

çalışılan saatler ve üretilen değer arasındaki bağlantı çok küçüktür. Önemli olan şey odaklanılmış ve

motive olunmuş saatlerdir. Birçoğumuz Cumartesi sabahlamayı ve huzur ve sessizlik içinde birkaç

saati, bütün bir haftanın işini tamamlamayı deneyimlemiştir. Odaklanmakla ve motive olmakla

kastettiğim budur. Yani birkaç istisna dışında insanları fazla mesai yapmaları için zorlamayın. Artı

insanları yakmak şeytanicedir!

Page 107: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

107

Bölüm

Ondört

Nasıl Test Yapıyoruz?

En zor bölüm! Scrum’ın mı yoksa genel olarak yazılım geliştirmenin mi en zor bölümü olduğundan

emin değilim.

Farklı organizasyonlarda muhtemelen en çok çeşitlilik olan bölüm testtir. Kaç testçiniz olduğuna, test

otomasyonunu ne kadar kullandığınıza, ne tip bir sisteminiz olduğuna, teslim döngünüzün

uzunluğuna, yazılımınızın(blog, uçuş kontrol sistemi) ne kadar kritik olduğuna bağlıdır.

Scrum’da test nasıl yapılır konusunda birçok deneyimimiz oldu. Şimdiye kadar neler yaptığımızı ve

neler öğrendiğimizi anlatmaya çalışacağım.

Muhtemelen Kabul Testi Aşamasından Kurtulamazsınız

İdeal Scrum dünyasında bir Sprint’in sonunda sisteminizin teslim edilebilir bir versiyonunu elde

edersiniz. Sadece teslim edilir, değil mi?

Kesinlikle!

Page 108: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

108

Yanlış!

Tecrübelerimize göre bu yöntem pek işlemiyor. Hatalar olacaktır. Eğer kalite sizin için değerliyse bir

çeşit manuel kabul testi aşaması gereklidir.

Bu aşama Scrum Takımı’nın düşünemediği, yeterli yetkinlikler olmadığı, zamanı olmadığı aşamadır.

Testçiler tıpkı son kullanıcıların erişeceği şekilde sisteme erişirler, bunun anlamı da testin manuel

olmasıdır(sisteminizin insanlar tarafından kullanılacağını varsayıyorum).

Test takımı hataları bulur, Scrum Takımı hataları düzeltmek zorunda kalacaktır. Er ya da geç umarım

erkenden hataların temizlendiği versiyon olan 1.0.1’i son kullanıcılara teslim edebileceksiniz.

Kabul test aşaması dediğimde üretim ortamına teslim yapılabilecek kadar iyi bir versiyon elde

edinceye kadar geçen süreyi kastediyorum.

Nasıl yani?

Ne saçmalık! Bunu yazdığıma inanamıyorum! Ve bu kitap patladı ve dünyanın her yerinde okuyanlar sözlerime inandı. Yazık bana! Köööötü yazar, bir daha bunu yapma! *tokat*

Evet manuel test önemli ve bir ölçüde kaçınılmaz. Fakat Sprint içinde Takım tarafından yapılmalı

başka bir gruba bu iş yaptırılmamalı ya da gelecekte bir test aşaması olmamalı. Bu yüzden Waterfall’dan kurtulmaya çalışıyoruz, hatırladınız mı?

Page 109: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

109

Kabul Testi Aşamasını En Aza İndirme

Kabul testi aşaması can yakar! Çevik olduğunuzu hissetmezsiniz!

Kesinlikle! Bu yüzden yapmayın.

Eğer kabul testi aşamasından kurtulamıyorsak en az seviyeye indirmeye çalışabiliriz. Daha açık

söylemek gerekiyorsa kabul testi aşaması için gerekli olan zamanı en az seviyeye indirebiliriz.

Aşağıdaki gibi yapabiliriz:

- Scrum Takımı tarafından geliştirilen kodun kalitesini en yüksek seviyeye çıkararak.

- Manuel yapılan testin verimliliğini artırarak(en iyi testçileri bularak, en iyi araçları

belirleyerek, fazla zaman harcanan testlerin otomatize edilmesini sağlayarak).

Peki, kodun kalitesini nasıl artırabiliriz? Birçok yol var. Aşağıda bizim bulduğumuz ve iyi çalıştığınız

düşündüğümüz iki yol var:

- Testçileri Scrum Takımı’nın bir üyesi yapın.

- Sprint içinde daha az kod yazma işi yapın.

Testçileri Scrum Takımı’nın İçine Yerleştirerek Kaliteyi Artırma

İki itirazı da duyuyorum:

- “Ama bu gayet açık! Scrum Takımları çapraz fonksiyonel olmalı!”

- “Scrum Takımları rolsüz olmalı, içinde analist, testçi, kodçu gibi alt roller olmamalı. Sadece

test yapan biri takımda olamaz.”

İzin verin açıklayayım. “Testçi” ile anlatmak istediğim şey birincil yetkinliği test yapmak olan biridir,

sadece test yapan biri değil.

Bazı ortamlarda kaçınılmaz görülebilir, biliyorum. Söylemek istediğim şey ben de kaçınılmaz

olduğunu düşünüyordum. Fakat şimdi gerçekten Çevik şirketlerin hızlı ilerlediklerini ve ayrı bir

kabul aşaması testinden kurtularak kalitelerini artırdıklarını, bu işleri Sprint içinde nasıl

yaptıklarını gördüm. Yani siz de kaçınılmaz olduğunu düşünüyorsanız belki içinde bulunduğunuz

durumdan kör olmuşsunuzdur ve göremiyorsunuzdur, tıpkı benim gibi. Her şeye rağmen bu

bölümde ayrı bir kabul testi aşamasını nasıl gerçekleştirebileceğinize dair yararlı bilgiler

bulacaksınız. Sprint’lerinizde kabul testlerinizi yapacak seviyeye gelene kadar bu bölümdeki bilgileri kullanabilirsiniz. :)

Page 110: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

110

Geliştiriciler genelde çok kötü testçilerdir özellikle kendi geliştirdiği kodu test eden geliştiriciler.

Testçi, Onay Veren Adam

“Sadece” takım üyesi olmasının yanında testçinin önemli bir görevi daha vardır. Onay veren adamdır.

O söyleyene kadar Sprint içindeki hiç bir iş BİTTİ sayılmaz. Geliştiricilerin bir şey bitmediği halde

bittiğini söylediklerini çok gördüm. Çok net bir “Bitti Tanımınız” olsa bile geliştiriciler bunu genelde

unuturlar. Biz, yazılım geliştiriciler sabırsız insanlarızdır ve bir an önce sıradaki işe geçmek isteriz.

O zaman Testçi bir işin bitip bitmediğini nasıl biliyor? Her şeyden önce bitirilen işin testini yapmalı :)

Birçok durumda geliştiricinin bittiğini düşündüğü işin aslında test edilebilir durumda bile olmadığı

ortaya çıkar. Çünkü kod, test ortamına gönderilmemiştir. Testçi geliştirilen işlevselliği test ederken

Bitti Tanımı’nın kontrol listesi üzerinden bir geliştiriciyle beraber geçmelidir. Örneğin; eğer Bitti

Tanımı’nda teslim notu(release note) zorunluysa o zaman Testçi’nin teslim notunun olup olmadığını

kontrol etmesi gerekir. Bitti Tanımı’nın dışında kontrol edilmesi gereken başka şeyler varsa Testçi

bunların kontrolünü de yapar fakat bizim durumumuzda bu nadirdir.

Bunun güzel bir yan etkisi Sprint demosunu yapmaya uygun birinin olmasıdır.

Test Yapılacak Bir şey Olmadığında Testçi Ne Yapar?

Bu soru sürekli soruluyor. Testçi: “Şu an test edilecek bir şey yok, ne yapmalıyım?” İlk kullanıcı

hikayesinin tamamlanması bir hafta alabilir, peki bu süre boyunca Testçi ne yapmalı?

Öncelikle testler için hazırlanmalı. Test senaryolarını yazmalı, test ortamını hazırlamalı vb. Böylece bir

geliştirici bir kullanıcı hikayesini bitirdiğinde ve bu kullanıcı hikayesinin test edilmesi gerektiğinde

beklememeli. Testçi işe dalmalı ve test yapmaya başlamalıdır.

Artık Onay Veren Adam modelinin o kadar da hayranı değilim. Darboğaz oluşmasına ve bir kişinin

çok fazla sorumluluk üstlenmesine neden olur. Fakat bazı şartlar altında faydalı olabileceğini düşünüyorum. Ayrıca eğer kaliteye biri onay verecekse bu gerçek bir kullanıcı olmalıdır.

Bu çok önemli bir konudur. “Çapraz fonksiyonel” herkesin her şeyi bilmesi anlamına gelmez.

Herkesin uzmanı olduğu konudan fazlasını yapmaya gönüllü olmasıdır. Uzmanlıkların ve çapraz

fonksiyonel olmanın güzel bir karışımına sahip olmak isteriz. Yani ürünün kalitesinden Geliştirme

Takımı’nın tamamı sorumludur. Bu nedenle herkes test yapacaktır. Testçi test yapma işine

rehberlik edecektir, test otomasyonu konusunda geliştiricilerle eş olacak ve daha karmaşık testleri kendi manuel yapacaktır.

Page 111: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

111

Eğer Takım TYG yapıyorsa geliştiriciler ilk günden itibaren test yazmaya başlıyorlar. Testçi, test

kodunu yazan geliştiricilerle eş olmalıdır. Eğer Testçi hiç kod yazamıyorsa yine de geliştiricilerle eşli

programlama yapmalıdır. Eşli programlamayı yaparken Gözlemci rolünde olmalı ve kodlamayı

geliştirici yapmalıdır. İyi bir testçi iyi bir geliştiriciden farklı tipte testler yapabilmelidir. Böylece

birbirlerini tamamlayabilirler.

Eğer Takım TYG(Test Yönelimli Geliştirme) yapmıyorsa ya da Testçi’nin zamanını dolduracak kadar

test senaryosu yoksa Takımın Sprint Hedefine ulaşabilmesi için elinden ne yardım geliyorsa onu

yapmalıdır, tıpkı diğer takım üyeleri gibi. Eğer Testçi kodlama yapabiliyorsa ne mutlu. Eğer kodlama

yapamıyorsa o zaman içinde kodlama olmayan bütün işler önceden belirlenmelidir.

Takım, Sprint Planlama Toplantısı’nda kullanıcı hikayelerini daha küçük işlere bölerken kodlama

işlerine odaklanma eğilimindedir. Her neyse genelde içinde kodlama olmayan ve Sprint içinde

yapılması gereken birçok iş vardır. Sprint Planlama Toplantısı’nın ikinci bölümünde içinde kodlama

olmayan işleri belirlerseniz, Testçi, kod yazamasa ve test edecek bir şey olmasa bile Sprint Hedefi’ne

ulaşmak için oldukça yardımcı olabilir.

Sprint içinde yapılması gereken kodlama içermeyen işler:

- Test ortamının kurulması.

- Kullanıcı hikayelerinin netleştirilmesi.

- Operasyon ekibiyle teslim detaylarının konuşulması.

- Teslim dokümanlarının yazılması

- Takım dışındaki kişilerle iletişime geçilmesi(Örneğin ekran tasarım ekibi)

- Build script’lerinin iyileştirilmesi

- Kullanıcı hikayelerinin daha küçük parçalara bölünmesi

- Geliştiricilerden gelen önemli soruları belirlemesi ve cevaplaması

Öte yandan eğer Testçi darboğaza dönüşürse ne yaparız? Diyelim ki Sprint’in son günündeyiz ve

birçok kullanıcı hikayesi bitirildi ve Testçi’nin her şeyi test etmesi mümkün değil. Ne yaparız?

Takımdaki herkesi testçinin yardımcısı yapabiliriz. Hangi kullanıcı hikayelerinin testlerini kendisinin

yapması gerektiğine karar verir ve diğer testleri takıma yönlendirir. Çapraz fonksiyonel takım budur!

Page 112: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

112

Evet, Testçi’nin takımda özel bir rolü vardır fakat diğer işleri de yapabilir ve takımın diğer üyeleri de

test yapabilirler.

Sprint’te Daha Az İş Yaparak Kaliteyi Artırma

Tekrar Sprint Planlama Toplantısı’na dönelim. Sprint’e çok fazla kullanıcı hikayesi sıkıştırmayın! Eğer

kalite probleminiz ya da uzun kabul testi döngüleriniz varsa Sprint içinde daha az şey geliştirin. Bu

otomatik olarak kalitenizi artıracak, kabul testleriniz daha kısa sürecek, son kullanıcı daha az hatayla

karşılaşacak ve uzun vadede daha yüksek bir üretkenlik elde edeceksiniz. Çünkü Takım bozulan eski

işleri düzeltmeye çalışmaktansa yeni işlere odaklanabilecek.

Daha az iş geliştirmek neredeyse her zaman daha ucuzdur. Fakat bunu stabil bir şekilde yapmak

gerekir.

Kabul Testi Aşaması, Sprint’in Bir Parçası mıdır?

Bu konuda oldukça bocalıyoruz. Bazı takımlarımız kabul testini Sprint’e dahil ediyor. Takımlarımızın

büyük çoğunluğuysa aşağıdaki iki nedenden dolayı Sprint’e dahil etmiyor:

- Sprint’in süresi belirlidir. Kabul testi aşamasının(kod düzeltilebilir ve yeniden teslim

yapılabilir) süresini önceden belirlemek oldukça zordur. Peki süreniz biter ve hala

düzeltmeniz gereken hatalar olursa ne olacak? Düzeltmeniz gereken bir hatayla üretim

ortamına mı çıkacaksınız? Gelecek Sprint’i mi bekleyeceksiniz? Birçok durumda iki senaryo da

kabul edilemez. Bu yüzden manuel kabul testi aşamasını Sprint’e dahil etmeyiz.

- Eğer aynı üründe çalışan birden fazla Scrum Takımı’nız varsa takımların ortak çalışmasının

sonunda manuel test tamamlanabilir. Eğer tüm takımlar Sprint içinde manuel kabul testi

yapsa bile üretim ortamına alınmadan önce test yapması için yine bir test takımına ihtiyacınız

olur.

Çok doğru söylemişim(Ara sıra kendimi tebrik edebilirim, değil mi?). Ayrıca takımdaki diğer

yetkinliklere de bakmanın güzel bir yoludur.

Bu çok doğru! Dünya’nın her yerindeki takımlarda bunu tekrar tekrar görüyorum.

Page 113: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

113

Bu mükemmel bir çözüm değil fakat birçok durumda bizim için yeterli.

Sprint Döngüleri mi, Kabul Testi Döngüleri mi?

Mükemmel Scrum dünyasında kabul testi aşamasına ihtiyacınız olmaz. Çünkü takımınız her Sprint’ten

sonra üretime alınmaya hazır kodu geliştirir.

Tekrar söylüyorum. Kabul testlerini her Sprint yapmaya çalışın. Bunun için biraz çaba harcamanız

gerekecek fakat pişman olmayacaksınız. Bu konuda çok iyi bir seviyeye gelemeseniz dahi deneme çabanız bile çalışma şeklinizde birçok iyileştirme yapmanızı sağlayacaktır.

Bu yapılabilir! Her gün üretim ortamına teslim yapan bu dünyadan takımlar gördüm. Hatta bazen

günde birkaç defa yapanlar var. Bir Scrum eğitmeni “her Sprint sonunda tamamen test edilmiş

teslim edilebilir ürün parçacığı geliştirmiş olmalısınız” dediğinde tepkileri; “Haaa, neden o kadar bekleyelim ki?” olur.

Yani mükemmel Scrum dünyasına ihtiyacınız yok. Kollarınızı sıvayın ve her Sprint teslim edilebilir

kod geliştirmekten neyi sizin alıkoyduğunu görün ve problemleri bir bir çözüml eyin. Elbette

çalıştığınız ortama bağlı olarak bu kolay ya da zor olabilir fakat yine de denemeye değer. Teslim döngünüzü belirleyin(aylık, yıllık) ve yavaş yavaş fakat sürekli olarak kısaltmaya çalışın.

Page 114: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

114

Burada daha gerçekçi bir resim:

Sprint 1’den sonra hatalı 1.0.0 versiyonu teslim edildi. Sprint 2 sırasında hata raporları gelmeye

başladı ve Takım zamanının çoğunu hataları düzeltmeye harcadı. Ayrıca Takım Sprint ortasında 1.0.1

versiyonunu teslim etmeye zorlandı. Sprint 2’nin sonunda yeni özelliklerin olduğu 1.1.0 versiyonunu

teslim ettiler. Tabi ki bu versiyonda daha da çok hata vardır. Çünkü Sprint 2’de, Sprint 1’e oranla

kalite için daha az zaman harcamışlardır.

Sprint 2’deki kırmızı çizgiler kaosu simgeler.

Çok güzel değil! Kötü olan şey kabul testi için bir takımınız olsa bile sorun devam eder. Tek fark hata

raporlarının çoğu kızgın kullanıcılar yerine test takımından gelir. İş birimi tarafından bu oldukça büyük

bir farktır fakat geliştiriciler açısından neredeyse fark yoktur. Sadece test takımı son kullanıcılardan

daha az agresiftir.

Bu probleme herhangi basit bir çözüm bulamadık. Gerçi birçok farklı model denedik.

Page 115: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

115

Her şeyden önce Scrum Takımı’nın geliştirdiği kodun kalitesini en yükseğe çekin. Sprint içinde hataları

erkenden bulmanın ve çözmenin maliyeti Sprint sonrasında hataları bulma ve çözme maliyetiyle

karşılaştırıldığında oldukça düşüktür.

Hataların sayısını en aza indirsek bile Sprint sonrasında gelecek hatalar olacaktır. Bununla nasıl başa

çıkacağız?

Yaklaşım 1: “Eski Kullanıcı Hikayelerini Üretim Ortamına Almadan

Yeni Kullanıcı Hikayelerini Geliştirmeye Başlamayın”

Kulağa hoş geliyor, değil mi? Ayrıca sıcak bir meltem hissettiniz mi?

Bu yaklaşımı benimsemeye birkaç sefer yaklaştık ve nasıl yapabileceğimize dair süslü modeller çizdik.

Fakat olumsuz yönünü gördüğümüzde fikrimizi değiştirdik. Sprint’ler arasında süresi belli olmayan

teslim periyotlarımız vardı ve bu periyot içinde teslimi yapacak kadar sadece test yapıp, hataları

düzeltiyorduk.

Sprint’ler arasında süresi belirli olmayan teslim periyotları fikrinden hoşlanmadık. Çünkü Sprint kalp

atış ritmini bozuyordu. Artık “her üç haftada bir yeni Sprint’e başlıyoruz” diyemezdik. Ayrıca bu

yaklaşım problemi tamamıyla çözmüyordu. Teslim periyodu olsa bile zaman zaman acil olarak gelen

hatalar oluyordu ve bunları çözmeye hazır olmak zorundaydık.

Aslında bu doğru. Sürekli teslim yapsanız bile acil olarak gelen hatalarla başa çıkmak için bir yola

ihtiyacınız vardır. Hiçbir takım acil olarak gelen hataları olmayacak kadar iyi değildir. Bu durumla başa

çıkmanın en iyi yolu Sprint içinde biraz boşluk bırakmaktır.

Bitti Tanımı’nızda “üretim ortamında” maddesi varsa, bu durumda sıradaki Sprint’e hemen

başlayabilirsiniz. Çünkü son Sprint’in kodu hali hazırda üretim ortamında. Sprint sırasında sürekli olarak üretim ortamına teslimler yapıldı. Biraz uç bir nokta fakat yapılabilir.

Evet. Mükemmel!

Page 116: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

116

Yaklaşım 2: “Yeni Kullanıcı Hikayeleri Geliştirilebilir Fakat Eski

Kullanıcı Hikayeleriyle Karşılaştırılıp Öncelikleri Belirlenmelidir”

Tercih ettiğimiz yaklaşım bu, en azından şimdilik:

Bir Sprint bittiğinde sıradakine başlarız. Sıradaki Sprint’te bir önceki Sprint’te oluşan hataları

düzeltmek için daha fazla zaman ayrılmasını bekleriz. Eğer bir önceki Sprint’te oluşan hataları çözmek

için gelecek Sprint tehlikeye girerse bunun neden kaynaklandığını ve kaliteyi nasıl

iyileştirebileceğimizi değerlendiririz.

Bir önceki Sprint’ten kalan hataları çözmek için ayrılan süre kademeli olarak azaldı. Ayrıca hatalar

oluştuğunda tüm takımın ilgilenmesi yerine sadece birkaç kişiyle bile çözülebilecek kadar bilgimizi

artırdık. Böyle bir hata geldiğinde tüm takımın odağı dağılmamış oluyor. Şimdilerde biraz daha kabul

edilebilir bir seviyedeyiz.

Sprint Planlama Toplatısı sırasında odak çarpanını düşürürüz böylece bir önceki Sprint’ten kalan

hataları çözebilmek için zamanımız olur. Zamanla takım bu tahmini yapmada oldukça iyi bir seviyeye

geldi. Takım hızı metriği çok yardımcı oldu.

Kötü Yaklaşım: “Yeni Kullanıcı Hikayeleri Geliştirmeye Odaklanma”

Bunun anlamı “eski kullanıcı hikayelerini üretim ortamına almaktansa yeni kullanıcı hikayeleri

geliştirmeye odaklanmaktır”. Kim bunu yapmak ister? Buna rağmen başlangıçta bu hatayı çok yaptık

ve birçok şirketin bu hatayı yaptığına eminim. Bu stresle alakalı bir hastalıktır. Birçok müdür bu

hastalığı anlamaz bile. Bütün kodlama bittiğinde bile üretim ortamına teslimden çok uzaksınızdır.

Ya da sadece dünün havası tekniğini kullanın. Bir önceki Sprint’te bitirdiğiniz kullanıcı

hikayelerinin toplamı kadar iş alın. Son üç Sprint’inizin ortalaması kadar iş çekmekte iyi bir

pratiktir. Böylece dikkati dağıtan şeyler ve üretim ortamından gelen hatalar için gerekli boş zaman

otomatik olarak belirlenmiş olacaktır. Otomatik olarak kapasiteye göre iş miktarını sınırlamış ve

sonuç olarak daha hızlı hareket etmiş olacaksınız. Sprint’lerinize fazla iş almanın kötü bir fikir olduğunu anlamak için Yalınlık ya da kuyruk teorisi üzerine herhangi bir kitabı okuyabilirsiniz.

Page 117: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

117

Sonra müdür(ya da Ürün Sahibi), Takıma yeni kullanıcı hikayelerini sorar, bu sırada eski kullanıcı

hikayeleri, neredeyse üretim ortamına teslime hazır kullanıcı hikayeleri gittikçe ağırlaşır ve ağırlaşır,

her şeyi yavaşlatırlar.

Zincirinizdeki En Zayıf Halkayı Geçmeye Çalışmayın

Diyelim ki kabul testi zincirinizdeki en zayıf halka, az sayıda testçiniz var ya da düşük kod kalitesinden

dolayı kabul testi aşaması çok uzun sürüyor.

Diyelim ki kabul testi takımınız haftada üç işlevselliği test edebiliyor(hafta başına düşen işlevselliği

metrik olarak kullanmıyoruz, sadece burada örnek veriyorum). Ve diyelim ki geliştiricileriniz haftada

altı işlevsellik geliştirebiliyorlar.

Müdür ya da Ürün Sahibi(hatta Geliştirme Takım’ı) için haftada altı işlevsellik geliştirecek şekilde plan

yapmak cazip gelebilir.

Yapmayın! Gerçek öyle ya da böyle karşınıza çıkacak ve canınızı yakacaktır.

Bunun yerine haftada üç işlevsellik geliştirecek şekilde planlama yapın ve kalan zamanı test

darboğazını hafifletmek için harcayın. Örneğin:

- Birkaç geliştirici test yapmaya başlasın(of, bu yüzden sizi çok seveceklerdir).

- Test yapmayı kolaylaştıracak araçları ve script’leri geliştirin.

- Otomatik test yapan kodlar geliştirin.

- Sprint uzunluğunu artırın ve kabul testi aşamasını Sprint’e dahil edin.

- Bazı Sprint’leri test Sprint’i olarak belirleyin ve tüm takım kabul testi için çalışsın.

- Daha fazla testçiyi işe alın(bunun anlamı birkaç yazılımcının gönderilmesi olsa bile).

Sonuncu hariç bütün çözümleri denedik. Uzun vadede en iyi seçenekler ikinci ve üçüncüdür.

Bu tuzağa düşen şirketleri gördükçe şaşırıyorum. Tek yapmanız gereken aynı anda geliştirdiğiniz

işlevsellik, proje sayısını limitlemektir. Bunu yaparak yedi kat hızlanan şirketler gördüm. Şunu

düşünün aynı miktarda çalışıyorsunuz fakat yedi kat hızlısınız. Daha fazla çalışmadınız ve birilerini

işe almadınız. Ayrıca daha kaliteli iş çıkarmaya başladınız. Çünkü geribildirim döngünüz kısaldı. Delice fakat gerçek!

Page 118: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

118

Retrospektifler takımdaki en zayıf halkayı belirlemek için iyi bir fırsattır.

Gerçeğe Dönüş

Muhtemelen tüm Scrum Takımları’mızda testçiler olduğu, her bir ürün için büyük bir kabul testi

takımımız olduğu ve her Sprint’ten sonra üretim ortamına teslim yaptığımız izlenimini yarattım.

Yapmıyoruz!

Bazen bunları yapabiliyoruz ve pozitif etkilerini görüyoruz. Fakat kabul edilebilir kalite güvence

sürecinden hala uzaktayız ve öğrenmemiz gereken birçok şey var.

Kabul testi aşaması Sprint’e dahil edilirse bu yaklaşım kendi kendini uyarlamaya dönüşür. Deneyin, Bitti Tanımınıza kabul testini dahil edin ve zamanla neler olacağını görün.

Gerçekten öğrenmemiz gereken çok şey vardı! :)

Page 119: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

119

Bölüm

Onbeş

Birden Fazla Scrum Takımı’yla Nasıl Çalışıyoruz?

Aynı ürün üzerinde çalışan birden fazla Scrum Takımı olduğunda işler daha da zorlaşıyor. Bu problem

evrensel ve Scrum’la bir ilgisi yok. Daha fazla geliştirici = Daha fazla karışıklık

Bu konu üzerine deneyler yaptık. En büyük deneyimizde bir ürün üzerinde çalışan 40 kişi vardı.

Önemli sorular:

- Kaç Scrum Takımı oluşturulacak?

- Kişiler hangi takımlarda yer alacak?

Kaç Scrum Takımı oluşturulacak?

Eğer birden fazla Scrum Takımı’nın aynı ürün üzerinde çalışması zorsa neden zahmet edip bunu

yapıyoruz? Neden herkesi aynı Scrum Takımı’na koymuyoruz?

En büyük Scrum Takımımızda 11 kişi vardı. Çalıştı mı, evet çalıştı fakat çok iyi değil. Günlük Scrum

Toplantıları 15 dakikayı aştı. Bir takım üyesi başka bir takım üyesinin ne yaptığını bilmiyordu bu

nedenle kafa karışıklığı yaşanıyordu. Scrum Master, takım üyelerini Sprint Hedefi’ne yönlendirmekte

ve belirlenen engelleri kaldırmakta zorlanıyordu.

Bu kitabı yazdığımdan beri bir kurumda Çevikliğin yaygınlaştırılması konusunda çok fazla çalıştım.

Detaylı örnekler için Siperden Yalınlık kitabına göz atabilirsiniz. Şekil olarak bu kitaba oldukça

benziyor. 60 kişinin çalıştığı bir devlet projesinde Scrum, Kanban ve XP karışımının nasıl

kullanıldığını anlatıyor.

http://www.yilmazcihan.com/siperden-yalinlik-kanban-ile-buyuk-olcekli-projelerin-yonetimi/

Ve elbette takımlar birbirinden nasıl haberdar olacak.

Page 120: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

120

Alternatif iki takıma bölünmektir. Peki bu iyi mi? Her zaman değil.

Eğer takım tecrübeliyse ve Scrum’ı seviyorsa yol haritasını ikiye bölmenin mantıklı bir yolu vardır. Yol

haritası ikiye bölündükten sonra aynı kaynak kodda birleşmemelidir. Böyle olursa ikiye böl me iyi bir

fikir olabilir. Yoksa büyük bir takım olarak kalmak, büyük takım olmanın dezavantajlarına rağmen

daha iyidir.

Deneyimlerime göre büyük birkaç takım olması, birbirinin ayağına basan birçok küçük takım

olmasından daha iyidir. Birbirlerinin ayaklarına basmayacaklarsa küçük takımlar oluşturun.

Sanal Takımlar

Büyük fakat az takım, küçük fakat fazla takım konusunda doğru ya da yanlış yaptığınızı nasıl

bileceksiniz?

Eğer gözlerinizi ve kulaklarınızı açarsanız sanal takımlar oluştuğunu fark edeceksiniz.

Örnek 1: Büyük bir takım oluşturmayı seçtiniz. Sprint içinde kim kiminle konuşuyor diye

gözlemlediğinizde takımın kendiliğinden iki parçaya bölündüğünü fark edeceksiniz.

Örnek 2: Üç küçük takım oluşturabilirsiniz. Fakat Sprint içinde kimin kiminle konuştuğunu

gözlemlemeye başladığınızda Takım 1 ve Takım 2 sürekli olarak birbiriyle konuşurken Takım 3

bağımsız olarak çalışmaktadır.

Page 121: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

121

Bunun anlamı nedir? Takımları oluşturma stratejiniz yanlış mıydı? Eğer sanal takımlar kalıcıysa evet,

yanlıştı. Eğer sanal takımlar geçiciyse hayır, yanlış değildi.

Örnek 1’e tekrar bakın. Eğer sanal alt takımlar arada bir değişme eğilimindeyse(eğer kişiler takımlar

arasında gidip geliyorsa) o zaman büyük ihtimalle doğru kararı verdiniz. Eğer iki sanal takım arasında

tüm Sprint boyunca insanlar gidip gelmiyorsa gelecek Sprint’lerde takımı ikiye bölmek isteyebilirsiniz.

Şimdi Örnek 2’ye tekrar bakın. Eğer Takım 1’in ve Takım 2’nin üyeleri Sprint içinde sürekli iletişimde

bulunuyorsa, Takım 1 ve Takım 2’yi tek Scrum Takımı’nda birleştirmeyi düşünebilirsiniz. Eğer Takım 1

ve Takım 2 Sprint’in ilk yarısı birbirleriyle çok konuşuyorsa ve daha sonra Takım 1 ve Takım 3 Sprint’in

ikinci yarısında konuşmaya başlıyorsa o zaman üç takımı da bir Scrum Takımı’nda birleştirmeyi

düşünebilirsiniz ya da üç takım olarak bırakabilirsiniz. Sprint Retrospektif Toplantısı’nda bu konuyu

dile getirebilir ve takımların kendileri için karar vermesine izin verebilirsiniz.

Takımların belirlenmesi Scrum’ın en zor bölümlerinden biridir. Çok derin düşünmeyin ya da optimum

seviyeyi bulmak için çok uğraşmayın. Deney yapın, sanal takımları izleyin ve Sprint Retrospektif’te bu

konuları konuşmak için zaman ayırın. Er ya da geç özel durumunuz için çözümü bulacaksınız. Önemli

olan şey takımların rahat olması ve çok fazla birbirlerinin ayaklarına basmamalarıdır.

Gittikçe popülerliği artan yaklaşım gerekli oldukça takımların dinamik olarak kendi kendilerini

şekillendirmesidir. Ben bu modele “süper takım” ya da “dinamik alt takımlar” diyorum. Yakın

oturan, birbirini iyi tanıyan ve aynı ürün üzerinde çalışan 12-16 kişi olduğunda bu yaklaşım

oldukça başarılıdır. Ortak bir Ürün İş Listesi verin ve her bir kullanıcı hikayesi için küçük

kümeleriniz olsun. Pat, Tom ve ben A kullanıcı hikayesi üzerine çalışacağız. Kullanıcı hikayeleri

bittikçe yeni gruplar oluşturun. Pratikte bu yaklaşımı kullanabilmek için biraz basitleştirmek

gerekiyor. Büyük bir takım istemiyor ve küçük takımlara bölmek için kalıcı bir yol bulamadıysanız bu teknik mükemmeldir.

Page 122: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

122

İdeal Takım Büyüklüğü

Okuduğum kitapların birçoğu ideal takım büyüklüğünün 5-9 arasında olduğunu iddia ediyor.

Şimdiye kadar gördüklerimle sadece katılabilirim, belki ben 3-8 arasında olduğunu söyleyebilirim.

Diyelim ki 10 kişiden oluşan bir Scrum Takımınız var. Takımın en zayıf iki üyesini çıkarmayı

düşünebilirsiniz. Oppps, gerçekten bunu söyledim mi?

Diyelim ki iki farklı ürününüz var, iki farklı üründe çalışan üçer kişilik iki takım var ve bu takımlar yavaş

ilerliyorlar. Bu iki takımı birleştirmek ve iki ürünün sorumluluğunu 6 kişilik takımda paylaştırmak iyi

bir fikir olabilir. Bu durumda Ürün Sahipleri’nden birini gönderebilirsiniz(ya da danışman rolü

verebilirsiniz, vb).

Diyelim ki 12 kişiden oluşan tek Scrum Takımı’nız var. Kaynak kodunuz o kadar kötü durumda ki iki

farklı takım kodunuz üzerinde bağımsız çalışamaz. Kaynak kodunuzu düzeltmek için ciddi efor

harcayın(yeni işlevsellikler geliştirmek yerine) ta ki iki farklı takım çalışabilecek duruma gelene kadar

kodunuzu düzeltin. Bu yatırım oldukça çabuk geri dönecektir.

Bu cümleden sonra nasıl kurtuldum bilmiyorum? :)

Her neyse büyük takımların bazı üyeleri tatildeyken daha hızlı ilerlediğini fark ettim. Fakat genel

olarak tatilde olanlar zayıf üyeler olduğu için değil sadece takım büyüklüğü daha yönetilebilir bir seviyeye geldiği, iletişim ve kargaşa azaldığı içindir.

Bu vurgulamaya değer. Eğer doğru takım yapısını bulmak zor olduysa genellikle gerçek suçlu

sistem mimarisidir. İyi mimari takımların hızlı ve bağımsız hareket etmesine izin verir, kötü

mimari takımların birbirlerinin ayaklarına basmalarına ve bağımlılıklarda boğulmalarına neden

olur. Yani mimarinizi ve takım yapınızı sürekli olarak sorgulamalı ve geliştirmelisiniz.

Page 123: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

123

Sprint’ler Senkronize mi, Değil mi?

Diyelim ki aynı ürün üzerinde çalışan 3 takımınız var. Sprint’leri senkronize olmalı mı? Sprint’leri aynı

anda başlamalı ve bitmeli mi? Yoksa farklı ritimde Sprint’leri olabilir mi?

İlk yaklaşımımız farklı ritimlere sahip Sprint’lerdi.

Mantıklı geldi. Zaman içinde herhangi bir anda bitecek olan ve yenisi başlayacak olan bir Sprint vardı.

Ürün Sahipleri’nin iş yükü zamanla eşit seviyeye gelecekti. Sürekli akan teslimler olacaktı. Her hafta

demolar olacaktı.

Evet, biliyorum, fakat o zaman gerçekten mantıklı gelmişti!

Bunu yapmaya başladığımız zaman Ken Schwaber’le konuşma şansı elde ettim. Bunun kötü bir fikir

olduğunu söyledi. Sprint’leri senkronize koşmak çok daha iyi olabilirdi. Tam söylediklerini

hatırlamıyorum fakat biraz tartışmadan sonra ikna olmuştum.

O zamandan beri kullandığımız çözüm bu ve asla pişman olmadık. Farklı ritimlere sahip stratejinin

başarısız olup olmayacağını asla bilemeyeceğim. Fakat başarısız olacağını düşünüyorum. Senkronize

Sprint’lerin avantajı:

- Takımları yeniden düzenlemek için doğal bir zaman var. Farklı ritimlere sahip Sprint’lerde

Sprint ortasında bir takımı bölmeden bunu yapmanın bir yolu yok.

- Bütün takımlar aynı hedefe yönelik çalışabilirler. Sprint Planlama Toplantılarını beraber

yapabilirler. Böylece takımlar arasında daha iyi bir iş birliği oluşur.

- Yönetimsel yük daha azdır. Daha az Sprint Planlama Toplantısı, Sprint demosu ve teslim.

Page 124: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

124

Takım Lideri Rolü Neden Var?

Diyelim ki bir ürünümüz ve üç takımımız var.

P ile işaretlenen kırmızı adam Ürün Sahibi. S ile işaretlenen siyah adamlar Scrum Master. Geriye

kalanlar takım üyeleri.

Bu yapıda kimin hangi takımda olacağına kim karar veriyor? Ürün Sahibi mi? Üç Scrum Master

beraber mi? Yoksa herkes kendi takımını kendi mi seçiyor? Peki ya herkes Takım 1’de olmak

isterse(Takım 1’in Scrum Master’ı çok güzel olduğu için)?

Peki ya sonraları kod üzerinde aynı anda ikiden fazla takımın çalışamayacağı ortaya çıkarsa? 18

kişiden oluşan bu topluluğu 9 kişiden iki takıma bölmemiz gerekirse. Bunun anlamı iki Scrum Master

demektir. Peki şu anki üç Scrum Master’dan hangisi Scrum Master’lıktan vazgeçecek.

Birçok şirkette bu oldukça hassas bir konudur.

Her takımın kendi Sprint uzunluklarını belirlemesi kararını alana dek Spotify’da senkronize

Sprint’leri kullandık. Bazı takımlar Scrum yerine Kanban kullanıyor. Takımlar arasında çok fazla

bağımlılık olduğunda senkronizasyon için günlük Scrum’ların Scrum’ı şeklinde bir toplantı ve

entegre olmuş ürünün haftalık demosunu yapıyoruz. Bunu yaparken takımların kendi

ritimlerinden bağımsız bir şekilde yapıyoruz. Gerçi hangi modelin daha iyi olduğunu söyleyemem.

İçinde bulunduğunuz duruma bağlı.

Kişilerin hangi takımda yer alacağını Ürün Sahibi’nin belirlemesine izin vermek çekicidir. Fakat

gerçekte bu Ürün Sahibi’nin yapacağı bir şey değildir. Ürün Sahibi iş konusunun uzmanıdır ve

Takıma hangi yönde ilerlemesi gerektiğini söyleyen kişidir. Ürün Sahibi bu detaylarla ilgilenmek zorunda bırakılmamalıdır. O zaman bu işi kim yapacak? Okumaya devam edin…

Page 125: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

125

Bu konuyu Takım Lideri rolünü belirleyerek aştık. Bu role “Scrum’ların Scrum Master’ı” ya da

“patron” ya da “Ana Scrum Master” diyebilirsiniz. Hiçbir takımı yönetmek zorunda değildir. Fakat

kimin Scrum Master olacağından ve kişilerin hangi takımlarda yer alacağı gibi konulardan

sorumludur.

Bu rol için iyi bir isim bulmakta zorlandık. “Takım Lideri” bulabildiğimiz en az saçma isimdi.

Bu çözüm bizim için iyi çalıştı ve öneriyorum. Rolün adına ne dediğiniz önemli değil.

Takımları Nasıl Belirleriz?

Aynı üründe birden fazla Scrum Takımı olacağı zaman kişilerin hangi takımlarda yer alacağını

belirlerken kullandığımız iki strateji vardır:

Belirli biri takımlarda kimin görev alacağını belirler. Yukarıda bahsettiğim gibi takım lideri, Ürün

Sahibi ya da müdür(iyi bir karar verecek kadar ürüne ve takımlara dahil olduysa).

Takımların kendi kendilerine karar vermesine izin veririz.

Üçünü de deneyimledik. Üç mü? Strateji 1, Strateji 2 ve ikisinin karışımı.

İkisinin karışımının en iyi yol olduğunu öğrendik.

Sprint Planlama Toplantısı’ndan önce takım lideri kimin hangi takımda yer alacağını belirlemek için

Ürün Sahibi ve Scrum Master’larla bir toplantı yapar. Son Sprint’i konuşuruz ve takımlarda bir

değişiklik olup olmayacağına karar veririz. Belki iki takımı birleştiririz ya da bir takımdan diğerine bazı

kişilerin geçmesini isteyebiliriz. Bir şeye karar veririz ve teklif edilen takım yapısı yazarız. Daha sonra

bu teklifi Sprint Planlama Toplantısı’na getiririz.

Birçok şirkette bu işten kaynak yöneticisinin sorumlu olduğunu ve takım liderine ihtiyaç

olmadığını gördüm. Ayrıca takım lideri kafa karıştıran bir isim ve sadece bir takım varmış gibi

düşündürüyor. Her neyse en iyi müdürler takımlarının kendi kendilerini yönetebilmeleri için

farklı şekilde yardım ederler ve yukarıdan aşağıya görevleri atamazlar.

Deneylerle geçen onca yıldan sonra sadece katılıyorum.

Page 126: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

126

Sprint Planlama Toplantısı’nda yaptığımız ilk şey Ürün İş Listesi’nde en üstte bulunan maddeler

üzerinden geçmektir. Daha sonra Takım Lideri şöyle bir şey söyler: “Gelecek Sprint’in takımlarını

aşağıdaki gibi düşünüyoruz”.

“Gördüğünüz gibi dört takımdan üç takıma düşmüş oluyoruz. Her takımın üyelerini l isteledik. Lütfen

bir araya gelin ve Scrum Duvarı’nda kendi alanınızı belirleyin.”

(İnsanlar odada dolaşırken Takım Lideri bekler bir süre sonra Scrum Duvarı’nın yanında üç grup

oluşmuş olur)

“Şu an belirlediğimiz takımlar sadece bir ön hazırlıktır! Zaman kazanmak için sadece bir başlangıç

noktası. Sprint Planlama Toplantısı’nda ilerledikçe bir başka takıma geçmekte, takımınızı ikiye

bölmekte veya başka bir takımla birleşmekte özgürsünüz. Ürün Sahibi’nin önceliklerini temel alarak

içgüdünüze güvenin.”

Bizim bulduğumuz en iyi çalışan yol. Başlangıçta bir dereceye kadar merkezi kontrol daha sonraysa

merkezi olmayan bir iyileştirme.

Uzmanlık Takımları mı?

Diyelim ki kullandığınız teknoloji üç ana alanı içeriyor:

Çok iyi bir model! Bunu yapmanın birçok farklı yolu vardır. Sprint Planlama’yla beraber yapmak

sadece bir yoludur ve her zaman en iyi yol olmayabilir. Bugünlerde takımları yeniden organize

etme atölyelerini Sprint Planlama Toplantısı’ndan ayrı yapıyorum. Böylece Sprint Planlama

Toplantısı’nın odağı dağılmıyor. Böylece Sprint’i planlarken takım yapımız ve Ürün İş Listemiz

daha stabil oluyor. Büyük projelerde Sprint Planlama Toplantıları’nı aynı anda büyük bir oda da yapmak yararlıdır. Bazen bir bağımlılık birinin takım değiştirmesiyle çözülebilir.

Page 127: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

127

Ve diyelim ki bu ürün için çalışan 15 kişi var. Bu nedenle tek bir Scrum Takımı oluşturmak

istemiyorsunuz. Hangi takımları oluşturursunuz?

Yaklaşım 1: Alanlarına Göre Uzman Takımlar

Bir yaklaşım alanlarına göre uzman takımlar oluşturmaktır. Örneğin client takımı, server takımı ve

veritabanı takımı.

Burası başladığımız yer. Bizim için çalışan bir yöntem değildi, özellikle kullanıcı hikayeleri birden fazla

alanı ilgilendirdiğinde.

Örneğin “kullanıcılar birbirine mesaj gönderebilsin” şeklinde bir kullanıcı hikayemiz var. Bu

mesajlaşma işlevselliği kullanıcı ara yüzünün güncellenmesini, server tarafına bu işin mantığının

eklenmesini ve veri tabanına bazı tablolar eklenmesini içerir.

Page 128: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

128

Bunun anlamı bu kullanıcı hikayesini bitirebilmek için üç takımın iş birliği içinde olması gerektiğidir.

İyi bir pratik değil.

Yaklaşım 2: Çapraz Takımlar

İkinci yaklaşım çapraz takımlar oluşturmaktır. Çapraz takımlar herhangi bir uzmanlık alanına bağımlı

değildirler.

Eğer kullanıcı hikayelerinizi geliştirebilmek için birden fazla teknolojiye ihtiyaç duyuyorsanız bu

şekilde bir bölünme stratejisi daha çok işinize yarayacaktır. Her takım, client, server ve veritabanı

parçalarını geliştirebilir. Böylece takımlar birbirinden bağımsız çalışabilir ki bu iyi bir şeydir.

Scrum’a başladığımızda yaptığımız ilk şeylerden biriydi; uzmanlık takımlarını bölüp(yaklaşım 1) çapraz

takımlar(yaklaşım 2) oluşturmak. “Bu işi bitiremiyoruz çünkü server takımının kendi tarafına düşen işi

yapmalarını bekliyoruz” durumlarını azalttı.

Birçok şirkette yaşanan ortak bir problem!

Page 129: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

129

Uzmanlık takımları da oluşturabiliriz fakat bunu yapmamız için çok büyük bir ihtiyaç olmalıdır.

Sprint’ler Arası Takımlar Yeniden Ayarlanmalı mı, Ayarlanmamalı

mı?

Her Sprint ne tip kullanıcı hikayelerinin öncelikli olduğuna göre birbirinden farklıdır. Sonuç olarak

belki takım da değişmelidir.

Aslında neredeyse her Sprint kendimizi şöyle bir şey derken buluyoruz: “Bu Sprint gerçekten normal

bir Sprint değildi çünkü ……….”. Bir süre sonra normal Sprint kavramından vazgeçtik. Normal bir aile,

normal bir hayat olmadığı gibi normal bir Sprint de yoktur.

Bir Sprint sadece client tarafından yazılım geliştiriciler olması iyi bir fikir olabilir. Bir sonraki Sprint

uzmanlık takımlarından üyelerin olduğu ve client tarafındaki yazılım geliştiricilerin bu ikisi arasında

Neredeyse çalıştığım tüm şirketlerde aynı hikaye! Uzmanlık takımlarında işlevsellik takımlarına doğru yeniden yapılandırma yıkıcı olabilir fakat faydası çok büyüktür!

Bazen uzmanlık takımlar mantıklı gelebilir, hatta uzun vadede bile. Fakat bu durum istisna

olmalıdır. Takım için iyi bir test sorusu: “Müşterimiz kimdir ve müşterimizin ihtiyaçlarını diğer

takımlara bağımlı olmadan karşılayabiliyor muyuz?” İşlevsellik takımları bu testi geçerken

uzmanlık takımları geçemeyecektir. Organizasyon içinde kullanılacak araçları ve platformları

geliştiren takımlar buna istisna olabilir. Bu takımlar, organizasyonda bulunan takımlara hizmet

sağlarlar, bu nedenle diğer takımlara müşterileri gibi davranmalılardır. Büyük organizasyonlar

genelde dışarı hizmet veren takımları işlevsellik takımı ve içeri hizmet veren takımları uzmanlık

takımlarından oluşan karışık bir yapıya bürünürler. Gerçi çözüm için sihirli bir değnek yok, bu nedenle deney yapmaya devam edin!

Page 130: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

130

bölüştürüldüğü bir yapıya bürünmek de iyi bir fikir olabilir.

Scrum’ın önemli yapı taşlarından biri takım uyumudur. Örneğin bir takım birkaç Sprint bir arada

çalıştı mı arada sıkı bağlar oluşur. Takım, grup akışını başarmayı öğrenir ve inanılmaz bir verimlilik

seviyesine ulaşır. Fakat buraya erişmek birkaç Sprint alacaktır. Eğer takımların üyelerini değiştirmeye

devam ederseniz, uyumlu takıma sahip olamazsınız.

Bu nedenle takım üyelerini her Sprint’te değiştirmeyi düşünüyorsanız sonuçlarını iyi düşünün. Bu

uzun vadeli bir değişiklik mi, kısa vadeli bir değişiklik mi? Eğer kısa vadeli bir değişiklikse, bu

değişikliği hiç yapmamayı düşünün. Eğer uzun vadeli bir değişiklikse yapabilirsiniz.

Büyük bir takımla ilk defa Scrum yapıyorsanız yukarıdaki kural için bu bir istisnadır. Bu durumda

herkesin rahat olacağı bir yapı bulana kadar deney yapmaya devam edin. İlk birkaç seferde hatalı

yapılar kurmanın problem olmadığını herkesin anladığından emin olun. Önemli olan sürekli

geliştirmektir.

Yarı Zamanlı Takım Üyeleri

Ancak Scrum kitabının söylediğini onaylayabilirim. Scrum Takımı’nda yarı zamanlı üyeler olması iyi bir

fikir değildir.

Diyelim ki Joe’yu Scrum Takımı’nıza yarı zamanlı alacaksınız. Önce dikkatlice düşünün. Joe’ya

gerçekten takımınızda ihtiyacınız var mı? Joe’yu tam zamanlı alamayacağınızdan emin misiniz?

Joe’nun yapması gereken diğer işler neler? Başka biri Joe’nun diğer işlerini yapamaz mı, diğer işler

konusunda Joe pasif ve destekleyici bir rol üstlenemez mi? Bir sonraki Sprint’ten sonra Joe takımınıza

tam zamanlı olarak katılamaz mı, böylece bu zaman içinde sorumluluklarını bir başkasına aktaramaz

mı?

Kabul görmüş bir kural: Birkaç Sprint’ten sonra takım yapınız oldukça stabil olmalıdır. Herhangi

bir takımın yapısı en az üç ay boyunca değiştirilmemelidir. Takıma bir üye eklenmemeli ya da

takımdan bir üye çıkarılmamalıdır. Eğer takım daha sık bir şekilde değişiyorsa Scrum’ın

hedeflediği hiper verimli bir duruma ulaşılamayacaktır. Takım dışından empoze edilen

değişiklikler, Takım içinden başlatılan değişikliklere daha yıkıcıdır. Yani eğer siz bir müdürseniz

günaha girmeden önce daha fazla direnç göstermeye çalışın. İnsanların odaklanmasına izin verin,

takımın stabilleşmesi için yardımcı olun fakat takım üyeleri değişim için bir ihtiyaç gördüğünde takımlarını değiştirmelerine izin verin. Muhtemelen sonuçlar sizi büyüleyecektir!

...deneyimlerinde gösterdiği gibi. Genelde berbat bir durumdur!

Page 131: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

131

Bazen sadece başka yol yoktur! Bazen umutsuz bir şekilde Joe’ya ihtiyacınız vardır çünkü binadaki tek

DBA, Joe’dur. Diğer takımlar da en az sizin kadar Joe’ya ihtiyaç duyuyordur. Bu nedenle takımınızda

hiçbir zaman “tam zamanlı” olarak çalışamayacaktır ve şirket bir başka DBA işe alamıyordur. Peki. Bu

durum Joe’yu yarı zamanlı takıma almak için geçerli bir durumdur. Bu arada bu durum bizim başımıza

gerçekten geldi. Takımınıza biri yarı zamanlı katılacağı zaman yukarıdaki değerlendirmeyi

yaptığınızdan emin olun!

Takımımda yarı zamanlı çalışan sekiz kişi olmasındansa tam zamanlı çalışan üç kişi olmasını tercih

ederim.

Eğer zamanını birden fazla takıma bölecek bir takım üyeniz varsa yukarıda bahsettiğim DBA gibi,

birincil takımını belirlemek iyi bir fikir olabilir. Ona en çok ihtiyaç duyan takımı belirleyin ve bu takımı,

onun “ana takımı” yapın. Yan takımlardan herhangi birine gitmediğinde kendi takımının Günlük

Scrum, Sprint Planlama, Sprint Değerlendirme ve Sprint Retrospektif Toplantısı’na katılacaktır.

Scrum’ların Scrum’ını Nasıl Yapıyoruz?

Scrum’ların Scrum’ı tüm Scrum Master’ların toplandığı ve konuştuğu düzenli bir toplantıdır.

Dört ürünümüz vardı, ürünlerden üçü birer Scrum Takımı tarafından geliştiriliyordu. Son ürünse

birkaç Scrum Takım’dan oluşan 25 kişi tarafından geliştiriliyordu. Aşağıdaki gibi:

Kabul görmüş bir genel kural: Tam zamanlının anlamı zamanının en az %90’ınını takımla

geçirmektir. Yarı zamanlı demek zamanının %50-90 aralığında takımla geçirmektir. (Bu benim ana

takımım fakat yapmam gereken başka işler de var.) Zamanının %50’den daha azını takımla

geçiren biri takım üyesi değildir.(Zaman zaman size destek verebilirim fakat takımınızın bir üyesi

değilim ve bana her zaman güvenemezsiniz). Eğer takımda yarı zamanlı çalışan sadece bir kişi

varsa o zaman çok endişelenmeyin. Eğer birden fazla yarı zamanlı çalışan varsa o zaman yeniden

organize olmayı ve üzerinde çalışılan iş sayısını azaltmayı düşünebilirsiniz. Böylece bazı yarı

zamanlı çalışanlar tam zamanlı çalışan olabilirler. Çok görevlilik, verimliliği, motivasyonu ve kaliteyi öldüren bir canavardır. Bu nedenle en az seviyede tutmaya çalışın!

Page 132: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

132

Bunun anlamı iki farklı seviyede Scrum’ların Scrum’ı yapmamızdır. Ürün seviyesinde Scrum’ların

Scrum’ı ve bir de şirket seviyesinde Scrum’ların Scrum’ına sahibiz.

Ürün Seviyesinde Scrum’ların Scrum’ı

Bu toplantı oldukça önemliydi. Genelde haftada bir defa yaptık, kimi zamanlarsa daha sık.

Entegrasyon konularını, takım dengelerini, gelecek Sprint Planlama Toplantısı’nın hazırlıkları vb.

konuştuk. Bu toplantının süresini 30 dakika belirledik fakat genellikle bu süreyi aştık. Bunun

alternatifi Scrum’ların Scrum’ı toplantısını her gün yapmak olabilirdi fakat bunu hiç denemedik.

Scrum’ların Scrum’ı toplantısının yapısı:

Bir masa etrafında toplanır ve herkes, takımının geçen hafta neler yaptığını, önümüzdeki hafta neler

yapacağını, takımının önündeki engelleri anlatırdı.

Çapraz takımlardan herhangi birinin kaygısı anlatılırdı. Örneğin entegrasyon konusu:

Scrum’ların Scrum’ı toplantısının yapısı benim için çok önemli değildir. Önemli olan şey düzenli bir

şekilde Scrum’ların Scrum’ı toplantısını yapmaktır.

Spotify’da genelde beraber çalışan takımlar arasındaki “günlük senkronizasyon” toplantısı benzeri

bir yapıda yaparız. Kısa, en fazla 15 dakika süren bir toplantı. Toplantı da takımların durumundan

çok işlerin bağımlılıklara odaklanırız. Her takımdan bir kişi diğer takımlardan beklentilerini,

herhangi bir konuda engellerini anlatır. Çapraz takımlar bağımlılıkların takip etmek için yapışkan

kağıtlardan oluşturduğumuz basit bir duvar kullanırız. Toplantı senkronizasyona ihtiyaç olduğunu

gösteren bir pazar yerine dönüşür. Senkronizasyonun kendisi ayrı bir yerde oluşur. Toplantı bağımlılıklar konusunda kimin kiminle senkronize olması gerektiğini anlamamız için yardımcı olur.

Page 133: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

133

Şirket Seviyesinde Scrum’ların Scrum’ı

Bu toplantıya “nabız” deriz. Bu toplantıyı farklı katılımcılarla birçok farklı formatta yaptık. Son

zamanlarda eski formatlardan vazgeçtik ve geliştirme bölümündeki herkesin katıldığı 15 dakikalık

toplantıya çevirdik.

Ne? 15 dakika mı? Geliştirme bölümündeki herkes mi? Tüm ürünleri geliştiren tüm takımların tüm

üyeleri mi? İşe yarıyor mu?

Evet. Eğer siz(ya da toplantıyı kim düzenliyorsa) toplantıyı kısa tutma konusunda disiplinli bir

tavırdaysa bitiyor.

Toplantının yapısı:

1. Geliştirme müdüründen haberler ve güncellemeler. Örneğin; yakın gelecekteki etkinliklerden

bilgiler.

2. Sırayla konuşma. Her ürün grubundan bir kişi geçen hafta ne yaptıklarını ve gelecek hafta ne

yapmayı planladıklarını ve önlerinde bir engel olup olmadığını anlatır. Diğer ekiplerden bazı

kişilerde rapor verebilirler, örneğin QA lideri.

3. Herkes bir şey sormakta ya da başka bir konuda bilgi vermekte özgürdür.

Bu kısa bir bilgilendirme toplantısıdır, bir tartışma ya da geri bildirim alma toplantısı değildir. Bu

şekilde yapılırsa 15 dakika genellikle yeterli oluyor. Bazen bu süreyi aştığımız oluyor fakat toplamda

30 dakikayı aştığımız çok nadirdir. Eğer ilginç konular çıkarsa araya girerim ve bu konuyu ilgi çekici

bulanları toplantıdan sonra bir araya getirir, konuşmalarını sağlarım.

Neden geliştirme ekiplerinin hepsinin katıldığı bir toplantı yapıyoruz? Çünkü şirket seviyesinde

yaptığımız Scrum’ların Scrum’ı toplantısı bir durum bildirime toplantısı şeklinde geçiyordu. Bu

toplantıyı yapan grup içinde çözüm getiren tartışmalar çok nadir yaşanıyordu. Ayrıca bu grup

dışındaki birçok kişi bu bilgileri öğrenmek istiyordu. Temelde takımlar diğer takımların neler yaptığını

bilmek istiyor. Eğer buluşacak ve her takımın neler yaptığı konusunda birbirimizi bilgilendireceksek ve

daha sonra gidip bunu kendi takımlarımızla paylaşacaksak “neden geliştirme ekiplerini bir araya

getirip hep beraber bu paylaşımı gerçekleştirmeyelim” dedik.

Page 134: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

134

Gördüğünüz gibi Scrum’ların Scrum’ının yapısı içinde bulunduğunuz duruma göre değişiklik

gösterebilir. Herkese uyan tek bir yapı kesinlikle yoktur. Bazen şirketlerin beyin uyuşturucu, sıkıcı ve

verimsiz toplantıları her hafta(her gün) yaptıklarını gördükçe şok oluyorum. Gözleri donmuş insanlar

bir yerde toplanıyor ve bir yazıyı okuyarak durumlarını homurdanıyorlar. Bir Scrum zombisi olmayın!

Bir şeyi değiştirin! Deney yapın! Sürekli olarak birbirinize şuna benzer sorular sorun: “Bu toplantı

gerçekten değer katıyor mu? Daha fazla değer ekleyebilir mi? Daha fazla değer eklemesi için ne

yapmalıyız?” Sıkıcı toplantılar için hayat çok kısa!

Günlük Scrum’ları Boş Geçme

Eğer bir üründe çalışan birden çok Scrum Takımınız varsa ve hepsi Günlük Scrum Toplantısı’nı aynı

saatte yapıyorsa bir probleminiz var demektir. Ürün Sahibi(ve benim gibi her işe burnunu sokan

kişiler) her gün sadece bir takımın Günlük Scrum Toplantısı’na katılabilir.

Bu nedenle takımların aynı saatte Günlük Scrum yapmamalarını rica ederiz.

Yukarıda örnek bir zaman çizelgesi var. Günlük Scrum’ları takım odasından farklı odalarda yapıyoruz.

Toplantı süresi normalde 15 dakika fakat toplantı süresini aşma durumuna karşı her takımın 30

dakikası var.

Bu yaklaşım iki nedenden dolayı son derece yararlı:

Ürün Sahibi ve benim gibi kişiler bir sabahta tüm Günlük Scrum Toplantılarını ziyaret edebilirler.

Sprint’in nasıl gittiğini ve büyük engelleri belirlemenin daha iyi bir yolu yoktur.

Gördüğünüz gibi Scrum’ların Scrum’ının yapısı içinde bulunduğunuz duruma göre değişiklik

gösterebilir. Herkese uyan tek bir yapı kesinlikle yoktur. Bazen şirketlerin beyin uyuşturucu, sıkıcı

ve verimsiz toplantıları her hafta(her gün) yaptıklarını gördükçe şok oluyorum. Gözleri donmuş

insanlar bir yerde toplanıyor ve bir yazıyı okuyarak durumlarını homurdanıyorlar. Bir Scrum

zombisi olmayın! Bir şeyi değiştirin! Deney yapın! Sürekli olarak birbirinize şuna benzer sorular

sorun: “Bu toplantı gerçekten değer katıyor mu? Daha fazla değer ekleyebilir mi? Daha fazla değer eklemesi için ne yapmalıyız?” Sıkıcı toplantılar için hayat çok kısa!

Page 135: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

135

Takımlar birbirlerinin Günlük Scrum Toplantıları’nı ziyaret edebilirler. Bu durum çok sık yaşanmaz

fakat bazen iki takım aynı alanda çalışıyor olabilir. Böyle durumlarda iki takımdan bazı üyeler

birbirlerinin Günlük Scrum Toplantıları’na katılırlar ve bilgilerini aynı seviyeye getirirler.

Negatif yönüyse takımın özgürlüğünün kısıtlanmasıdır. Günlük Scrum Toplantısı için istedikleri

zamanı belirleyemezler. Gerçi bu durum bizim için bir problem oluşturmadı.

Yangın Söndüren Takımlar

Büyük bir ürünün Scrum adaptasyonunda sorun yaşadığımız bir durum vardı. Çünkü bu takım yangını

söndürmek için çok fazla zaman harcıyordu. Erken teslimi yapılmış bir versiyonda sürekli hata

düzeltmeleri yapıyorlardı. Kısır bir döngü yaşıyorlardı, yangın söndürmekle o kadar meşguldüler k i

proaktif davranıp başka yangınların çıkmasını engellemeye vakitleri yoktu. Örneğin; tasarımı

iyileştirme, testleri otomatize etme, hataları izleme için araçlar geliştirme vs.

Bu sorunu çözmek için belirlenmiş kişilerden oluşan bir yangın söndürme takımı ve bir Scrum Takımı

oluşturduk.

Scrum Takımı’nın işi sistemi stabilleştirme ve proaktif bir şekilde yangınlar çıkmadan yangınları

önlemekti.

Yangın söndürme takımının(aslında biz bu takıma destek takımı diyorduk) iki işi vardı:

Yangınlarla savaşma.

Scrum Takımı’nı olası tüm rahatsızlıklardan koruma, örneğin nereden geldiği belli olmayan işlevsellik

taleplerini savuşturmak gibi.

Bu durum beni biraz rahatsız ediyor. Günlük Scrum’ın birinci amacı takım üyelerinin

birbirleriyle senkronize olmasıdır. Kendileri için uygun zamanı seçebilmelidirler. Benim gibi her

işe burnunu sokan insanları bilgilendirmek ikincil öncelikli amaçtır. Evet takımların farklı zamanlarda Günlük Scrum yapması iyidir fakat bunu takımlara zorla yaptırmayın.

Page 136: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

136

Yangın söndürme takımı kapıya yakın bir yerde otururken, Scrum Takımı odanın arka bölümünde

oturuyordu. Yani yangın söndürme takımı fiziksel anlamda Scrum Takımını, kızgın müşterilerden ya

da sabırsız satış elemanlarından koruyordu.

İki takımda da deneyimli yazılım geliştiriciler bulunuyordu. Böylece iki takım çekirdek yetkinliklerde

birbirine bağımlı olmadı.

Bu girişimin temelde amacı Scrum’a başlamanın getirdiği problemi çözmekti. Eğer takım bir gününü

bile planlamakta zorlanıyorsa Scrum yapmaya nasıl başlayabiliriz? Yukarıda bahsettiğim gibi

stratejimiz takımı ikiye bölmekti.

Bu işe yaradı. Scrum Takımı proaktif bir şekilde çalışacak zaman buldu ve sonunda sistemi stabil bir

hale getirdi. Bu zaman içinde yangın söndürme takımı plan yapmaktan tamamıyla vazgeçti, reaktif bir

şekilde çalıştı ve çıkan problemleri anında çözmeye çalıştı.

Elbet Scrum Takımı tamamıyla dikkat dağıtıcılardan arınmış değildi. Yangın söndürme takımı Scrum

Takımı’ndaki önemli kişileri ya da Scrum Takımı’nın tamamını sık sık problem çözümlerine dahil

etmek zorunda kaldı.

Her neyse birkaç aydan sonra sistem yeterince stabil bir hale getirildi ve yangın söndürme ekibinden

birkaç yeni Scrum Takımı oluşturduk. Yangın söndürücüler hırpalanmış kasklarını çıkarmaktan ve

Scrum Takımı’na katılmaktan oldukça mutluydu.

Mükemmel bir model fakat sadece geçici kriz yönetimi için kullanılabilir. Normal şartlar altında

yangın söndürme ekiplerine ihtiyaç duymamalısınız. Eğer diğer takımları yangından izole ederseniz

yeni yangınları engellemeyi öğrenemezler. Bunun yerine problemleriniz ve yangınınız varsa(ki

neredeyse tüm şirketlerde vardır) bununla takımın başa çıkmasını öğrenmesine izin verin. Birçok

takım, takım içinde dönüşümlü şekilde yangın söndürücü rolü oluşturur. Basit ve etkilidir. Bu

yaklaşım takımın diğer üyelerine yangın çıkartmayan kod yazma şevki verir.

Eğer zamanında bilseydim yangın söndürme takımı için kesinlikle Kanban kullanırdım.

Page 137: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

137

Ürün İş Listesi’ni Bölmek ya da Bölmemek?

Diyelim ki bir ürününüz ve iki Scrum Takımınız var. Kaç Ürün İş Listeniz olmalı? Kaç Ürün Sahibiniz

olmalı? Bunun için üç model değerlendirdik. Bu modellerden birinin seçiminin Sprint Planlama

Toplantısı’na etkisi büyüktür:

Strateji 1: Bir Ürün Sahibi ve Bir Ürün İş Listesi

Bu model “Sadece Bir Tane Olabilir” modelidir ve bizim tercih ettiğimiz modeldir.

Bu modelin iyi yönü Ürün Sahibi’nin önceliklerine göre Takımların yeni bir şekle bürünmesine izin

vermesidir. Ürün Sahibi, neye ihtiyacı olduğuna odaklanabilir ve işin nasıl bölüneceğinin kararını

takımların vermesine izin verir.

Daha somut olarak takımın Sprint Planlama Toplantısı şöyledir:

Sprint Planlama Toplantısı bir konferans odasında yapılır.

Toplantıdan önce Ürün Sahibi bir duvarı Ürün İş Listesi olarak belirler ve önceliklendirilmiş kullanıcı

hikayelerini bu duvara yapıştırır. Duvarda yer kalmayana kadar kullanıcı hikayelerini yapıştırır ki

genelde bir Sprint için bu kadar iş yeterlidir.

Page 138: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

138

Her Scrum Takımı boş bir duvar seçer ve takım adını yazar. Bu o takımın duvarı olmuştur. Daha sonra

takımlar öncelik sırasına göre Ürün İş Listesi duvarından kullanıcı hikayelerini seçer ve kendi

duvarlarına yapıştırırlar.

Aşağıdaki resim bunu gösteriyor. Sarı oklar, Ürün İş Listesi’ndeki kullanıcı hikayelerinin takım

duvarlarına akışını simgeler.

Toplantı ilerledikçe Takımlar ve Ürün Sahibi, kullanıcı hikayeleri üzerine pazarlık yaparlar, kullanıcı

hikayeleri Takımlar arasında dolaşır, aşağıya yukarıya taşınır ve öncelikleri değiştirilir, daha küçük

Page 139: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

139

maddelere bölünür vb. Aşağı yukarı bir saatten sonra her takım duvarında Sprint Planlaması için ilk

versiyonunu oluşturmuştur. Bundan sonra Takımlar bağımsız çalışır, işleri daha küçük parçalara ayırır

ve işler için zaman tahmininde bulunurlar.

Dağınık, karmaşık ve yorucu fakat verimli, eğlenceli ve sosyal! Zaman dolduğunda tüm takımlar

Sprint’e başlamak için gerekli bilgiye sahip olurlar.

Strateji 2: Bir Ürün Sahibi ve Birden Fazla Ürün İş Listesi

Bu stratejide Ürün Sahibi, her takım için bir Ürün İş Listesi oluşturur. Bu yaklaşımı denemedik fakat

denemeye yakınız. İlk stratejimiz başarır olursa bu yaklaşımı kullanabiliriz.

Bu stratejinin zayıf noktası Ürün Sahibi’nin, kullanıcı hikayelerini takımlara paylaştırmak zorunda

olmasıdır, muhtemelen takımlar bu konuda Ürün Sahibi’nden daha başarılıdırlar.

Bu model oldukça yaygınlaşmaya başladı. Hatta Çevik yazılım geliştirme için yeni çerçeveler

oluşturulmasını bile sağladı, örneğin SAFe(Scaled Agile Framework). Son dönemde LEGO’da

130’dan fazla kişiyle iki günlük planlama etkinliği gerçekleştirdik. Bazen bu teknik altı aylık

planlamalar için geçici bir ölçü olarak kullanılıyor. Takımların birbirinden daha bağımsız planlama yapabilecekleri bir takım yapısı ve mimari bulana kadar yapmaya devam edeceğiz.

Page 140: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

140

Strateji 3: Birden Fazla Ürün Sahibi ve Her Ürün Sahibi için Bir Ürün

İş Listesi

Bu ikinci stratejiye benziyor, her takım için bir Ürün İş Listesi ve aynı zamanda her takım için bir Ürün

Sahibi!

Bunu şimdiye kadar denemedik ve muhtemelen denemeyeceğiz.

Eğer iki Ürün İş Listesi aynı kod alt yapısını içeriyorsa muhtemelen iki Ürün Sahibi arasında ciddi çıkar

çatışmalarına neden olabilir.

Eğer iki Ürün İş Listesi farklı kod alt yapılarını içeriyorsa temelde büyük bir ürünü daha küçük alt

ürünlere bölmekle ve birbirinden bağımsız geliştirmekle aynı şeydir. Bunun anlamı da bir takım için

bir ürün durumuna geri dönmektir ki bu basit ve güzeldir.

Genelde Ürün Sahibi, darboğaza dönüşüyor.

Page 141: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

141

Kod Branch’leme

Aynı kod alt yapısından çalışan birden fazla takımla yazılım konfigürasyon yönetim sisteminde kod

branch’lemeyle kaçınılmaz olarak başa çıkmak zorundaydık. Aynı kod alt yapısında birden fazla kişinin

çalışmasıyla ilgili birçok kitap ve makale bulunur. Bu yüzden detaylara girmeyeceğim. Yeni ya da

devrimsel bir şey söylemeyeceğim. Yine de takımlarımızdan şimdiye kadar öğrendiğimiz dersleri

özetleyeceğim:

Trunk’ı sabit tutma konusunda katı olun. Bunun anlamı her şeyin derlenebilmesi ve bütün birim

testlerinin çalışır olmasıdır. Herhangi bir anda çalışabilir bir teslim yapmak mümkün olmalıdır.

Tercihen sürekli derleme sistemi(continuous build) her gece tüm kodları derlemeli ve test ortamına

otomatik teslim işlemini gerçekleştirmelidir.

Her teslimi etiketleyin. Kabul testi veya üretim ortamı için ne zaman teslim yaparsanız yapın neyin

teslimini yapıldığını açık açık anlatan versiyon etiketiniz olduğundan emin olun. Bunun anlamı

gelecekte ihtiyacınız olduğunda geri dönebilmenizdir.

Sadece gerekli durumlarda yeni branch’ler oluşturun. Bunun için iyi bir genel kural var olan kod alt

yapısını o kod alt yapısının kurallarını çiğnemeden geliştirme yapamıyor olmanızdır. Eğer şüpheniz

varsa yeni bir branch oluşturmayın. Neden? Çünkü her aktif branch yönetim ve karmaşıklık

maliyetine neden olur.

Branch’leri farklı yaşam döngülerini birbirinden ayırmak için kullanın. Her Scrum Takımı’nın kendi kod

alt yapısında yani kendi branch’inde kodlama yapıp yapmamasına karar verebilirsiniz. Fakat kısa

vadeli çözümleri uzun vadeli çözümlerle karıştırırsanız kısa vadeli çözümleri teslim etmenin çok zor

olduğunu öğreneceksiniz.

Spotify’da kullanılan model budur. 70’ten fazla takımın kendi Ürün Sahibi ve kendi Ürün İş Listesi

vardır. Aslında bazı durumlarda Strateji 1’i(bir Ürün İş Listesi ve birden fazla takım) kullanıyoruz

fakat takımların büyük çoğunluğunda bir Ürün Sahibi ve bir Ürün İş Listesi vardır. Bunun iyi yönü

çok nadir büyük planlama toplantılarına ihtiyaç duyarız. Kötü yönüyse bunu yapabilmek için

mimariyi ayrıştırmaya çok fazla efor harcamamızdır. Her zaman olduğu gibi avantajlar ve

dezavantajlar var. Bu nedenle deney yapmaya devam edin. Bunu çok fazla tekrarladım değil mi? :)

Page 142: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

142

Sık sık senkronize olun. Eğer bir branch’te çalışıyorsanız çalışan bir şey geliştirdiğinizde hemen ana

branch’le senkronize olun. İşe gittiğiniz her gün ana branch ve kendi branch’inizle senkronize olun.

Böylece diğer takımların yaptığını değişiklikleri almış olursunuz. Eğer bu size merge cehennemini

yaşatıyorsa beklerseniz daha kötü olacağı gerçeğini kabul edin.

Birden Fazla Takımla Retrospektif

Aynı ürün üzerinden birden fazla takım çalıştığında retrospektif toplantılarını nasıl yapıyoruz?

Sprint demosundan ve alkışlardan hemen sonra her takım kendi odasına ya da ofis dışında rahat

edebilecekleri bir yere gider. Sprint Retrospektifleri bölümünde anlattığıma benzer bir şekilde

retrospektif toplantılarını yaparlar.

Sprint Planlama Toplantısı’nda(her takım bu toplantıya katılır çünkü senkronize Sprint’ler koşuyoruz)

ilk yaptığımız şey her takımdan seçilen birinin yaptıkları retrospektif toplantısının önemli noktalarını

özetlemesidir. Bir takım için beş dakika kadar zaman alır. Daha sonra 10-20 dakika arasında bir açık

konuşma seansımız olur, ara veririz ve gerçek Sprint Planlama Toplantısı’na başlarız.

Başka bir yol denemedik, bu yeterince iyi gidiyor. En büyük dezavantaj Sprint Retrospektif

bölümünden sonra Sprint Planlama bölümünden önce boş zaman olmamasıdır.

Bu tavsiye hala geçerli. Sadece etiketleme konusunda şimdiki sistemler daha başarılı ve otomatik

olarak bu işi gerçekleştiriyorlar. GIT gibi modern versiyon kontrol sistemleri sık sık commit

yapmamak için bir bahane olamaz. Trunk’ı temiz tutun, sık sık teslim yapın ve branch’lerinizin

ömrü kısa olsun. Bu konuda bir makale yazdım. http://www.infoq.com/articles/agile-version-control

GIT gibi sistemlerin merkezi olmayan versiyon kontrol sistemi olarak adlandırılmasını fakat neredeyse her projenin merkezi bir repo ve ana branch kullanmasını eğlenceli buluyorum.

Kesinlikle! Bu oldukça büyük bir dezavantajdır! Bu nedenle bugünlerde birbirine bağımlılığı olan

takımlar olduğunda retrospektif özetleri bölümünü gerçek retrospektif toplantısı içinde yapmayı

tercih ediyorum. Her takım kendi retrospektif toplantısını yapar aşağı yukarı bir saat sonra büyük

bir oda da herkes bir araya gelir. Her takım kendi retrospektif toplantısının çıktılarını özetler ve

çözülmemiş en önemli engellerini listeler. Her takım konuştuktan sonra A engelinin çapraz

takımlar içindeki en büyük engel olduğu ortaya çıkar(örneğin; “takımlar arasında tutarlı olmayan

Bitti Tanımı” ya da “trunk’ın stabil olmaması”). Küçük bir atölye çalışması yapmak ya da

problemin çözümünü gönüllü olarak yapacak kişileri bulmak için mükemmel bir fırsat. Bazen

sorunun çözümü birkaç saat alabilir. Bu nedenle Sprint Planlama Toplantısı’nı bir gün sonra yapmak iyi olabilir.

Page 143: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

143

Bir takım olduğunda planlama toplantısında retrospektif özeti seansı bölümünü yapmayız. Gerek yok

çünkü herkes takımın retrospektif toplantısındaydı.

Herkese uyan tek bir model yoktur! İçinde bulunduğunuz duruma göre bir yaklaşım çok başarılı da

olabilir ya da tamamıyla bir hüsranla da sonuçlanabilir.

Page 144: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

144

Bölüm

OnAltı

Dağıtık Takımlarla Nasıl Çalıştık?

Takım üyeleri farklı lokasyonlarda olduğunda ne olur? Scrum ve XP “büyüleri” takımlar aynı

lokasyonda bulunduğunda, takım üyeleri sıkı bir iş birliği içinde olduğunda ve yüz yüze iletişim

olduğunda işe yarar.

Coğrafik olarak farklı yerlerde olan takımlarımız ve zaman zaman evden çalışan takım üyelerimiz var.

Bu durum için stratejimiz oldukça basit. Aynı lokasyonda olmayan takımlar arasında iletişim

frekansını artırabilmek için her numarayı deneriz.

- Eşli programlama yapabilme

- Günlük Scrum’ları yüz yüze yapabilme

- Herhangi bir anda yüz yüze konuşabilme

- Fiziksel olarak bir araya gelme ve sosyalleşme

- Tüm takımla spontane toplantılar

- Sprint İş Listesi’nde, burn-down grafikte, Ürün İş Listesi’nde ve diğer bilgi yayıcılarda aynı

görüntüyü görebilme

Kullanmaya çalıştığımız tekniklerden bazıları:

- Her bilgisayarda webcam ve kulaklık

- Uzaktan bağlantı yapılabilen içinde webcam bulunan konferans odaları, konferans

mikrofonları, her zaman hazır bilgisayarlar ve ekran paylaşımı için bir ürün vb.

- Her ofiste diğer ofisleri gösteren büyük ekranlar. Bir bakıma iki ofis arasında sanal bir

penceredir. Bu ekran karşısında geçebilir ve el sallayabilirsiniz. ☺ Kim masasında ve kim

kiminle konuşuyor görebilirsiniz. Bu yöntem insanlara “bu işte beraberiz” hissi verir.

Page 145: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

145

- Değişim programları, çalışanlar birbirlerinin ofislerini düzenli olarak ziyaret edebilirler.

Bu teknikleri kullanarak yavaş yavaş fakat emin adımlarla coğrafik olarak farklı yerlerde bulunan

takım üyeleriyle Sprint Planlama Toplantıları’nı, demoları, retrospektifleri ve Günlük Scrum’ları

yapmaya yaklaşıyoruz.

Her zaman olduğu gibi: Gözlem => Adaptasyon => Gözlem => Adaptasyon => Gözlem => Adaptasyon

=> Gözlem => Adaptasyon => Gözlem => Adaptasyon => Gözlem => Adaptasyon =>

Üretimin Bazı Aşamalarının Ülke Dışında Gerçekleştirilmesi

(Offshoring)

Ülke dışından destek aldığımız birkaç takımımız bulunuyor ve Scrum kullanarak bu durumla nasıl başa

çıkacağımıza dair deneyler yapıyoruz.

Bu konuda iki ana stratejimiz var: ayrı takımlar ve ayrı takım üyeleri.

İlk strateji yani ayrı takımlar çekici seçenek olsa bile biz ikinci stratejiyle(ayrı takım üyeleriyle)

başladık. Bunun birkaç nedeni var:

1. Takım üyelerinin birbirlerini iyi tanımalarını isteriz.

2. İki ofis arasında mükemmel iletişim alt yapısı ve bunu kurmak için takımları harekete geçirici

bir teşvik vermek isteriz.

3. Başlangıçta diğer ofisteki takım kendi kendilerine verimli bir Scrum Takımı olmak için çok

küçüktü.

4. Bağımsız bir takım olmaları için ilk aşamada yoğun bilgi paylaşımı yapmak istedik.

Uzun vadede elbet “ayrı takımlar” stratejisine geçebiliriz.

Dağıtık takımlar her yerde. Açık kaynak kodlu projelerin çoğu tamamıyla dağıtık takımlar

tarafından geliştiriliyor. Yani dağıtık takımlarla çalışılabileceğine dair bir şüphe yok. Yine de aynı

odada beraber oturan, aynı hedefe odaklanmış, çapraz fonksiyonel küçük bir takımın verimliliğini

geçemez. Bu nedenle öncelik aynı ofiste bulunan takımlar oluşturmak olmalıdır. Eğer bunu

sağlayamıyorsanız önceliğiniz mümkün olduğunca yakın takımlar oluşturmak olabilir. Eğer farklı

lokasyonlarda bulunan takım üyelerine sahip olmanız gerekiyorsa yukarıda bahsettiğim araçlar ve

teknikler zararı indirgemek için kullanılabilir. Yani cimri davranmayın, paranın alabileceği en iyi araçları alın! Beraber çalışan bir takım kadar asla verimli olamayacaksınız fakat yaklaşabilirsiniz.

Page 146: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

146

Evden Çalışan Takım Üyeleri

Bazen evden çalışmak gerçekten iyi olabilir. Bazen evde geçirdiğiniz bir günde ofiste geçirdiğiniz bir

haftadan daha fazla kod yazabilirsiniz. Eğer çocuğunuz yoksa ☺

Yine de Scrum’ın temellerinden biri tüm takımın aynı yerde bulunmasıdır. Peki ne yapacağız?

Temelde ne zaman ve ne kadar sıklıkta evden çalışmak problem olmaz kararını takımlara bırakıyoruz.

Bazı takım üyeleri uzun süre yolculuk yapmamak ve trafikte zaman harcamamak için düzenli olarak

evden çalışır. Yine de çoğu zaman takımların aynı yerde bulunmaları için cesaretl endiririz.

Takım üyeleri evden çalıştığı zaman Günlük Scrum’a Skype’ın sesli aramasını(bazen görüntülü)

kullanırlar. Anında mesajlaşmak için gün boyunca online’dırlar. Elbet aynı odada bulunmak gibi değil

fakat bizim için yeterince iyi.

Bu oldukça iyi bir stratejidir. Uzun vadede aynı yerde bulunan takımlar istiyorsunuz. Çünkü bir

dağıtık takım aynı takımdaşlığı oluşturamıyor. Bu nedenle başlangıçta dağıtık bir takımınız(takım

üyelerinin farklı ofislerde bulunduğu takım) olsa bile her ofiste farklı takımlar oluşturmanın

yollarını arayın. İki takım arasındaki bağımlılıklar ve iletişimle ilgili sorunlarla yine başa çıkmanız

gerekecek fakat diğer seçenekteki problemlerle karşılaştırınca bu problemler daha basittir.

İyileştirilmiş günlük iletişime ek olarak ana kazançlardan biri motivasyondur. Takım

arkadaşlarınızla aynı odada bulunmak eğlencelidir! Motive olmuş insanlar daha iyi ürünleri daha

hızlı geliştirirler.

Page 147: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

147

Çarşamba günlerini odak günü olarak belirlediğimiz bir deneyimiz oldu. Yani “eğer evden çalışmak

istiyorsanız çalışabilirsiniz fakat bunu Çarşamba günü yapabilirsiniz, tabi takımın olurunu alarak”.

Bunu denediğimiz ilk takımda oldukça başarılı bir şekilde çalıştı. Takım üyelerinin büyük çoğunluğu

Çarşambaları evde kaldı ve birçok kullanıcı hikayesini bitirdi. Sadece bir gün olduğu için takım üyeleri

arasındaki bilgi senkronizasyonu bozulmadı. Bazı nedenlerden dolayı diğer takımlarda bu yöntem hiç

işlemedi.

Büyük resme bakarsak evden çalışan insanlar bizim için bir problem olmadı.

Scrum’ın yapı taşlarından biri kendi kendini yöneten takımdır. Bunun önemi anlatılamaz! Takıma

mümkün olduğunca sorumluluk verilmelidir. Bu sorumluluk içinde çalışma saatleri ve evden

çalışma kuralları gibi şeyler de olabilir. Kendi kendini yönetme yaratıcılık, motivasyon, yenilikçilik

ve diğer birçok iyi şey için anahtardır! Bazı yöneticiler, takımların bu güveni suiistimal

edeceğinden korkar fakat pratikte takımların suiistimal ettiğini çok nadir gördüm. Takımlar

teslimini yaptıkları üründen net bir şekilde sorumlu tutulduktan sonra bu sorumluluğun hakkını

verecek şekilde hareket etme eğilimindedirler.

Şimdilerde güzel ve ücret olarak karşılanabilir birçok iletişim sistemi bulunuyor. Örneğin Double

Robotics’e bakabilirsiniz. http://doublerobotics.com. En basit haliyle tekerlekleri bulunan bir

çubuk üzerinde iPad satıyorlar. Tıpkı bir Skype görüşmesinde olmak gibi fakat etrafta

gezinebiliyorsunuz! Oldukça fazla kullanmaya başladım. Başka bir ofise ışınlanıyormuşsunuz gibi hissettiriyor!

Page 148: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

148

Bölüm

OnYedi

Scrum Master Kontrol Listesi

Son bölümde size Scrum Master Kontrol Listemizi anlatacağım. Bu liste bir Scrum Master’ın en yaygın

olarak yaptığı fakat unutması kolay olan rutin yönetimsel işleri içerir. “Engellerin kaldırılması” gibi

açık şeyleri atladık.

Sprint Başlangıcı

- Sprint Planlama Toplantısı’ndan sonra Sprint Bilgi Sayfasını oluşturulur.

o Wiki’ye bu sayfanın bağlantısı eklenir.

o Bilgi sayfasının çıktısı alınır ve herkesin görebileceği takıma yakın bir duvara asılır.

- Yeni Sprint’in başladığına dair herkese duyuru epostası gönderilir. Bu epostaya Sprint Bilgi

Sayfası’nın bağlantısı ve Sprint Hedefi eklenir.

- Sprint istatistikleri dokümanı güncellenir. Bu dokümana tahmini takım hızı, takımdaki

kişilerin kimler olduğu ve Sprint uzunluğu gibi bilgiler eklenir.

Her gün

- Günlük Scrum Toplantısı’nın zamanında başladığından ve bittiğinden emin olunur.

- Gerektiğinde Sprint İş Listesi’ne kullanıcı hikayeleri ekleme, çıkarma.

o Ürün Sahibi’nin bu değişikliklerden haberdar olmasını sağlama.

- Sprint İş Listesi’nin ve burn-down grafiğin Geliştirme Takımı tarafından güncellenmesini

sağlama.

Ayrıca bu listeye de bakabilirsiniz. https://www.crisp.se/gratismaterial-och-guider/scrum-checklist Resmi olmayan resmi Scrum Master Kontrol Listesi’dir. O kadar çok kullanılmaya başlandı ki resmi olmasa da resmi bir kontrol listesi gibi oldu.

Page 149: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

149

- Problemlerin ya da engellerin ortadan kaldırılması, kaldırılamayan problemlerin, engellerin

Ürün Sahibi’ne ya da müdüre raporlaması.

Sprint Sonu

- Sprint demo’sunu düzenleme.

- Bir ya da iki gün önceden herkesin Sprint demo’su hakkında bilgilendirilmesi.

- Geliştirme Takımı ve Ürün Sahibi’nin katıldığı retrospektif çalışmasını yapma. Geliştirmeden

sorumlu müdür Retrospektif Toplantısı’na çağırılabilir böylece diğer takımlardaki pratiklerin

paylaşımı yapılabilir.

- Sprint istatistikleri dokümanının güncellenmesi(Takım hızının ve retrospektifte öne çıkan

önemli konuların eklenmesi).

Küçük kullanışlı bir liste. Zamanla kendinizi bu işlerden soyutlayın, Takımın bu işleri siz olmadan yapabilmesi için koçluk yapın. Takımın bu işleri siz olmadan yapabilmesi konusunda başarısız olsanız bile bu deneme hareketi sizi iyi şeylere yönlendirecektir. Bazı Scrum Master'lar Scrum yöneticisi ya da Scrum'ın kölesi olurlar çünkü Takımı memnun etmeye odaklanmışlardır. Eğer Takım Scrum Master'a çok fazla bağlanırsa, kendi kendini yönetme yeteneğini kaybetmeye başlar. Takım, Scrum'a yeniyse ve sizin yardımınıza ihtiyacı varsa başlangıçta bu büyük bir problem değildir. Fakat zamanla yönetimsel işlerden yavaş yavaş çekilmeli ve Takıma daha fazla sorumluluk vermelisiniz. Böylece engelleri kaldırmak ya da kod yazmak, test yapmak gibi Scrum Master'la ilgili olmayan işler için daha fazla vaktiniz olacaktır.

Page 150: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

150

Bölüm

OnSekiz

Son Sözler

Bu kadar uzun olacağını düşünmemiştim.

İster yeni başlayan biri ister bir Scrum emektarı olun umarım bu kitap size yararlı bilgiler sağlar.

Scrum içinde bulunulan çevreye göre şekillendirilebildiğinden genel olarak iyi pratikleri tartışmak

zordur. Yine de sizin tecrübelerinizi duymayı isterim. Yaklaşımınızın benimkinden farklılaştığı yerleri

anlatın. Yaklaşımımı iyileştirebilmek için fikirler verebilirsiniz!

[email protected] adresinden benimle iletişime geçebilirsiniz.

[email protected] adresine de arada bir göz atıyorum.

Eğer kitap hoşunuza giderse bloğuma da bakabilirsiniz. Umarım Java ve Çevik Yazılım Gelişt irme

üzerine yeni makaleler ekleyebilirim. http://blog.crisp.se/henrikkniberg/

Ohh, unutmayın. Bu sadece iş!

Şimdi blog’da birçok makale ve video bulunuyor! Sadece benim yazdıklarım değil Crisp’teki iş arkadaşlarımın, partnerlerimin ve arkadaşlarımın yazdıkları da var. Gerçekten altın madeni gibi! Zaman zaman Twitter’da da oldukça aktifim.(@henrikkniberg)

Neden bu kadar eposta aldığım belli oldu. Geribildirimleriniz için çok teşekkür ederim eğer cevap veremezsem lütfen alınmayın. Arada bir ben de hayatım varmış gibi davranıyorum.

Page 151: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

151

Okuma Önerileri

Aşağıda bana çok şey kazandıran birkaç kitabı paylaşıyorum. Kesinlikle okumalısınız!

Hmm…bunu gerçekten güncellemeliyim. 2007 yılından beri birçok ilginç kitap okudum! Fakat bu ayrı bir yazı olacaktır. #cliffhanger

Page 152: Siperden -  · PDF fileÜrün İş Listesi ... [nı Güncelleme ... Keşke herkes iyi bildiği bir konuda birkaç kitap yazabilse ya da çevirebilse,

152

Yazar Hakkında

Henrik Kniberg([email protected]), Stockholm’de bulunan Crisp(www.crisp.se) şirketinde

danışmandır. Java ve Çevik Yazılım Geliştirme konularında uzmandır.

İlk XP kitapları ve Çevik Bildiri ortaya çıktığından beri Henrik Çevik İlkeleri benimsemiş ve farklı

organizasyonlarda bu ilkelerin verimli bir şekilde nasıl uygulanabileceğini öğrenmeye çalışmıştır.

Goyoda’nın(1998-2003) kurucu ortağı ve teknolojiden sorumlu yöneticisi olarak TYG’yi ve diğer Çevik

Pratikleri birçok defa deneyimleme şansını elde etmiştir. Goyoda’da 30 kişinin geliştirdiği teknik bir

platformu yönetmiştir.

2005 yılının sonlarında İsveçli bir oyun geliştirme firmasında anlaşmalı olarak yazılım geliştirme

bölümünün başkanlığını yaptı. Şirket organizasyonel ve teknik problemlerden kaynaklanan bir kriz

içindeydi. Henrik, Scrum ve XP'yi araç olarak kullanarak Çeviklik ve Yalınlık ilkelerinin şirketin bütün

seviyelerinde uygulanmasını sağladı ve şirketi krizden çıkardı.

2006 yılının Kasım ayında bir Cuma günü Henrik ateşi çıkmış bir halde yatıyordu. Geçen bir yılda neler

öğrendiğini görmek için notlar çıkarmaya başladı. Bir kere yazmaya başladığında kendini

durduramadı. Çılgınca yazmalar ve çizmelerle geçen üç günün sonunda başlangıç notları 80 sayfaya

ulaşmış bir makale olmuştu. Bu makalenin adı Siperden Scrum ve XP’idi. Sonunda bu kitap

okuduğunuz kitaba dönüştü.

Henrik, holistik yaklaşımı benimsemiştir. Bu nedenle müdür, geliştirici, Scrum Master, öğretmen ve

koç gibi farklı rollerde bulunmaktan hoşlanır. Mükemmel yazılımlar ve mükemmel takımlar

geliştirmeleri için şirketlere yardım eder, Henrik için belirlenen rolün önemi yoktur.

Henrik Tokyo’da büyüdü ve şimdi eşi Sophia ve iki çocuğuyla Stockholm’de yaşıyor.

Boş zamanlarında aktif bir müzisyendir. Yerel gruplarda bass ve keyboard çalıyor ve beste yapıyor.

Daha fazla bilgi için: http://www.crisp.se/henrik.kniberg

Aynı aile ve çocuklar, sadece artık daha fazlalar. Fazla olan çocuklar :) Artık 4 çocuğu var.

Sadece bir hafta sonunda bu kadar yazabildiğim için kendime şaşırıyorum! Bu kitaptan dolayı diğer yazarlar benden nefret ediyor!

Bugünlerde daha çok yönetim danışmanı, organizasyonel araştırmacı ve Çeviklik/Yalınlık konularında koç olarak çalışıyorum. En basit haliyle şirketlerin daha iyi bir hale gelmeleri için yardım ediyorum. Gerçi zaman zaman kod yazıyorum sadece hobi olarak.