Şirketlerin iş yapış biçimleri tamamen kendilerine özgü olarak zamanla şekillenir. Öyle ki aynı şirket içerisindeki farklı departmanlar bile birbirinden oldukça farklılaşabilir. İhtiyaçlar ve beklentilere bağlı olarak oluşan bu farklılığa rağmen uzun yıllardır kullanılan metodolojiler ve yaklaşımlar en verimli çalışma biçiminin geliştirilmesinde temel dayanak olarak kullanılır. Agile ve Scrum ise yazılım ve proje geliştirme süreçlerinin ele alınmasında faydalanılan günümüzün en popüler süreç yönetim yaklaşımlarıdır.
İş hayatında daha önce bir ekiple birlikte yazılım ya da proje geliştirdiyseniz Agile ve Scrum kavramları sizin için yabancı olmayabilir. Son 20 yılda şirketlerin büyük bir bölümü tarafından benimsenen Agile ve Scrum yaklaşımlarının üretim süreçlerini verimli hale getirmedeki başarısı defalarca ortaya konmuştur. Gelin, Agile ve Scrum yaklaşımlarını farklı yönleriyle ele alalım.
Agile ve Scrum Nedir? Nasıl Çalışırlar?
Agile ve Scrum kavramları aktif olarak kullanılsa da birçok kişi tarafından anlamları ve amaçları konusunda kafa karışıklığı yaşandığı görülebilir. Çoğu zaman birbirine karıştırılan Agile ve Scrum, birbirleri ile yakından ilişkili iki ayrı kavramdır. Öncelikle Agile nedir? sorusuna yanıt vermek gerekirse proje yönetimine yönelik bir düşünce biçimi olduğu söylenebilir. Scrum nedir? sorusunun yanıtı ise çok daha nettir. Scrum, Agile ile ortaya konulan düşünce biçiminin en etkili biçimde uygulanmasını sağlayan bir yöntemdir.
Agile, hızlı karar almayı destekleyen ürün geliştirme yaklaşımıdır. 2000’li yılların başında yazılım geliştirme süreçlerine dair bir düşünce biçimi olarak ortaya atılmış olsa da bugün pazarlamadan eğitime kadar farklı alanlarda proje geliştirme için kullanılan metodolojilerden biridir. Temel değerleri Agile Manifesto ile belirlenmiş olan Agile yaklaşımı işbirliği, hızlı karar alma ve sürekli iyileştirmeye odaklanır. Agile gerçekleştirilen projenin, küçük parçalara bölünerek belirlenen sürelerde tamamlanmasını hedefler. Bu sırada müşteri ve ekip arasındaki iletişimin de düzenli olarak sağlanmasını amaçlar. Ekipler proje sürecinde söz sahibidir ve gerekli görüldüğünde planlarda değişikliğe gidilebilir.
Scrum ise düşünce biçimini belirleyen Agile’ın belirlediği yaklaşımı uygulamaya geçirmek adına geliştirilen bir çerçevedir. Bu çerçeve, uygun koşulların sağlandığı farklı ölçekteki projelerin yönetiminde faydalanılan en efektif araçlardan biridir. Scrum, Agile’ın çalışma prensiplerini uygulanabilir somut adımlara dönüştüren bir çerçevedir. Proje, sprintler olarak adlandırılan zaman dilimlerine bölünür. Her sprintte hedef planlama, günlük kısa toplantılar, tamamlanmış işin değerlendirilmesi ve ekip içi değerlendirme gibi süreçler yer alır.
Agile Metodolojisinin Temel İlkeleri Nelerdir?
1990’lı yıllarda yazılım geliştirme süreci, birçok yönüyle detaylı bir proje yönetim meselesi haline gelmiştir. En ideal geliştirme metodolojisinin hangisi olduğu ise gündemi oldukça meşgul eden bir konuydu. Bu yıllarda şelale modeli oldukça popüler olsa da artık yetersiz kaldığı konusunda hemen hemen herkes hemfikirdi. Takvimler 2001 yılının Şubat ayını gösterdiğinde ise yazılım geliştirme sektörünün öncü isimleri bir araya gelerek Agile Manifestosu’nu yayınladı. Bu manifestoda Agile’ın felsefesini oluşturan 4 temel değer ve bunları destekleyen 12 ilke alır. Söz konusu bu değer ve ilkeler ise bugün hala geçerliliğini korumaktadır. Agile metodolojisi şu 4 temel değer üzerine kurulmuştur:
- Bireyler arasındaki iletişim, yürütülen süreç ve kullanılan araçlardan daha önemlidir.
- Ortaya çıkan yazılımın çalışıyor olması, hazırlanan dökümantasyondan önce gelir.
- Müşteri ile işbirliği içerisinde çalışma, sözleşme pazarlığından üstündür.
- Bir planı takip etmektense gerektiğinde değişimi yapabilmek daha değerlidir.
Bu 4 temel değer, Agile felsefesinin hedeflerini belirleme konusunda bir özet niteliği taşır. Manifestoda yer verilen 12 ilke ise bu temel değerleri destekler niteliktedir. Agile metodolojisinin 12 temel ilkesi şunlardır:
- Erken ve sürekli teslimatlar yoluyla müşteri memnuniyeti sağlanmalıdır.
- Değişen ihtiyaçlar projenin her aşamasında kabul edilmeli ve rekabet avantajı sağladığı göz önünde bulundurulmalıdır.
- Çalışan yazılım, geliştirme sürecindeki ilerlemenin en iyi göstergesidir.
- Birkaç hafta veya ay gibi kısa aralıklarla yazılım teslimatı yapılmalıdır.
- Ekiplerin motivasyonunu yüksek tutmak, proje sürecinin başarısında temelini oluşturur.
- Sabit bir çalışma temposu belirlenerek sürdürülebilir geliştirme gerçekleştirilmelidir.
- Proje üzerindeki tüm paydaşlar günlük toplantılarla süreci değerlendirmelidir.
- Etkili bilgi aktarımı için yüz yüze iletişim öncelikli yöntem olmalıdır.
- Teknik mükemmeliyet ve iyi tasarım çevikliği destekleyen temel unsurlardır.
- Yalnızca değer yaratan işe odaklanmak ve gereksiz işten kaçınmak yani kısacası basitlik esastır.
- Ekiplerin kendi kendilerini yönetmelerine izin verilmesi en iyi yöntemdir.
- Sürekli iyileştirme adına ekipler, düzenli olarak bir araya gelerek nasıl daha etkili çalışabileceklerini değerlendirmelidir.
Agile Yöntemlerinde Kullanılan Araçlar Nelerdir?
Agile yöntemlerinin kolay ve etkili şekilde uygulanabilmesi için birçok farklı araçtan destek alınabilir. Sıklıkla kullanılan Agile araçları proje yönetimi, iletişim, versiyon kontrol, performans takibi ve test araçları olarak farklı başlıklar altında gruplandırılabilir.
Proje Yönetimi Araçları
Scrum sprintlerini planlamak, ekip iş yükünü görünür kılmak ve proje sürecinin ilerlemesini takip etmek amacıyla kullanılan kapsamlı çözümlerdir. Jira, Asana, ClickUp en popüler proje yönetimi araçlarına örnek olarak gösterilebilir.
İşbirliği ve İletişim Araçları
Agile’ın temel prensiplerinden olan bireyler arası iletişimi sağlamak adına işbirliği ve iletişim araçlarından destek alınır. Yüz yüze iletişim her ne kadar daha etkili olsa da günümüz şartlarında dijital teknolojilerle de etkili iletişim kurmak mümkündür. Microsoft Teams, Slack ve Discord kullanılan bu türden araçların en popülerleridir.
Versiyon Kontrol Araçları
Versiyon kontrol araçları, bir proje üzerinde birçok geliştiricinin aynı anda çalışmasını mümkün hale getirir. Bu da yazılımcılar ve ekipler arasında işbirliğini daha verimli hale getirir. Versiyon kontrol araçlarına örnek olarak GitHub, Bitbucket ve GitLab sayılabilir.
Zaman Yönetimi ve Performans Takibi Araçları
Zaman yönetimi çalışanlar için önemli olduğu kadar projenin ilerleyişini tespit edebilme konusunda önemlidir. Verimliliğin ölçülmesi, performans takibinin yapılması ve ilerlemenin veriye dayalı bir şekilde ortaya konması için bu türden araçlardan destek alınır. Birçok proje yönetim çözümü bu amaçla kullanılabilecek özelleştirilmiş modüllere sahiptir.
Test ve Kalite Kontrol Araçları
Geliştirilen ürünün kalitesini izlemek, hataları tespit etmek ve düzeltmek son derece önemlidir. Bu işlemler için otomatik test sistemleri ve özel olarak geliştirilmiş araçlardan yoğun bir şekilde faydalanılır. TestRail, Selenium ve SonarQube en yaygın kullanıma sahip örneklerdir.
Scrum Metodolojisi Nasıl Çalışır?
Scrum metodolojisi uygulamalarında birçok farklı terimle karşılaşabilirsiniz. Çeşitli roller, etkinlikler ve çıktılar (artefaktlar) mevcuttur. Scrum nedir, nasıl uygulanır sorularına daha anlaşılır yanıtlar elde edebilmek adına öncelikle bu bileşenleri tanımak gerekir.
Scrum’ı uygulamaya geçerken öncelikle projeye dahil olan rollerin belirlenmesi gerekir. Product owner, Scrum master ve geliştirme ekibinin dahil olduğu projelerde product owner (ürün sahibi) bir bakıma müşterinin yerine geçer ve backlog takibini yapar. Scrum master ise geliştirme ekibinin belirlenen planları doğru bir şekilde gerçekleştirdiğinden emin olur. Bu rollerin yanı sıra time-boxed yapıya sahip Scrum’da sürecin değerlendirilmesi adına çeşitli toplantı ve değerlendirmeleri içeren toplantılar gerçekleştirilir. Sprint planlama aşamasında, yapılacak işler belirlenir ve ekiplere dağıtılır. Gerçekleştirilen günlük kısa toplantılar ile neler yapıldığı ve yapılacağı ele alınarak proje ilerleyişi değerlendirilir. Sprint sonunda gerçekleştirilen değerlendirmeler ile ekiplerin kendilerini daha iyiye taşıma adına gerçekleştirdiği toplantılarda Scrum metodolojisinin gerekliliklerindendir. İş istekleri product backlog (ürün iş listesi) ile takip edilirken sprint süresince gerçekleştirilecek işleri belirten sprint backlog’da bir araya getirilir. Sprint sonunda hazır hale getirilen çıktı ürün parçası ya da increment olarak adlandırılır.
Scrum metodolojisinin çalışması, tüm bu bileşenlerin dahil olduğu sprint döngülerinden meydana gelir. Bir sprint döngüsü ise şu şekilde işler:
- Proje sürecine dair planlamanın ardından sprint başlatılır.
- Günlük kısa toplantılar (daily scrum) ile ilerleme takibi yapılır.
- Sprint sonunda teslim edilebilecek ürün parçası ortaya çıkar.
- Sprint süreci, ekiplerin çalışması ve ürün hakkında değerlendirmeler yapılır.
- Değerlendirmeler neticesinde iyileştirme adına çeşitli adımlar atılabilir.
- Yeni bir sprint başlatılarak proje geliştirme sürecine devam edilir.
Product Backlog
↓
Sprint Planning
↓
Sprint Backlog
↓
Sprint (2-4 hafta boyunca tekrar eden döngü)
├── Günlük: Daily Scrum
└── Geliştirme: Development Tasks
↓
Sprint Review
↓
Sprint Retrospective
↓
Potentially Shippable Product
↺ Döngü yeni Sprint ile tekrar başlar
Agile ve Scrum Arasındaki Temel Farklar Nelerdir?
Agile’ın bir düşünce biçimi yani felsefe, Scrum’ın ise bu düşünce yapısını uygulamaya geçirmede kullanılan bir metedolojidir. Bu açıklama çoğu zaman Scrum ve Agile farkı hakkındaki soruları gidermek için yeterli olsa da iki kavram arasındaki fark çok daha detaylı bir şekilde ele alınabilir. Agile ve farkı şu maddeler ise özetlenebilir:
- Agile önceden belirlenmiş ilkeler üzerine kurulu bir felsefedir. Agile’ı uygulamaya geçmek için Scrum, Kanban ve Lean gibi farklı yöntem ve çerçeveler kullanılabilir. Scrum ise Agile’ı uygulama konusunda etkili bir çerçevedir. Belirli roller, süreçler ve çıktılar ile proje geliştirme sürecini şekillendirir.
- Agile farklı ölçekteki ekipler için yol gösterici rehber olarak görev alabilir ve herhangi belirlenmiş roller bulunmaz. Scrum ise Product Owner, Scrum Master ve geliştirme ekibi olmak üzere en az 3 tarafın yer almasını gerektirir.
- Agile çok daha esnek bir yönetim yaklaşımıdır. Scrum ise Agile’a göre daha yapılandırılmış ve sınırları belirlenmiş süreçlerden oluşur.
- Agile söz konusu olduğunda proje boyunca sürekli olarak düzenlemeler yapmak mümkündür. Scrum tarafında ise 1 ila 4 hafta arasında değişen uzunluklarda sprintlerin ardından değerlendirme ve iyileştirmeye odaklanılır.
Alternatif Agile Framework’leri
Scrum, Agile yaklaşımının en iyi şekilde uygulanabildiği ve yaygın olarak kullanılan framework olarak öne çıkar. Hatta bu iki kavram çoğunlukla beraber anılır. Ancak Agile metodolojisinin temel ilkelerini uygulayan Kanban, Lean Development, Extreme Programming (XP), Feature Driven Development (FDD) ve SAFe (Scaled Agile Framework) gibi farklı odak noktalarına sahip çeşitli topluluk ve ekipler tarafından geliştirilen onlarca farklı Agile framework’ü bulunur. Kanban, XP ve Lean framework’leri ise bu alternatifler içerisinde en yaygın kullanıma sahip olanlardır.
Kanban, en az Scrum kadar olmasa da oldukça yaygın bir şekilde kullanılmaktadır. Scrum ile karşılaştırıldığında Kanban’ın çok daha esnek bir yapı sunduğu söylenebilir. Rol, yapı ve seremonilere dair net tanımlamalar içermeyen Kanban, ekiplerin iş yapış biçimleri ve ihtiyaçları doğrultusunda şekillendirilebilir.
Lean Software Development (LSD) veya yaygın kullanımıyla Lean ise Agile ilkeleri ile uyumlu işleyişe sahip bir diğer alternatiftir. Lean, sürekli iyileştirmeye, daha yalın ve etkili süreçlerin oluşturulmasına odaklanır.
Extreme Programming (XP) ise ağırlıklı olarak teknik yönü kuvvetli ekipler tarafından tercih edilir. Geliştirilen yazılımın kalitesini artırmayı öncelikli olarak ele alan XP, pair programming, sürekli entegrasyon ve TDD (Test Driven Development) gibi uygulamalardan destek alır.
Proje yönetiminde BT teknolojilerinin etkin kullanımı son derece önemlidir. Projelerin başarıyla hayata geçirilmesinde işin ihtiyaçlarına uygun bir yönetim süreci ile zaman ve maliyet dengesi korunarak istenen sonucu ulaşılır. Proje yönetimi hizmetleri kapsamında Eczacıbaşı Bilişim, sahip olduğu tecrübe ve deneyimli ekibi ile proje yönetimini üstlenerek başarılı bir şekilde teslim edilmesini sağlar.
Kaynaklar:
https://alicambaz.medium.com/%C3%A7evi%CC%87k-agile-mani%CC%87festo-ve-prensi%CC%87pler-fdb788b3afd3
https://niftypm.com/blog/manage-sprint-cycle/
https://twproject.com/blog/scrum-vs-agile-which-framework-is-best-for-your-needs/
https://miro.com/agile/scrum-vs-agile-methodology/
https://www.techtarget.com/searchsoftwarequality/definition/Scrum
https://www.techtarget.com/searchsoftwarequality/video/Agile-vs-Scrum-How-to-choose-between-them