NTT DATA Business Solutions
Özge Estekin | Ocak 22, 2021

Agile: Çağımızın Proje Yönetimi Metodolojisi

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 çıkar.  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.

Agile Nedir?

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 proje yönetimi metodolojilerinden biridir. Kelime anlamı Türkçede çevik olan Agile kelimesinin kökeni, İngilizcede çeviklik anlamına gelen Agility kelimesidir. Agility/çeviklik, değişen koşullara hızlı ve kolay cevap verme kabiliyeti demektir.

Nasıl doğdu?

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 çıkar.  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.

Nasıl gerçekleştirilir?

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 vermeye dayanır. Bu bağlamda, Agile Proje Yönetimi metodolojilerinin her birinde, belli aralıklarla (minimum iki haftada bir) baştan sona tekrarlayan bir döngü vardır.

Ana projeyi, bir nevi alt projeciklere 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önetimi yönteminden farklı kılan nedir?

Waterfall (Şelale) ve Agile Karşılaştırması

Waterfall (Şelale) proje yönetimi yöntemi geleneksel proje yönetimi yöntemidir. Fazları sırasıyla:

  1. Gereklilikler: Projenin başında detaylı bir proje planı yapılarak ihtiyaçların ve ekipteki rollerin belirlenmesi ile başlar.
  2. Tasarım: Fonksiyonel kavramsal tasarım 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.
  3. Uygulama: Bu aşamada müşteri yer almaz; yazılım ekibi kavramsal tasarımda onaylanmış süreci hayata geçirir.
  4. Test: Müşterinin sistemi ilk kez gördüğü aşamadır. Bu aşamada müşteri sistem hem son kullanıcı gözünden hem de bir admin kullanıcı gözünden tanımaya ve test etmeye başlar.
  5. Canlı Geçişi: Canlı sistemde kullanıma geçilir.

Agile proje yönetimi metodolojilerinde, Waterfall(Şelale) yönteminde sıraladığımız beş adım, müşteri ile birlikte fiziksel olarak da aynı çalışma ortamında çalıştığımız ve herkesin 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.

Örnek: “Araba” Yapımı

Müşterinin ihtiyacının bir araba olduğunu varsayalım. Müşteriye sorulacak soru:

İ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): 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. Projenin son aşamasında büyük bir değer yaratılmış olacaktır.

 

 

Agile (Çevik): 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şlanır.

Birkaç hafta sonra elimizde çalışan bir kaykayımız var. Bir sonraki etapta kaykayın görünür olması için bir bayrak ekleniyor (Minimum düzeyde bir UI 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ış oluyoruz. Projenin en başından itibaren değer katılmaya başlanarak, projenin her aşamasında bir değer olacaktır.

Agile Proje Yönetimi Değerleri

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: Müşterinin, tüm süreçler içerisinde yer alması istenir. Müşteri-danışman rolleri eriyerek, bir ekip dayanışması ile el ele ilerlenir. Bu bağlamda, müşterinin fiziksel olarak da, çalışma ortamında bulunması beklenir.
  • Bir planı takip etmek yerine değişime cevap vermek: Günümüzün çok hızlı değişen koşullarına hızlı cevap verebilmek, hem bireyler hem de tüzel kişilikler için bugünün en kıymetli kabiliyetlerinden. 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ılar.
  • Süreçler ve araçlardan ziyade bireysel etkileşimler: Süreçler ve araçlar 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.

Önde Gelen Metodolojileri – Scrum ve Kanban

Scrum Nedir?

İngilizcede, rugby oyununda oluşturulan küçük ekiplere verilen isimdir.

Özellikleri

  • Gereksinimleri bellidir.
  • Değişime açıktır.
  • Bütünü parçalamaya dayaldır.
  • Tekrara dayalıdır.
  • Genellikle karmaşık yazılım projelerinin yönetiminde kullanılır.

Değerleri

  • Cesaret (Courage): Ekip üyeleri doğru aksiyonu almaya ve zorlu problemlerle başa çıkmaya cesaretlidir.
  • Odak (Focus): Ekip üyeleri, Sprint’te hedeflenen noktaya ve ekibin hedeflerine odaklanır.
  • Taahhüt (Commitment): Ekipçe hedeflenen noktaya ulaşmayı herkes kişisel olarak taahhüt eder.
  • Saygı (Respect): Ekip üyeleri yeteneklerini kullanabilmek ve bağımsız hareket edebilmek için birbirlerine saygılıdır.
  • Açıklık (Openness): 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 hemfikirdir.

Prensipleri

  1. Çalışan yazılımların erken ve sürekli teslimi yoluyla müşteri memnuniyetinin sağlanması
  2. Geliştirmenin sonlarında bile olsa, değişen gereksinimlerin memnuniyetle karşılanması
  3. Sık aralıklar(bu aralıklara sprint denir) ile (ideali iki ila 4 hafta arası) çalışan bir yazılımın müşteriye sunulması
  4. 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ı
  5. İş 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ı
  6. 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.)
  7. Maksimum verim için bilgi alışverişlerinin yüzyüze iletişim yoluyla sağlanması
  8. 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ı
  9. Sürdürülebilir geliştirmenin, proje sponsorları ve kullanıcıların sabit bir hızda çalışmaya devam etmeleri ile sağlanması
  10. Sağlam bir mimari ve süreç tasarımına özen gösterilmesi
  11. 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
  12. “En iyi mimariler, gereksinimler ve tasarımlar, kendi kendini organize edebilen ekipler ile ortaya çıkar.”

Neden Scrum?

  • 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ırır.
  • Bütün ekibin, 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.

Scrum hangi koşullarda tercih edilmelidir?

  • Gereksinimlerin hızla değiştiği projelerde kullanılır.
  • Kendi kendini organize eden, işlevler arası bir ekip prensibi üzerine çalışır.
  • Scrum çerçevesi genellikle koşulların hızlı bir şekilde değişebileceği ya da çoğu zaman projenin başlangıcında farkında olunmayan durumlarla ilgilenir.
  • Scrum’da, düşük öncelikli gereksinimler projenin başında tanımlanır. Ürünün değişiklikleri, optimizasyonları, gereksinimleri ve süreçleri projenin ayrılmaz bir parçasıdır.

 

 

Kanban Nedir?

Yapılacak işleri yönetmek için kullanılan görsel bir sistemdir. Hem süreci hem de bu süreçten geçen somut işleri görselleştirir. Kanban’ı uygulamanın temel amacı, süreçteki potansiyel darboğazları tanımlamak ve düzeltmektir. Kanban’ın amacı iş akışının en uygun hızda sorunsuz bir şekilde ilerlemesidir.

Neden Kanban?

Kanban metodolojisi minimum direnç/engel ile karşılamak için tasarlanmıştır. Böylece mevcut süreçte sürekli küçük artımlı ve evrimsel değişikliklere izin verir. Aynı zamanda üretim, teslim süresi ve kalite ile ilgili iyileştirmeler elde etmeye yardımcı olur.

Kanban hangi koşullarda tercih edilmelidir?

  • Kanban panoları yazılım geliştirme proje çalışmalarının görsel yönetimini sağlar. Bu, ekip üyelerinin devam eden çalışmaları daha somut görmelerine yardımcı olur. Ayrıca bu sistem, task’ları zamanında tamamlayabilmek adına, süreçleri (karmaşık bilgiler gibi) ve risklerini anlamalarını kolaylaştırır.
  • Kanban panoları, proje yöneticilerinin ve ekibin, proje süresince hissettikleri iş yükü stresini azaltırken, ekip üyelerinin de daha üretken olmalarına yardımcı olur.
  • Kanban yöntemi, eğer takımın halihazırda iyi çalışan ancak optimizasyona ihtiyacı olan bir süreci varsa çok efektif olacaktır. Kanban süreci, daha önce denenmiş ve test edilmiş tüm süreçleri peyderpey geliştirmeyi mümkün kılar.

 

Kurumsal kaynak planlamasında kullanılan sistemlerde bulut üzerindeki çözümlere geçiş son dönemlerde oldukça yaygın. Agile proje yönetimi, bir İnsan Kaynakları çözümü olan SAP SuccessFactors gibi bulut üzerindeki çözümlerde gerçekleştirilen projelerde oldukça başarılı olduğunu kendi tecrübelerime dayanarak söyleyebilirim. Bulut çözümlerinden SAP SuccessFactors için önerilen SAP Activate proje yönetimi de, Agile metodolojisi kılavuz alınarak geliştirilmiştir.

Sonuçta, her proje kendi özgün koşulları ile ele alınarak değerlendirilmelidir ve bu koşullara uygun bir proje yönetimi metodolojisi seçilmelidir.

Daha fazla bilgi için bize [email protected] adresinden ulaşabilirsiniz.

 

Agile metodolojiyi ele aldığımız itelli.vision videomuzu izleyin:

 

 

 

 

Car vector created by upklyak – www.freepik.com