Busra Sargili
Fiba Tech Lab
Published in
5 min readJul 18, 2022

--

Agile Nedir, Agile Proje Yönetimi Değerleri Nelerdir?

Ben Büşra Sargılı. Fibabanka Proje ve Portföy Yönetimi Ofisinde Portföy yöneticisi olarak çalışıyorum. Yazımda Agile nedir? Agile proje yönetimi değerleri nelerdir? Waterfall (Şelale) yöntemi ve Agile yöntem karşılaştırılması konularından bahsedeceğim.

Öncelikle Agile nedir? ile başlayalım.

Son yıllarda özellikle yazılım dünyasında sıkça karşılaştığımız bir terim olan Agile (Çevik), proje yönetimlerinde giderek yaygınlaşan metodolojilerden biridir.

Agile, belirsiz bir ortamda dahi başarılı olabilmek için değişime karşılık verebilme ve geliştirme yapabilme esnekliği, kapasitesi ve yeteneğidir.

Bu metodoloji yazılım dünyasında önde gelen bir grup mühendisin, müşterilerinde gerçekleştirdiği çeşitli yazılım projelerinin başarısızlıkla sonuçlanması üzerine, ekibin bir çözüm arayışına girmesi ve Agile Proje Yönetimini geliştirmeleri ile ortaya çıkmıştır. Bu yöntem, ilk etapta “Agile/Çevik Yazılım Projeleri Yönetimi” olarak ortaya çıksa da, zamanla yazılım dışındaki sektörlerdeki projelerin yönetimlerinde de uygulanarak, proje yönetimi metodolojileri arasında “Agile Proje Yönetimi” olarak yerini almıştır.

Tek bir cümleye sığdıramayacağımız dört farklı değeri, farklı metodolojileri ve bu metodolojilerin prensiplerinden oluşan, kapsayıcı bir çerçevedir. Agile Proje Yönetimi manifestosu ve prensiplerinin temelde hizmet ettiği ilke, değişen koşullara hızlı ve kolay cevap verebilmeye dayanır. Agile Proje Yönetimi metodolojilerinin her birinde, belli aralıklarla (minimum iki haftada bir) baştan sona tekrarlayan bir döngü bulunur.

Ana projeyi, bir nevi alt proje parçalarına bölerek, elimizde her zaman çalışan minimum özellikli bir yazılım olmasını sağlayan bu döngüyü, yazılım projelerinde geleneksel olarak kullanılan Waterfall (Şelale) proje yönteminden farklı kılan nedir? Gelin birazda buraları konuşalım.

Waterfall geleneksel proje yönetimidir. Projenin başında detaylı bir proje planı yapılarak ihtiyaçların ve ekipteki rollerin belirlenmesi ile başlar.

Fonksiyonel kavramsal tasarımlar yapılır. Hem müşteri hem de yazılım ekibi kelime anlamıyla da “şelale” gibi ortalama 1 sene sonra canlı sistemde kullanımına başlanacak projenin tasarımını, doğrusal olarak A’dan Z’ye bu süreçte yaparlar. Bu süreç ile ortaya bir analiz çıkar.

Uygulama aşamasında müşteri yer almaz, yazılım ekibi kavramsal tasarımda onaylanmış süreci hayata geçirir.

Test süreci müşterinin sistemi ilk kez gördüğü aşamadır. Bu aşamada müşteri sistemi hem son kullanıcı gözünden hem de bir admin kullanıcı gözünden tanımaya ve test etmeye başlar.

Doğrudan canlı sistemde kullanıma geçilir.

Agile proje yönetimi metodolojilerinde, müşteri ile birlikte fiziksel olarak da aynı çalışma ortamında çalıştığımız ve herkesin birlikte hizalı olduğu bir yapıda, birkaç haftada bir yapılan canlı geçişleri ile sürekli tekrarlanır.

Böylece, projenin başladığı süreden sonra birkaç haftadan itibaren elimizde müşterinin ihtiyaçlarına ilk etapta minimum düzeyde cevap veren, çalışan bir yazılım olur.

Örneğin: “Araba” Yapımı

Müşterinin ihtiyacının bir araba olduğunu varsayarsak, müşteriye sorulacak bazı sorular vardır;

İhtiyaç: Neden bir arabaya ihtiyacınız var?
Sebep: Bir noktadan diğerine, yürümeye oranla daha hızlı gidebilmek için.

Waterfall (Şelale) yöntemi ile ilerleyecek olursak: Bu yöntemde, araba yapımına arabanın bir parçasından başlanır ve sırasıyla en büyük parçaya kadar gidilir. Bu süreçte değişen koşullar olsa dahi, en baştaki tasarım aşamasındaki kavramsal tasarıma sadık kalınarak ilerlenecektir.

Müşteri, projenin son aşamasına kadar “Bir noktadan diğerine daha hızlı gidebilmek” ihtiyacına cevap bulamayacaktır. Ancak projenin son aşamasında büyük bir değer yaratılmış olur.

Agile (Çevik) yöntem ile ilerleyecek olursak: Bu yöntemde projeye, müşterinin arabaya ihtiyacı olmasının sebebine odaklanılarak, müşterinin bir noktadan diğerine daha hızlı gidebilmesini minimum düzeyde de olsa sağlayan, daha kısa sürede ortaya çıkarılabilecek bir kaykayın yapımı ile başlanabilir.

Birkaç hafta sonra elimizde çalışan bir kaykayımız var olur. Bir sonraki etapta kaykayın görünür olması için bir bayrak eklenir (Minimum düzeyde bir kullanıcı ara yüzü düşünülebilir.)

Akabinde bizi kaykaydan daha hızlı götürecek bir bisiklet ve sonra bir motosiklet ve nihayetinde tüm özellikleri ile ihtiyacımız olan arabayı ortaya çıkarmış oluruz.

Projenin en başından itibaren değer katılmaya başlanılarak, her aşamasında bir değer yaratılacaktır.

Gelin bir de Agile Proje Yönetimi Değerlerini konuşalım.

Agile Proje Yönetiminin 4 temel değeri vardır. Bu değerler, daha az önem verilen kısımların hiç yapılmaması anlamına gelmez.

Bu değerler;

Sözleşme müzakereleri yerine müşteri ile iş birliği. Burada müşterinin tüm süreçler içerisinde yer alması beklenir. Müşteri danışman rolleri eriyerek, bir ekip dayanışması ile el ele ilerlenir.

Hızlı değişen koşullara cevap verebilmek için bir planı takip etmek yerine değişime cevap verebilmek çok önemlidir, hem bireyler hem de tüzel kişilikler için en kıymetli kabiliyetlerden olmuştur.

Bir yazılım projesinde, yaklaşık bir sene sonra kullanılacak bir sistemin özelliklerini bugünkü ihtiyaçlarımıza göre belirlemek ve bu kapsamda değişime açık olmamak riskli olacaktır.

Kapsamlı dokümantasyondan ziyade çalışan yazılım Waterfall (Şelale) yöntemindeki gibi üzerinde mutabık kalınan tasarımın dökümantasyonu üzerinde harcanacak vakitten ziyade, t anında elimizde sürekli çalışan bir yazılım olmasını öncelikli kılmaktadır.

Süreçler ve araçlardan ziyade bireysel etkileşimler prosedürel zorunluluklar yerine bir değer yaratmak için kullanılmalıdır. Bireyler ve etkileşimlerini maksimize edecek şekilde bir planlama yapılmalı ve takım olarak konulan bu kurallara sadık kalınmalıdır.

Son olarak Agile özelinde önde gelen Scrum’dan kısaca bahsedelim.

Küçük ekiplere verilen isimdir. Scrum, projeyi küçük parçalara ayırarak yönetmeyi önerir.

Özellikleri nelerdir?

· Gereksinimleri bellidir.

· Değişime açıktır.

· Bütünü parçalamaya dayalıdır.

· Tekrara dayalıdır.

· Genellikle karmaşık yazılım projelerinin yönetiminde kullanılır.

Değerlerine göz atacak olursak;

· Ekip üyeleri doğru aksiyonu almaya ve zorlu problemlerle başa çıkmaya cesaretlidir.

· Ekip üyeleri, sprint’ te hedeflenen noktaya ve ekibin hedeflerine odaklanır.

· Ekipçe hedeflenen noktaya ulaşmayı herkes kişisel olarak taahhüt eder.

· Ekip üyeleri yeteneklerini kullanabilmek ve bağımsız hareket edebilmek için birbirlerine saygılıdır.

· Ekip üyeleri ve paydaşlar, tüm iş ve iş sürecinde gösterilen performans süresince yaşanan zorluklar hakkında açık olmakta hem fikirdir.

Prensiplerine gelecek olursak;

· Çalışan yazılımların erken ve sürekli teslimi yoluyla müşteri memnuniyetinin sağlanması hedeflenir,

· Geliştirmenin sonlarında bile olsa, değişen gereksinimlerin memnuniyetle karşılanır,

· Sık aralıklar (bu aralıklara sprint denir) ideali 2 ile 4 hafta arasındadır. Çalışan bir yazılımın müşteriye sunmak hedeflenir.

· Sprint sonlarında, ekibin nasıl daha verimli çalışabileceği üzerine değerlendirmeler yaptığı ve buna göre sonraki sprintler için davranışlarını şekillendirmeyi hedeflediği Retrospective toplantılarının yapılması beklenir,

· İş süreci sahibi (Product Owner), iş analistleri ve yazılımcıların her gün fiziksel olarak bir arada bulundukları bir ortamda çalışması,

· Ekip içi dayanışmanın, güven ve destek ortamının sağlanarak ekibin motivasyonunun ve çalışma ortamında ihtiyaç duyulan materyallerin sağlanması (Scrum Master seçilen bir ekip arkadaşı materyallerin temin edilmesinden sorumlu olabilir.)

· Maksimum verim için bilgi alışverişlerinin yüz yüze iletişim yoluyla sağlanır,

· Sprint sonlarında çalışan yazılımın müşteriye sunulması prensibi ile, ilk sprintten itibaren çalışan bir yazılımın olması,

· Sürdürülebilir geliştirmenin, proje sponsorları ve kullanıcıların sabit bir hızda çalışmaya devam etmeleri ile sağlanması,

· Sağlam bir mimari ve süreç tasarımına özen gösterilmesi,

· Müşterinin bu ürünü istemesindeki temel ihtiyaca hizmet etmeyen işlerin yapılmaması, sadelik ilkesi ile temel ihtiyaca odaklanılarak işlerin bölünmesi hedeflenir.

En iyi mimariler, gereksinimler ve tasarımlar, kendi kendini organize edebilen ekipler ile ortaya çıkar.

Avantajlarına göz atalım;

· Projenin açık ve net olması hem zaman kazandırır hem de projenin başarılı sonuçlanmasını sağlar.

· Projenin anlaşılabilir ve yönetilebilir parçalara ayrılması olası sorunları hızlı bir şekilde tespit etmekte ve düzeltmekte zaman kazandıracaktır.

· Ekibin tamamının, projenin tüm akışından haberdar olması takım içindeki iletişimi artırır.

· Müşteri ile geliştiriciler arasında güven oluşur ve böylelikle projenin başarılı sonuçlanması beklenir.

· Ekibin öngörülen koşullar değil, mevcut koşullara göre denetlenmesine ve uyum sağlamasına yardımcı olur. Bu, ekip üyelerinin sürekli değişen gereksinimlerden kaynaklanan ortak tuzakları ve kaosu ele almalarına yardımcı olur.

Toparlayacak olursam teknoloji artık hayatımızın her alanını ele geçirmiş durumda. Tek tuşla istediğimiz her şeye uygulamalar sayesinde çok kısa sürelerde ulaşabiliyoruz.

Mobil ve hareket halindeyken tüm hayatımızı telefonlarımızdan yönetebiliyoruz. Bu hızda zamanı yönetme daha da önemlisi zamanı algılama biçimimiz de değişiyor.

Çoğumuz artık istediğimiz her şeyin “hemen” olmasını istiyor ve bekliyoruz.

Bunun ile paralel olarak dinamik bir yapıya dönüşmek de şart oluyor.

Şirketler için çeviklik kavramı da bu değişimde yer alan tüm iş yapma şeklini oluşturan değerler ve prensipler olarak tekrar belirtebilirim.

Çeviklik pratikle kazanılabilen bir beceri, yaklaşım ve kültür olarak ifade edilir.

Bir sonraki yazılarımda bahsetmeyi planladığım agile süreçlerdeki roller, sorumluluklar, toplantılar gibi konularında görüşmek üzere.

--

--