Agile ve Scrum Nedir? – Enes Eratılmış
Bir çok şirketin paylaşımlarında, bir çok insan kaynakları çalışanının daha doğrusu yöneticilerinin paylaşımlarında bir çoğu İngilizce paylaşım olanların içerisinde gördüğüm, Trabzon’da katıldığım etkinlikte bir konuşmacının Agile nedir biliyor musunuz sorusuna bakakalmıştım. Ardından Endüstri Mühendisi olarak çalışan bir kişiyle konuşurken de bu terimden bahsettiğinde tamam bu nedir diyerek araştırmaya başladığım bir terimdir.
Öncelikle bunu google üzerinde arattığınızda; “Atik yazılım geliştirme ya da çevik yazılım geliştirme, basit prensiplere dayanan yazılım geliştirme metotları gruplarının genel adıdır. “ diye bir olgu karşınıza çıkıyor.
Biraz daha derinlemesine incelediğimizde Agile’ın yazılımın ötesinde global bir hareket olarak ortaya çıkışının ardında kurumların günümüzün fırtınalı müşteri odaklı piyasası ile baş edebilmeleri için tekyolun Agile olmaktan geçtiğini keşfederler. Piyasadaki sürekli olarak gerçekleşen değişimleri, bunları sürekli olarak takip etmek zorunda olan kurumların bu değişimleri üstesinden gelmesini sağlar.
2001 tarihli Agile Manifesto ” yazılımın daha iyi yollarını ortaya koymak ” için bazı 20. yüzyıl temel yönetim varsayımlarının alt üst edilmesi gerektiğine inanan ileri görüşlü yazılımcıların görüşlerini gösteriyordu.
Manifestoda bazı sorulara yer verilmişti.
” İşleri yapan kişilerin tüm yeteneklerinden faydalanan işyerleri yaratabilsek neler olurdu? ”
“Bu yetenekler tamamen tamamen işin yapıldığı müşteriye ve diğer paydaşlara olağanüstü fayda yaratma odaklı olsaydı? “
“Bu özel katma değerlerden faydalananlar bunun karşılığını cömertçe vermek isteseydi? “
” Bu iş yerleri nasıl olurdu? “
” Mevcut hedef, prensip ve değerlerle nasıl bağdaşırdı? “
” Bu sorulara cevapların yazılım dışındaki alanlarda da anlamı olur muydu? “
2001 yılında bu soruların cevabını kimse bilmiyordu. Yazılımcılar denemeleri neticesinde yanıt bulmaya gayret ettiler. Pratikte pek çok farklı uygulama incelendi. Her ne kadar uygulamalar esasen aynı olsa da, genellikle farklı farklı isimlerle adlandırıldılar.
İlk denemeler tek takımlarla uygulandı. Denemelerin bazıları başarılı oldu. Denemeler takımlara, gruplara, üretime hatta tüm kurumu kapsayacak şekilde genişletildi. Riot Games ve Spotify gibi bazı kurumlar zaten ” Agile ile doğup” hızla büyüdüler ve Agile prensip ve değerlerine bağlı olarak yürütülmeye devam ettiler.
Yeni gerçekleşen her şeyde olduğu gibi bir süre ne olduğunun anlaşılması kolay olmadı. Zamanla daha geniş kitlelere eriştikçe önlenemez bir yol aldı ve neyin işe yarayıp yaramadığı da netleşti.
Sonuç olarak zaman içinde geleneksel yönetim biçimine kıyasla müşteri ihtiyaçlarına daha fazla odaklanan ve üretkenliği teşvik eden hedef, prensip ve değerlere daha belirgin bir yakınlaşma ortaya çıktı.
Agile her geçen gün artarak daha büyük çapta projelere uygulandıkça firmaların kazanımları – Spotify’ın Discovery Weekly’sinde olduğu gibi – özellikle artan ölçeklerde daha hızlı, pürüzsüz ve kişiselleşmiş duyarlılık gibi becerilerde belirgin ve çarpıcı oluyor.
“Yeni değer, prensip, uygulama ve faydalar da içeren ve alışılagelmiş kontrol odaklı yönetim mantığına radikal alternatifler sunan Agile metodolojileri geniş bir endüstri yelpazesine, birimlere ve hatta üst yönetimlere artık yayıldı. National Public Radio yeni radyo programlarını oluştururken agile metotlarını kullanıyor. John Deere yeni makineleri geliştirmek için, Saab ise yeni savaş jetleri üretirken bu metotları kullanıyor. Bulut yedekleme sistemlerinde lider olan Intronis pazarlamada kullanıyor. Global bir üçüncü parti lojistik şirketi olan C.H. Robinson Agile metotlarını insan kaynaklarında uyguluyor. Mission Bell şarap imalathanesi ise şarap üretiminden depolanmasına ve üst yönetime liderlik eden ekibinin yönetimine kadar bu metodolojiyi kullanmaktadır. “
Günümüzün dijital ekonomisinde şirketlerin Agile yapılar olması artarak ivedilik kazanan bir gereklilik olmakla beraber pek çok şirketin kemikleşmiş komuta ve kontrole dayalı bir kurumsal mimarisi ve kültürü bulunmaktadır. Bu durum aslında her şeyden önce endüstriyel ekonomi zihniyetini ve kıdemli yöneticilerinin becerilerini -ki bunlar Agile bir kurum olmanın önündeki en büyük engellerdir- yansıtmaktadır. Dönüşümün gerçekleşebilmesi için kıdemli yöneticilerin yeni zihniyet ve becerileri edinip, bütünsel bir şekilde uygulamaları ve tamamen yeni Agile bir kurum mimarisi ve kültürü tasarlamak için kullanmalıdırlar.
Bazı yöneticilerin Agile’ı kavramasındaki zorluk Agile’ın firmanın mevcut yönetim varsayımlarıyla uygulanabilecek bir metodoloji veya süreç olmamasıdır. Agile ile bir kurumu yönetme fikri, halihazırda ve son yüz yıldır geçerli olan kurum kavramını yeniden tanımlamaktadır.
Agile yapısı mevcut iş modelini yürütmeye dönük etkin, istikrarlı ve sabit bir makine olarak düşünülen bir yapıdan ziyade büyüyen, öğrenen ve uyum sağlayan, devamlı değişimle yeni fırsatları yakalayan ve müşteri için yeni değer yaratan, yaşayan bir organizmadır.
Agile, gücün yukarıdan aşağıya inmektense yeniliğe ivme kazandırarak ve müşteriye gerçek bir değer katarak işini yerine getiren kişilere ilham vererek şirketin geleceğini şekillendirmeye inanır. Agile, kendini yöneten takımlara geniş kontrol parametreleri ile özerklik verilerek işi yerine getiren kişilerin kapasitesinin arttırılmasını vurgular. Tahmin edilebilirlik veya etkinlikten çok şeffaflık ve devamlı iyileştirmeye değer verir. Açık ve interaktif konuşmalar(diyaloglar), yukarıdan aşağıya inen talimatlara göre daha kıymetlidir. Nihai müşteriye değer katmayan her şeyi durdurur. Agile, başarının anahtarının daha fazla işi daha hızlı yapmak olmadığının farkındadır. Anahtar akıllıca davranıp daha az iş ile daha fazla değer yaratıp hızlıca teslim etmekte yatmaktadır.
Agile geleneksel yönetimde var olan “keşfetmek” ile “kendi çıkarı doğrultusunda kullanmak” arasındaki ayırımı yok eder. Agile doğru uygulandığında, bir kurumun tüm bileşenleri müşteriye sürekli daha fazla değer katmanın yollarını araştırır. Böylece işi yapanlar için işi anlamlandırmakla kalmayıp hizmetin sunulduğu yerler için de harikalar yaratılır: bir başka deyişle bunun kuruma geri dönüşü de çok cömert olur.
Agile savunucuları için Agile bir şirketi ve ekonomiyi gerçekten daha iyi bir yönetme biçimini -hem işi yapan kişiler, hem hizmeti alan hem de kurumun kendisi için- temsil etmektedir. Agile ile yönetimin kurumdan fayda çıkartmasındansa, müşteriler ve toplumun geneli için fayda yaratılmış olur.
Agile Manifesto – 12 Prensip
Bir yazılım takımında bilgi alışverişinin en verimli ve etkin yöntemi yüz yüze iletişimdir.
Çevik süreçler sürdürülebilir geliştirmeyi teşvik etmektedir. Sponsorlar, yazılımcılar ve kullanıcılar sabit tempoyu sürekli devam ettirebilmelidir.
Sadelik, yapılmasına gerek olmayan işlerin mümkün olduğunca arttırılması sanatı, olmazsa olmazlardandır.
Günümüzde projelerin yönetiminde farklı yöntemler kullanılmaktadır. Mühendislik bölümlerinde okuyan ve Gantt Şemalarını duymayan yoktur sanırım. Henry Gantt tarafından 1900 yılların başında geliştirilmiş bir şema biçimidir. Bu şemalar kullanılarak oluşturulan Şelale (Waterfall) yöntemi ile detaylı bir proje planı çıkarmak için kullanılır.
Öncelikle iş gereksinimleri belirlenir, daha sonra tasarım aşamasına geçilir. Bu aşamada;
Projenin her bir parçasından bir sonraki parçaya şelaleden suyun akışı şeklinde geçmesi hedeflenmektedir. Bu tarzda bir yaklaşım her şeyin detaylı olarak planlandığı ve herkesin projeyi detaylı olarak görmesi olarak faydalı gözükse de ilk başta, gerçek dünyada bu planın sürekli güncel kalması çoğu projede imkansızdır. İmkansız olmasının sebebi işe başlarken planlar işlerin yolunda gideceği düşünülerek yapılır. Ancak işler zaman çizelgesinden sapmaya başladığında, istediğimiz gibi gitmez. Bu sebepten dolayı problemleri ortadan kaldıracak yeni yaklaşımlar aranıyor.
Bu yaklaşımlarından biri Scrum’dur.
Scrum’un ana hedefi: Bir projeyi, bir ürünü yada bir işi, daha az maliyetle, daha az insanla, daha az zamanda, daha kaliteli bir şekilde tamamlamak için kullanılabilecek bir yöntem olarak tanımlanmaktadır.
Scrum, özünde bir projede düzenli olarak gelinen durumu kontrol ederek, ortaya çıkan sorunların çok fazla tıkanıklığa sebep olmadan fark edilerek mevcut duruma ve sürece göre ekibe uyarlamayı hedefliyor.
Scrum yaklaşımını uygulamak için illa ki yazılım projesi geliştirmeniz gerekmez. Yaptığınız tüm işlerinizde, tüm ürün geliştirme ya da projelerinizde bir yöntem olarak kullanabilirsiniz.
Scrum söylediğimiz gibi bir çok işte kullanılabileceği gibi, bir ürün için en temel şekilde düşünmek gerekirse nasıl işlediğine terimsel bilgiden uzaklaşarak göz atalım.
Projeye başlarken, öncelikle ürün sahibi belirlemelisiniz. Ürün sahibi yapılacak işle ilgili vizyona sahip olan kişi olmalıdır. Buna İngilizce terimlerde ” Product Owner “ deniyor.
Bu işi yapacak ekibi belirlemelisiniz.
Bu ekipte sadece işi yapacak kişiler olmalıdır. Mümkün olduğunca küçük tutulmalıdır. Önerilen sayı, 3-9 arasında gözüküyor. Bu proje büyüklüğüne göre değişebilir. Bu bölüme İngilizce terimlerde ” Team “ olarak isim veriliyor.
Scrum Ustası olarak ifade edilen bir kişi belirlenmeli, bu kişi aslında ekibe Scrum sürecinin işletilmesi konusunda yol gösterecek ve çıkan problemlerin çözülmesinde yardımcı olacak kişidir. Bu kişiye ise İngilizce terimlerde ” Scrum Master “ adı veriliyor.
Proje sahibi yapılacak işle ilgili bir iş listesi oluşturur. Bu iş listesinde projeyle ilgili yapılması gereken tüm her şeyin olması gerekmektedir. Proje sahibi tarafından işlerin öncelikleri belirlenmelidir ve sıralanmalıdır. Bu listeye ise ” Product Backlog ” denmektedir. Bu süreç içerisinde listenin sürekli güncel olması gerekmektedir.
İşleri yapacak kişiler listeye bakıp, ilgili işin yapılıp yapılmayacağını ve ne kadar zaman alacağını söylemelidir.
Zaman olarak net bir saat değilde, büyük bir iş mi ya da küçük bir iş mi belirlenmelidir. Bunun sebebi verilen saatlerin hiç bir zaman tam olarak denk gelmeyeceğidir. Oluşturulan iş listesi; scrum ustası, takım ve ürün sahibiyle ilk toplantıda parçalara bölünür.
Bu toplantının ismi, Sprint Planlama Toplantısıdır.
Bu toplantıda bundan sonra yapılacak diğer sprint planlama toplantısına kadar yapılacak işler belirlenir. Diğer toplantı için belirlenen aralık 1 aydan daha kısa olması önerilir. Gerçek hayat uygulamalarında ise genellikle 1-2 haftalık hedef belirlenir. Yapılacak iş dahilinde herkes sorumluluğu içinde ilgili iş maddelerini yapmaya başlar. Her sprint sonucunda eldeki sonuçlar değerlendirilir.
Tekrar söylemekte fayda var, işin büyüklüğüne göre örneğin, bir scrum tahtası hazırlanır. Üç ayrı kolona ayrılabilir.
-Devam eden işler
Başlanan işler tahtadan yapılacak işler bölümünden alınıp devam eden işler bölümüne, biten işlerse devam eden işler bölümünden biten işler bölümüne konulabilir.
Bu takip etme yöntemlerinden sadece bir tanesidir.
Tabi bu sprint süreci devam ederken, günlük stand-up toplantıları yapılır. Ekiple scrum ustalarının arasında, ayakta 15 dakikayı geçmeyen toplantılar yapılır. Ayakta yapılmasının amacı kısa sürmesini sağlamaktır.
Bu toplantının hedefi ise ekibin birbirinden haberinin olması, kimin ne iş yaptığının bilinmesi, takıldıkları yerlerde çözüm bulunması hedeflenir. Sorunlara çözüm bulma işi Scrum Ustası tarafından yapılır.
Bu toplantıda temelde 3 soruya cevap aranır.
Bugün ne yapacaksın?
İşini yapmana engel bir durum var mı?
Bu periyot içinde, engellerin ortadan kaldırılması ve herkesin işten haberdar olması istenir. Bu süreler 15 dakikayı geçiyorsa scrum sürecinde bir problem var demektir. Sprint sonunda tamamlanan işlerin değerlendirilmesi için gözden geçirme toplantısı yapılır. Bu toplantıya isteyen herkes katılabilir. Tamamlanan maddeler değerlendirilir.
Son olarak sprint geçmişini değerlendirme toplantısı, gözden geçirme toplantısı planlanır, yeni sprint için bir toplantı planlanır. Nelerin yolunda gittiği, gitmediği değerlendirilir. Bir sonraki sprintte neler daha iyi olacak şekilde konuşulur.
Yaptığınız iş bitene kadar sürekli sprintler devam eder. İş listesi tekrar edilir.
Tamamen bir iş için kurguladığınızda aklınızda bir şeyler canlandığını düşünüyorum. Bir iş yapılırken, bir aksaklık olması kaçınılmazdır ancak sorun bu aksaklığın ne zaman fark edildiği ve ne kadar süreci geri almanız gerektiğidir. Yazılım üzerine düşünülmesinin sebebi büyük ihtimalle bundandır. Çünkü bir yazılımı yazdıktan uzun süre sonra ortasında bir yerinde sorun olduğunu söylediğiniz zaman bir çok yapılan işlem geri alınmak zorunda kalabilirsiniz, bu size zaman, iş gücü yani sonuç olarak zarar ettirir.
Yazının içerisinde Riot Games’in bu metodolojiyle doğduğundan bahsetmiştik. Riot Games’in bir ürünü olan ve benimde zaman zaman oynadığım oyunu League Of Legends (LoL) içerisinde bir şampiyonu nasıl ortaya çıkardıklarını anlattıkları bir model mevcut. Eğer ilgi duyuyorsanız okumanızı tavsiye ederim.
2015 Agile Zirvesi konuşmalarından birisi, ” Agile Nedir, Ne Değildir? ” dinleyebilirsiniz.
AgileAgile NedirÇevikLoLRiot GamesScrumScrum Nedir
Promethee Yöntemi Nedir?
Yeni Mezun Sohbetleri 4 - Zeliha Ceylan
Yeni Mezun Sohbetleri – Şeyda Aydemir