28 Eylül 2014 Pazar

Homo scrumus : yazılım insanının evrilmiş hali


Homo scrumus, klasik yazılım geliştirme süreçlerinde yazılım geliştirdikten sonra, agile yaklaşımlara kendini adapte etmiş, scrum framework'unu tüm terminolojisi ile kullanan, scrum değerlerine ve faydasına inanan yazılım geliştirme insanıdır.

Homo scrumus, odak insanıdır. Çalışmalarını odak çercevesinde tutmaya özen gösterir. Kendini odaktan uzaktan uzaklaştıracak her tür engel konusunda etrafındakileri uyarma eğilimi taşır.

Homo scrumus, deneysel süreç kontrolünün üç temelinden biri olan şeffaflığa sıkı sıkıya bağlıdır. Bu sebeple açıktır. Çalışmalarının her aşamasında çalışma arkadaşlarına karşı açık davranır. Onun gizlemek, saklamak ve ertelemek ile işi olmaz. O mevcut durum içerisindeki durumu açık bir şekilde ifade eder, gelecekte karşılaşılabilecek durumlar hakkında öngörülerini paylaşmaktan çekinmez. Bu açıdan Homo scrumus çekingen bir insan değildir.

Homo scrumus taahhüt insanıdır. O taahhüt eder ve çalışma arkadaşlarından da taahhüt bekler. Homo scrumus'un taahütü sadece sonuç ile ilgili değildir. Sadece çalışan bir yazılım'a tahhüt etmez, aynı zamanda scrum değerlerini sahipleneceğine, kendinden organize olmaya, gelişime, agile prensiplerine, şeffaflığa taahhüt eder.

Homo scrumus saygılıdır. Saygı duyar, saygı besler. Üretim aşamasının her safhasında ürüne değer katmak için atılmış her adıma saygıyla yaklaşır. Farklı kişilikler ve deneyimler ondaki saygıyı besleyen unsulardır.

Homo scrumus cesurdur. Statuko'ya karşı değişim adımlarını atabilmesi için cesur olmaya evrilmiştir. Hatalarını ve kimsenin hatasız olmayacağını kabul etmek için bu cesarete sahiptir. Ortamda şeffaflığı hakim kılmak için cesaretini kullanır.  


http://guntherverheyen.com/2013/05/03/theres-value-in-the-scrum-values/
https://www.scrumalliance.org/why-scrum/core-scrum-values-roles
http://barryhawkins.com/blog/empirical-process-control-why-scrum-works/ 

11 Eylül 2014 Perşembe

Sprint Planning : Not defterimden notlar.

Scrumda her döngü Sprint Planning toplantısı ile başlar. Bu toplantı Product Owner ve Geliştirme takımının Sprint için hangi işleri alacağına karar verdiği toplantıdır. Dört saatlik bu toplantı Product Owner ve Geliştirme Takımı arasında geçer.[1,2] İki kısımdan oluşan Sprint Planning'in ilk kısmında What?(Ne) sorusuna cevap aranır. Bu bölümde
  • Grooming yapılır;
    • Sizing
    • Business analiz
    • PBI'ların dikey olarak daha küçük PBI'lara bölünmesi 
    • PBI'ların resize edilmesi 
  • Sprinte alınacak PBI'ların seçimi
  • Sprint Goal'un belirlenmesi 
konuşulur, kararlaştırılır. Sprint Planning, Grooming'ten ayıran Sprint için PBI'ların seçilmesi ve Sprint Goal'un oluşturulmasıdır. Sprint Planning toplantısının verimli geçmesini sağlayacak önemli bir etken, Sprint'in %10-15 lik kısmında Grooming toplantısını yapmak olacaktır. Grooming toplantısında asıl amaç Scrum takımının önündeki üç dört Sprint'lik PBI'ların size'landırılarak belirsizliklerin giderilmesi ve Sprint Planing toplantısında daha olgun bir Product Backlog ile çalışılmasının sağlanmasıdır. Groom edilmiş bir Product Backlog takımın işini kolaylaştıracak ve Sprint Planing'i hızlandıracaktır. 

Grooming noktasında Scrum Master'in aktif rol alarak Product Owner'ı toplantı yapmaya yönlendirmesini sağlamalıdır.

Sprint Planing toplantısının ikinci yarısı How?(Nasıl) sorusuna cevap arandığı kısımdır. Bu kısım kağıt kalem toplantısıdır.[3] Takımın PBI'ları nasıl detaylandırılacağının görüşüldüğü bu kısımın çıktıları; 
  • Teknik analiz
  • Tasarım 
  • Plan
  • Veri tabanı tasarımı 
olmalıdır. Bu çıktılarla doğrudan geliştirme aşamasına geçilebilir, detaylı bir analiz, teknik tasarım dokümanı beklenilmeyebilir. Bu kısımda yapılan yanlışlardan bir tanesi de tasklara verilen zamanlar ile PBI'lara atanan size'lar arasında lineer bir ilişki aranmasıdır. Takımın taahhüt ettiği Product Backlog'tur. Bu açıdan Sprint Backlog takıma özeldir ve kimseyi ilgilendirmez. Takım taahhütlerine ve Sprint Goal'e odaklanmalıdır. Asıl yakalanması gereken sürdürülebilir bir hızdır (sustainable pace) ve bu artırmaya çalışılmalıdır. 


[1] http://scrummethodology.com/scrum-meetings/
[2] http://en.wikipedia.org/wiki/Scrum_(software_development)
[3] Ahmet Akdağ, ACM 

6 Eylül 2014 Cumartesi

Scrum: bir dönüşüm romanı

[Scrum: bir dönüşüm hikayesi roman olsaydı diye düşününce girizgah olarak aklıma bunlar geldi...]

Hava açık olsa da gecenin mat siyahı sokak lambalarının ışıklarıyla delik deşik olmuştu. Bu saatte Hakan'a kösele ayakkabısının hicaz makamında çıkardığı seslerle, sokak köpeklerinin solukları eşlik ediyordu. Bir an duraksadı. Bir sokak lambasının altında duruyordu. Ayaklarının altında kalan gölgesinin dalgalanışının fazla mesai sonrası yorulan gözlerinin bir oyunu mu olduğu yoksa sokak lambasının bozukluğundan mı kaynaklandığı kısa bir an zihnini yokladı. Bu saatte kendisini bekleyen eşine ve kızına gitmek yerine, hala açık olduğunu umduğu kahve dükkanına uğrayacaktı. Kendisine sert bir kahve ısmarlayıp, kızı Melis için kakao drajelerinden eşine föndü için kuvertür alacaktı. Çok yorulduğunda içine derin bir nefes çekmek gibi, içinde sıkışıp kaldığı kısır döngüye kısa bir mola vermek istiyordu.

Dükkana girdiğinde eşinin mesajını gördü, Melisin uyuduğunu eve geldiğinde zile basmaması gerektiğini yazıyordu. Hakanın evde olamayışı eşini ve Melisi de değiştirmişti. Ricaların yerini emir kiplerine bıraktığı bir dönem geçiriyorlardı. Tükenmişlik hissinin en acıtan tarafı da buydu belki de. Hayatında her zaman zorluklar olmuştu. Üniversite sonrası girdiği iş ortamı umduğunun aksine gayri samimi ve iki yüzlüydü. Kendi statülerini sağlama almak için elindeki topu sürekli başkalarına atan, taşın altına elini sokmak için sürekli üstlerinden emir rica bekleyen, bu tarz konularda asla kendi insifiyatiflerin kullanmak istemeyen bir sürü insan yığınıyla muhatap olmuştu. Yazılım geliştirme uzmanı olarak başladığı ve proje yöneticisi olarak devam ettiği iş hayatında profesyonelliğini koruyarak hiç bir işi kişiselleştirmeden yönlendirmiş ve gereken özveriyi ve hatta fazlasını göstermişti. Ama artık yavaş yavaş yorulduğunu hissetmeye başlıyordu.

Dükkandaki kesif kahve kokusunun etkisiyle yorgunlunun yerini sabahları saatin alarmına gerek kalmadan kendiliğinden uyandığı zamanlardaki gibi tuhaf bir uyanıklık hali alıyordu. Bu kahve dükkanını Hakan için özel kılan ona çocukluğunu hatırlatıyor olmasıydı. Her zaman karşısındaki koltuklara oturmayı tercih ettiği büyük duvar saati de onun buraya gelmesinin en büyük sebeplerindendi. Rahmetli dedesinin marangozhanesinde aynısında vardı. Hakan için çocukluğunun en canlı hatıraları bu marangozhanede olanlardı. Dedesinin her gün sabahın en erken saatinde marangozhaneyi açışı, birlikte çalıştıkları kalfa ve çırakla diyalogları, onları yetiştirirken gösterdiği özen ve hoşgörü, esnaf ve müşterileri ile olan muhabbeti Hakan'ın iş yaşamına da yön veren anılarıydı. Dedesi her sabah işe başlamadan o gün nelerin yapılacağını istişare eder, kalfa yada çırakların işler ile ilgili değerlendirmelerini alır, önemli yada önemsiz tüm detayları itina ile dinler, o gün için önlerinde bir sorun var mı sorarak emin olurdu. Müşterilerine asla yetiştiremeyeceği bir iş için söz vermezdi. Çalışanlarını asla fazla mesaiye bırakmaz, herkesle işe aynı vakitte başlar ve herkes ile birlikte bitirirdi. Bu marangozhaneye dışarıdan bakan biri usta ile çırağı ayırt etmekte zorlanırdı. Zarar edecek dahi olsa çıraklarının eğitimi adına onların hata yapmasına izin verir, hata yapmaktan korkmayan kişilerle çalışmak isterdi. Oluşturduğu bu ortam bir çoklarının ücret bile talep etmeden çocuklarını Hakan'ın dedesinin yanına çırak olarak göndermesini sağlamıştı. Marangozhanenin üç temel dayanağı dürüst, çalışkan ve sorumluluk sahibi olmaktı.

Hakan saatinde ilerlemesi ile iyice ıssızlaşan mekanda bir başına kahvesini yudumlarken bir yandan da marangozhanedeki anılarına dalmıştı. Duvar saatinin tıklamalarının oluşturduğu sabit melodi Hakanın en büyük terapisti oluyordu. Bu kadar yoğun çalışmasına rağmen hala işlerin istediği hızla gitmemesi, fazla mesailer yüzünden etkilenen sosyal yaşamı ve aile hayatı artık bir şeyleri değiştirmesi gerektiğini fısıldıyordu. Para transfer sistemlerinin dönüşümü ile ilgili yürüttüğü bir projede çok fazla mesai yapması gerekmişti. Evden ne kadar uzak kaldığını anlamasını kızı Melis sağlamıştı. Melis yeni yeni konuşmaya başlamıştı. Annesi ona anne, baba gibi kelimeleleri öğretmişti, aile bireylerini tanıyor ve onlara doğru şekilde hitap edebiliyordu. Tanımadığı kişiler içinse abi, abla, teyze, amca gibi kelimeleri kullanıyordu. Bir akşam Hakan işten döndüğünde Melis ona abi diye seslendi, Hakan Melisin onu karıştırdığını zannetmişti ama bir kaç kez daha aynı şekilde hitap etmesiyle durumu anlamıştı. Sabahın erken vaktinde uyanıp çoğu zaman Melis uyandıktan sonra eve geliyor olması artık onun için bir rutin olmuştu. Böyle bir tempoda kendi kızının onu unutması normaldi. Sonraki günlerde artık mesaiye kalmayacağını belirttiğinde iş arkadaşlarının hoşnutsuz tavrıyla karşılaşsa da ailesiyle vakit geçirmek onun için hayati bir görev olmuştu. Melisin yemeğini yedirmek, üstünü değiştirmek, parka götürmek gibi rutin işlerini artık kendisi devralmıştı. Baba demesini sağlayana kadar bu görevleri kendisi yapmıştı. Sonra mesailerine istemese de devam edebilirdi.

Hareketsizliğin ve yoğun çalışma temposunun emarelerini öyle uzakta aramaya gerek yoktu. Hakanın son zamanlarda aldığı kilolar en trajik belirtisiydi. Hakan artık sıklıkla göbeğini çevreleyen yağ simidini eliyle kavrayarak ne kadar kilo aldığını anlamaya çalışıyordu. Projelerin zorluğuyla birlikte kilolarıda paralel olarak artıyordu. Her akşam söylenen pizzalar içilen kolalar Hakan'ı aslında yaşamak istediği hayattan uzaklaştırıyordu. Üzerine yapışan bu atalet ona öğrendiği fizik kurallarını hatırlatıyordu. Aynı kuvvetle ağır nesneler daha az bir ivme ile haraket ettirebilir. Hakan her sabah ayakkabılarını iliklemesi gerektiğinde göbeğinin ona engel olmasıyla birlikte koşuya başlamaya karar veriyordu. Sadece karar vermekle geçen zamanının özgüveni ve kendi yaşam kalitesi üzerinde ki olumsuz etkisi giderek büyüyordu. Hakan yine göbeğindeki yağ öbeğini tutmuş ve içinden onunla konuşuyordu. Ona bir isimde vermişti, Göbek Can. 'Artık seninle yollarımızı ayıracağız Can' diye geçirdi içinden pek inanmasada. Hakan, Can'ın ağaçların gövdesindeki yaş halkaları gibi halkaları olduğuna inanıyordu, her bir proje için eklenmiş yeni halkalar.

Hakan değişime inanıyordu ama değişim için yeterince motivasyonu olmadığını düşünüyordu. En azından geldiği bu noktada sahip olduğu değerlerle kendi kurumu için vazgeçilmez bir noktada olsa bile yinede kendisi ve çalıştığı kurum için birşeyleri değiştirmeliydi. Kendi hayat serüveninde geriye baktığında yapmak isteyip yapamadığı birşeylerin olmasının onu üzeceğini biliyordu. Bu sabit gidişatın sürdürülebilir olmadığını,  ailesi, arkadaşları ve işi adına harekete geçmesi gerektiğine inanıyordu. Zira Peynirimi Kim Kaptı kitabında bahsedilen değişimi unutan ve değişime direnç gösteren zavallı insancıklardan olmak istemiyordu. Yazılım dünyasını dedesinin marangozhanesine çevirmenin bir yolu vardı aslında, Scrum. İş hayatının kendi hayatının büyük bir kısmını aldığını bildiği için, değişime oradan başlamalıydı. Yeni öğrenmeye başladığı karışık projeleri yönetiminde kullanılan bu çatı tek nokta üzerinden yönetilen ve yönlendirilen tüm süreci tabana yayarak onların da bilgi, birikim ve deneyimlerinden faydalanarak, şeffaflık, denetleme ve uyarlama temelinde sürecin ilerleyişini hızlandırdığı gibi gereksiz zaman ve maliyet kayıplarını en aza indiriyordu.

Kahvesinin son yudumlarında daldığı düşünce denizinden yavaş yavaş çıkıyordu. Kahvesi iyice soğumuştu. Hakan kararını verdi. Artık kendisi adına değişim için elinden geleni yapacaktı. İkna edilmesi gereken herkesi ikna etmek, sorumluluk ve insifiyatifi almak, değişim için ne yapılması gerekiyorsa kendi payına düşeni yapmak ve geri kalan kısım içinse etrafındakileri harekete geçirmek konusunda tüm gücüyle çalışacaktı.




Agile, Lean, Scrum hakkında merak ettiklerim

Scrum [altyapısı/çatısı]'nı kullanarak yazılım geliştirdikçe ortaya merak ettiğim konular çıkıyor. Zamanla araştıracağım ama şimdiden zihnimi kurcalayan bazı başlıklar şöyle;

  • Yazılım Pratiklerinin Agility'ye etkisi
    • Bu konuda takip edilecek bir isim Lemi Orhan Ergin. Yakın bir zamanda CraftSummit'15 de de yer aldı. Pair Programing, Test Driven Development vs. bir çok kavramla ilgili olarak sizi engin denizlerde yüzdürebilir... 
  • Servis takımıları ile Proje takımlıların Scrum'a uyum hızı ve farklılıkları
    • Bu konu da deneyimlerim oldu bu süreçte. Proje ve Servis takımlarının dimanikleri farklı olduğu için Scrum'ı uygulayış şekilleri de farklı olmakta. Servis takımları daha çok maintenance/bakım kısmında kalabiliyor(Mevcut sisteme destek vermek açısından). O yüzden Sprint'lerinde gelen problem kayıtları için bir buffer ayırlmaları gerekmekte. Ayrıca bu bakım çalışmalarından dolayı New Feature üretmekte de Proje takımlarından  daha geride kalabiliyorlar. Proje takımları biraz daha odak ilerleme lüksüne sahip ekipler. Aynı zamanda problem sadece kendi ürettikleri problem kayıtları ile ilgilenmekteler, ayrıca New Feature/Done oranlarıda proje takımı olmalarından mütevellit yüksek çıkmakta.
  • Scrum dönüşümlerinde Sosyolojik farklılıkların etkisi 
    • Scrum tamamen bir iletişim oyunu. Evet bir oyun. Bir çerçevesi ve basit kuralları var. İletişim içinde olduğu için Sosyolojik farklılıklar direkt ekiliyor. Şeffaflık üzerinden bir analiz yapmak mümkün. Acaba biz USA'daki scrum takımları kadar şeffaf mıyız?