Geçmişten Günümüze Bir Yaklaşımın Yolculuğu: Agile
Dünyamız her geçen gün giderek daha fazla değişken, belirsiz ve karmaşık hale geliyor. Değişim insanlarda, insan davranışlarında, ihtiyaçlarda, piyasada, basın ve yayın organlarında, organizasyonlarda ve organizasyonların çalışma metodolojilerinde hissediliyor. Bu karmaşanın içerisinde son yıllarda sıkça duymaya başladığımız bir kelime – “Agile”, kurtarıcı olarak karşımıza çıkmaya, araştırılmaya ve organizasyonlar tarafından uygulanmaya başlamış durumda. Peki gerçekte nedir bu Agile? Agile (Çeviklik); değişen şartlara etkin bir biçimde adapte olabilme esnekliği, kapasitesi ve yeteneği anlamına gelmekte. İlk olarak yazılım dünyasıyla hayatımıza girmiş gibi görünse de geçmişten günümüze Agile’ın tarihsel gelişimini incelemekte yarar var.
Tarihsel Perspektiften Agile’a Bakış
Bilinenin aksine Agile düşünce yapısı yeni veya yakın zamanda keşfedilmiş bir kavram değildir. Francis Bacon’un 17. yüzyılda tanıttığı Bilimsel Yönetime dek Agile’ın köklerini takip etmek mümkün. Deneysellik tohumuyla yeşerip temelleri atılan Agile düşünce yapısını, geçmişten günümüze etkileyen birçok farklı tarihsel olay ve kavramın olduğunu da vurgulamak yanlış olmayacaktır. Agile zihniyeti şekillendiren bu tarihi olay ve kavramlara tarihsel sıralamasına göre bir göz atalım.
- 1620 – Bilimsel Yöntem / Francis Bacon
Bilimsel yöntem, en basit haliyle aşağıdaki şekilde özetlenebilir:
- Evrendeki bir fenomenin gözlemlenmesi.
- Bu fenomene dair, gözlemler ile tutarlı, ancak kesin olmayan, hipotez adında deneysel bir açıklama getirilmesi.
- Hipotezin tahminlerde bulunmak için kullanılması.
- Tahminlerin deneylerle veya ek gözlemlerle test edilmesi ve sonuçlar ışığında hipotezde gerekli değişikliklerin yapılması.
- (3) ve (4) numaralı adımların hipotez ve deney arasında tutarsızlık kalmayana kadar tekrarlanması.
Söz konusu bu yöntem bugün bildiğimiz Agile düşünce yapısının temelinde yer alan ampirizm ya da deneysellik kavramının atılmış tohumları olarak ele alınabilir.
- 1930 – Planla, Uygula, Kontrol Et, Önlem Al (PUKÖ) / Walter Shewhart
Shewhart, Bacon'ın bilimsel yönteminin üzerine bilginin entegrasyonunu sağlamak ve bir döngü oluşturabilmek için "Önlem Al" bileşenini ekledi. Sisteme göre hareket etmez ve kasıtlı iyileştirmeler yapmazsak, inşa ettiğimiz şeyi ve onu nasıl inşa ettiğimizi iyileştiremeyeceğimizi öne sürdü. Bu bakış açısıyla, Agile geliştirme süreçleri, çözümün yanı sıra çözümün oluşturulmasını iyileştirmek için geri bildirim içerir.
- 1948 – Toyota Üretim Sistemi (Yalın Üretimin Öncüsü) / Taiichi Ohno
Lean (Yalın) değer kavramını ön plana çıkarmaktadır. Değer yaratılmasına katkıda bulunmayan her şey verimliliği ve etkinliği olumsuz etkilediğinden ortadan kaldırılması gereken birer israf olarak tanımlanmaktadır. Lean (Yalın) yaklaşımda işi yapan kişiler işi geliştirilmesi noktasında en iyi bilgiye sahip olarak kabul edilir. Sürekli iyileştirme ve değer teslimi vurgusu Agile’ın da temelini oluşturmaktadır.
- 1950 - Planla, Uygula, Analiz Et, Önlem Al / W. Edwards Deming
Deming PUKÖ döngüsünü baz alarak yalnızca “Kontrol etmek” yerine elde edilen sonuçlar üzerine çalışma ve “Analiz Etme” ihtiyacına daha fazla dikkat çekmiştir. Gözlem ve adaptasyon Agile düşünce yapısının temel yapı taşlarını oluşturmaktır. Deming’in çalışması toplam kalite ve kalite yönetim disiplinlerini de etkileyerek Agile’ı teknik mükemmelliğe sürekli olarak dikkat etmeye yönlendirmiştir.
- 1986 – The New New Product Development Game / Hirotaka Takeuchi ve Ikujiro Nonaka
Takeuchi ve Nonaka yeni ürün geliştirme yaklaşımı üzerine kaleme aldıkları bu makalelerinde altı özelliği içinde barındıran bütünsel bir yaklaşım ortaya koydular. Bu özelliklerden çapraz fonksiyonel takımlar ve iç içe geçen geliştirme aşamalarına yapılan vurgu günümüz Agile yaklaşımlarının öncüsü olmuştur.
- 1995 – Scrum Çerçevesi / Jeff Sutherland ve Ken Schwaber
1995 yılında OOPSLA (Object-Oriented Programming, Systems, Languages & Applications Conference) Konferansında dünyaya ilk kez tanıtılan Scrum Çerçevesi günümüzde yaygın olarak kullanılan bir uygulamadır. Öngörülebilirliği sağlayabilmek ve riski kontrol altında tutmak için iteratif ve artırımsal bir yaklaşımını benimseyen Scrum deneyimsel süreç kontrol teorisi temelinde şekillenmiştir. Agile çalışma yöntemleri arasında baskın bir liderliğe sahip Scrum’ın kalbinde şeffaflık, gözlem ve adaptasyon yer almaktadır.
- 2001 – Agile Manifesto
Yazılım geliştirme konusunda geleneksel yöntemlerden farklı çerçeve ve metodolojiler deneyerek organizasyonlarında asi kimlikleriyle tanınmış 17 yazılım gurusu Snowbird, Utah’ da bir araya gelerek uyguladıkları çeşitli yöntemlerin ortak ve farklı yönleri hakkında tartıştılar. Birçok konuda fikir birliğine varamasalar da bugün bildiğimiz Agile zihniyetin temelini oluşturan 4 değer üzerinde mutabakata vardılar.
Agile Değerler ve Prensipler
Her şeyden önce Agile uygulamaların başarılı olabilmesi için ardında yatan zihniyetin iyice benimsenmesi gerekiyor. Bu düşünce yapısı 17 yazılım gurusu tarafından oluşturulan 4 temel değerden oluşuyor:
“Süreçler ve araçlardan ziyade bireyler ve etkileşimlere
Kapsamlı dokümantasyondan ziyade çalışan yazılıma
Sözleşme pazarlıklarından ziyade müşteri ile iş birliğine
Bir plana bağlı kalmaktan ziyade değişime karşılık vermeye
değer vermeye kanaat getirdik."
Özetle, sol taraftaki maddelerin değerini kabul etmekle birlikte, sağ taraftaki maddeleri daha değerli bulmaktayız.
Her ne kadar bahsi geçen değerler yazılım dünyası için kaleme alınmış olsalar da özellikle Agile düşünce yapısının dünya genelinde bilinirliğinin artmasıyla birlikte içerik olarak değişmese de kelime olarak güncellemeye ihtiyaç duyulduğunu ve çalışan yazılım olarak ele alınan kavramın çalışan ürün/hizmet parçacığı olarak değişime uğradığını söylemek mümkündür.
Snowbird, Utah’taki buluşmanın ardından aylar içerisinde yukarıda bahsi geçen 4 değeri güçlendiren ve destekleyen nitelikte 12 prensip ortaya atılmış. Herkesin kolayca erişebilmesi için hem değerler hemde prensipler Ward Cunningham tarafından Agile Manifesto ve 12 temel ilke olarak AgileManifesto.org internet sitesinde yayımlanmıştır. Değerler ve prensiplerin odağında ihtiyaçlar ve gereksinimlerdeki değişimi kabullenmek ve müşterileri memnun etmek yer almaktadır.
Buna istinaden 12 temel ilkeyi şu şekilde sıralamak mümkün:
- Değişen gereksinimler yazılım sürecinin son aşamalarında bile kabul edilmelidir. Agile süreçler değişimi müşterinin rekabet avantajı için kullanır.
- Çalışan yazılım, tercihen kısa zaman aralıkları belirlenerek birkaç haftada ya da birkaç ayda bir düzenli olarak müşteriye sunulmalıdır.
- İş süreçlerinin sahipleri ve yazılımcılar proje boyunca her gün birlikte çalışmalıdırlar.
- Projelerin temelinde motive olmuş bireyler yer almalıdır. Onlara ihtiyaçları olan ortam ve destek sağlanmalı,
işi başaracakları konusunda güven duyulmalıdır. - Bir yazılım takımında bilgi alışverişinin en verimli ve etkin yöntemi yüzyüze iletişimdir.
- Çalışan yazılım ilerlemenin birincil ölçüsüdür.
- Agile 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.
- Teknik mükemmeliyet ve iyi tasarım konusundaki sürekli özen çevikliği artırır.
- Sadelik, yapılmasına gerek olmayan işlerin mümkün olduğunca arttırılması sanatı, olmazsa olmazlardandır.
- En iyi mimariler, gereksinimler ve tasarımlar kendi kendini örgütleyen takımlardan ortaya çıkar.
- Takım, düzenli aralıklarla nasıl daha etkili ve verimli olabileceğinin üzerinde düşünür ve davranışlarını buna göre ayarlar ve düzenler.
Agile prensiplerin temelinde 1950’li yıllarda Toyota tarafından dünyaca tanınmasına aracı olunan Yalın ilkelerin yattığını söylemek yanlış olmayacaktır. Agile Manifesto ’da bahsedilen değer ve prensipler sayesinde günümüzde kullanılan birçok çerçeve ve metodoloji hayatımıza girmiştir.
Agile Çerçeve ve Metodolojiler
Avustralyalı tasarımcı Lynne Cazaly’nin çiziminde de göreceğimiz üzere Agile’ın 40 farklı versiyon ile 70’den fazla değişik uygulaması ile karşılaşmak mümkündür.
Tüm bu yöntem, çerçeve, metodoloji ve uygulamalar arasında en çok öne çıkan ve günümüzde en fazla kullanılan 3 pratiği şöyle özetlemek mümkündür:
Yönlendirici Prensipler:
Scrum: Yaratıcı, çapraz fonksiyonlu takımların güçlendirilmesini önerir.
Kanban: Akışın görselleştirilmesini ve süreç içerisindeki işlerin limitlenmesini tavsiye eder.
Lean (Yalın) Geliştirme: Sistemin bütününde değer üretmeyen ve israf olarak nitelendirilen her aşamanın ortadan kaldırılmasını savunur.
Adaptasyon İçin Uygun Koşullar:
Scrum: Yüksek seviyede güven ve iş birliğine sahip yaratıcı kültürler veya çalışma ortamlarını değiştirmek isteyen radikal inovasyon takımları.
Kanban: Az sayıda ortaya konulmuş kurallar ile daha evrimsel bir gelişimi tercih eden süreç odaklı kültürler.
Lean (Yalın) Geliştirme: Önceden belirlenmiş kuralları olmayan kapsayıcı değerlere dayalı evrimsel gelişimi tercih eden süreç odaklı kültürler.
Tanımlanmış Roller:
Scrum: Müşteriler ve işletme adına yaratılan değeri -takımın üzerinde çalışması gereken işleri önceliklere göre sıralamaktan- maksimize etmekten sorumlu Product Owner, iş sürecine rehberlik eden Scrum Master, küçük ve çapraz fonksiyonel inovasyon takımları.
Kanban: -
Lean (Yalın) Geliştirme: -
Tanımlanmış Çalışma Kuralları:
Scrum: Beş etkinlikten oluşur;
Gelecek iş döngüsünün hazırlık aşaması Sprint Planlama,
Müşteriye sunulabilir ürün/hizmet parçasının yaratılabileceği istikrarlı süreli sabit zamanlı Sprint’ler (1- 4 hafta)
Gelişimi ve süreçte oluşan engelleri değerlendirmek adına her gün aynı saat ve yerde yapılan 15 dakikalık Daily Scrum’lar,
Çalışan ürün/hizmet parçacığını paydaşlarla birlikte gözlemleyip kısa döngüler içerisinde geri bildirim almayı sağlayan Sprint Review’ler,
Takım kendisini, çalışma koşullarını, kullandığı araçlar, süreçler ve gereçleri gözlemleyip geliştirmesini sağlayan Sprint Retrospektif’ler,
Üç çıktı (veya "eser"):
Yaşayan, önceliklere göre sıralanmış Product Backlog,
Gelecek Sprint içerisinde tamamlanmak üzere Product Backlog’tan takım tarafından seçilerek oluşturulan Sprint Backlog
Çalışan ve müşteriye teslim edilebilir ürün/hizmet parçacığı
Kanban: Ne yapıyorsan onunla başla!
İş akışı ve takip edilen aşamaları görselleştir.
Akış içerisindeki her geliştirme/üretim aşamasındaki iş sayısını limitle.
İş üzerinde çalışılmaya başlandığı andan işin talep sahibine teslim edildiği ana kadar olan süreci ölç ve iyileştir.
Lean (Yalın) Geliştirme: -
Kültürel Değişime Yaklaşım:
Scrum: Organizasyonun geri kalanından uygulamalardan önemli ölçüde farklı olsalar bile minimum düzeyde tanımlanmış uygulamalara hızlıca adapte olun, tanımlanmış uygulamalarda ustalaşın ve denemeler aracılığıyla bu uygulamaları uyarlayın.
Kanban: Var olan yapı ve süreçlere saygı gösterin, iş akışlarında görünürlüğü arttırın, kademeli ve iş birliğine dayalı değişiklikleri teşvik edin.
Lean (Yalın) Geliştirme: Var olan yapı ve süreçlere saygı gösterin, organizasyon genelinde Agile değerleri ön plana çıkarıp vurgulayarak organizasyonel direnci azaltın.
Avantajları:
Scrum: Ana organizasyonun bir parçası olarak faaliyet göstermenin faydaları korunurken (*Skunkworks’ün tersine) radikal iyileştirmeler yapılmasını kolaylaştırır, en değerli yeniliklerin en erken sürede teslim edilmesini sağlar, takım mutluluğunu hızla arttırır, genel yönetim yetkinliklerini geliştirir.
* Skunkworks, teknoloji, işletme ve havacılık mühendisliğinde bazen çok gizli olan (siyah projeler gibi) gelişmiş geliştirme projelerini ifade eder.
Kanban: Ana organizasyonun kültürüyle oluşabilecek çatışmalardan kaçınır, esnek takım yapıları ve çalışma döngüleri sayesinde takım üyelerinin katkısının en üst düzeye çıkmasını sağlar, esnek iş yapma döngüleri aracılığıyla ortaya çıkabilecek acil sorunlara hızla cevap verilmesini kolaylaştırır.
Lean (Yalın) Geliştirme: Sistemi uçtan uca optimize eder ve bütün organizasyonun söz konusu sistemle uyumlu çalışmasını sağlar, iş yapış pratiklerinin ihtiyaca göre şekillenebilmesi için yüksek düzeyde esneklik sağlar.
Zorluklar:
Scrum: Liderler inisiyatifleri / girişimleri önceliklendirmek konusunda sıkıntılar yaşayabilir ve kontrolü kendi kendini yöneten takımlara bırakmak konusunda istekli olmayabilirler. Onlarca veya yüzlerce multi-disipliner takımın koordine edilebilmesi için yeni matris yönetimi becerileri elde etmek gerekecektir. Bazı -özellikle günlük olarak ortaya çıkabilecek- problemlerin çözümü noktasında sabit iterasyon süreleri uygun olmayabilir. Belirli Sprint döngüleri içinde takım üyelerinin bazılarından yeterince faydalanılamayabilir.
Kanban: Pratik eden kişilerin Agile değer ve prensiplerin çoğunu kendi uygulamaları içerisine nasıl dahil etmeleri gerektiğine dair yöntemleri kendilerinin keşfetmesi gerekecektir. Organizasyon içerisinde içeriğe bağlı olarak yapılandırılmış farklı ve çeşitli uygulamalar, inisiyatif/girişimlerin önceliklendirilmesini ve takımlar arasında hizalanmayı zorlaştırabilir. İnisiyatifler/girişimler başarısız olduğunda takımların yanlış araçları mı seçtiğini yoksa doğru araçları yanlış şekillerde kullanmaları dolayısıyla mı problem yaşandığını tespit etmek zor olacaktır.
Lean (Yalın) Geliştirme: Organizasyona yeni katılan ve organizasyonun bu yeni kültürüne göre davranışlarını adapte etmeye çalışan kişiler, tanımlanmış metodolojilerin eksikliğini sinir bozucu bulabilirler. Evrimsel iyileşme anlayışı radikal gelişim adımlarını daha az olası ve büyük gelişmeleri daha az hızlı hale getirebilir. Liderler organizasyon içerisinde sürekli olarak israfa neden olan aktivelerin ortadan kaldırılmasının bir süre sonra verebileceği neden olabileceği sıkıcılığı ilham verici ve eğlenceli bir yolculuğu çevirmekle sorumlu hale gelecektir.
Belirli Sprint döngüleri içinde takım üyelerinin bazılarından yeterince faydalanılamayabilir.
Yukarıda karşılaştırması yapılan bu yöntemler arasında dünya çapında en çok kullanılan ve öne çıkan Scrum çerçevesidir. Scrum, temelinde basit bir yöntem olmakla birlikte, the Matrix film serisinin ilk filminde Neo karakterinin seçilmiş kişi olduğuna kendisinin inanması ve bu yolda seçilmiş kişi olarak ustalaşması yolculuğuna benzer bir şekilde Scrum’da da ustalaşmak pratikleri uygulamak, değerleri benimseyerek davranış ve zihniyetin değişmesini sağlama sürecini içermektedir.
Scrum çerçevesinin uygulaması esnasında organizasyonun faaliyet alanları içerisinde tespit edilen bir fırsatın hayata geçirilebilmesi için küçük (genellikle 10 kişiden az takım üyesinin olduğu) ve yetkilendirilmiş bir takım kurularak süreç başlatılmaktadır. Kurulan takımın söz konusu fırsatın hayata geçirilmesi için kurulan takıma tam zamanlı olarak dahil edilmiş olması ve takım üyelerinin söz konusu ürün ya da hizmetin üretiminde uçtan uca tüm sürece hâkim yetkinlikteki takım üyelerine sahip olması esastır. Takım kendi kendini yönetmek ve tüm yönleriyle işin ortaya çıkması konusunda hesap verebilir şekilde tasarlanmalıdır.
Agile’ın Hayatımıza Kattığı Pozitif Davranış Değişiklikleri:
- Yapılan hatalar ya da edilen başarısız sonuçların birer öğrenme fırsatı olarak görülmesi,
- Değişimi kabullenerek adapte olabilme yetkinliklerimizin değişime yanıt verebilecek doğrultuda iyileştirilmesi,
- Değer yaratmayan aktivite veya görevlerin ortadan kaldırılmasıyla üretkenliğin arttırılması,
- İş yapış şekillerinin ve süreçlerinin sürekli olarak iyileştirilmesi,
- Varsayımlara dayalı karar alma mekanizmasından veriye dayalı karar verme sistemine geçiş,
- Önceliklerin piyasa koşullarına ve müşteri ihtiyaçlarına göre değişip şekillendirilebilmesi,
- Yaratılan şeffaflık ile herhangi bir ürün/hizmet geliştirme sürecine tüm partilerin dahiliyetinin sağlanması,
- Kalite algısının üretim/geliştirme sürecinin her aşamasına sirayet etmesi ile nihai ürün/hizmetin kalitesinin artması,
- Planlamanın sürekli bir aktive haline gelmesi
Agile felsefenin hayatımıza ve iş yapış şekillerine eklediği belli başlı pozitif davranış değişiklikleri olarak gösterilebilir.
Yaygın Olarak Yapılan Agile Yanlışlar:
- Yeni öğrenimler elde edildikçe ve yeni bilgiler ortaya çıktıkça bunlara uyum sağlamamak,
- Paydaşlarla aynı sayfada olmamak/olamamak,
- Oluşturulan Agile takımlara fikir üretme ve iş üretme konularında güven duymamak,
- Delegasyon yerine mikro yönetim ilkelerine bağlı kalmak,
- Herkes tarafından aynı seviyede anlaşılan net bir vizyon ve hedeflere sahip olmamak,
- Müşteri ihtiyaçları ve ürün/hizmetin kendisi yerine kullanılan süreç ve araçlara aşırı derecede odaklanmak,
- Müşteri geri bildirimlerini göz ardı etmek,
- Agile Manifesto ’da kapsamlı dokümantasyon ile ilgili maddeyi öne sürerek herhangi bir dokümantasyon yapmamak,
- İş yapış şekillerinin değişimi ile kültürel yapıda yapılması gerekli hale gelen iyileştirmelere direnç göstermek
Yukarıda yer alan bu hatalı uygulamaları en çok karşılaşılan yanlışlar olarak adreslemek mümkündür.
Özetle, kompleks problemler ve sıklıkla değişen müşteri tercihleri sebebiyle çözüm önerilerimizi değiştirmek zorunda kalıyor, uçtan uca sürece hakim ve farklı yetkinlikteki çalışma arkadaşlarımızın iş birliği içerisinde bir takım çatısı altında çalışmasına ihtiyaç duyuyor ve müşterilerimizden aldığımız geri bildirimler ile yenilikçi fikirlerimizi katma değer katarak üretme imkanına sahip olabileceğimizi gözlemliyor isek belki de sizin için de Agile düşünce yapısını benimseme ve pratikleri uygulama zamanı gelmiştir. Ne dersiniz?
Kaynakça
https://hbr.org/2016/04/the-secret-history-of-agile-innovation
https://www.excella.com/insights/agile-ancestry-a-mindset-for-solution-development-and-beyond
https://www.agilealliance.org/agile101/
https://hbr.org/2016/05/embracing-agile
https://www.forbes.com/sites/stevedenning/2016/09/08/explaining-agile/?sh=17672d36301b
https://www.dau.edu/cop/it/DAU%20Sponsored%20Documents/Agile%20101%20v1.0.pdf
Yorumlar