Agile Nedir?

Hâle
5 min readAug 9, 2023

Bir dönem yazılım projelerinin çoğu başarısızlıkla sonuçlanıyordu. Bunun sebebi genel olarak, seçilen yanlış metotlar ve yöntemlerdi. İçlerinde Jon Kern, Kent Beck, Ward Cunningham, Arie van Bennekum ve Alistair Cockburn’unda bulunduğu 17 kişiden oluşan bir grup “düşünce liderleri” 2001 yılında bir araya gelerek uzun toplantılar yaptılar ve bunun sonucunda agile manifestosu ve 12 prensip ortaya çıktı.

Agile Manifestosunun 12 Prensibi:

  1. En önemli önceliğimiz değerli yazılımın erken ve devamlı teslimini sağlayarak müşterileri memnun etmektir. Müşteriler, sürümler arasında uzun süre beklemek yerine düzenli aralıklarla çalışan yazımı aldıklarında daha mutlu olurlar.
  2. Değişen gereksinimler yazılım sürecinin son aşamalarında bile kabul edilmelidir. Çevik süreçler değişimi müşterinin rekabet avantajı için kullanır. Bir gereksinim veya özellik talebi değiştiğinde gecikmeleri önleyebilme yeteneği.
  3. Ç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. Takım, çalışan yazılımın düzenli olarak teslim edilmesini sağlayan yazılım Sprint’leriyle çalıştığı için Scrum bu prensibi yerine getirir.
  4. İş süreçlerinin sahipleri ve yazılımcılar proje boyunca her gün birlikte çalışmalıdırlar. İş sürecinin sahibi ve teknik ekip uyumlu hale geldiğinde daha iyi kararlar alınır.
  5. 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. Mutsuz takımlara kıyasla, motive takımların en iyi işlerini teslim etme olasılığı çok daha fazladır.
  6. Bir yazılım takımında bilgi alışverişinin en verimli ve etkin yöntemi yüzyüze iletişimdir. Geliştirme takımı aynı yerde olduğunda iletişim çok daha başarılı olur.
  7. Çalışan yazılım ilerlemenin birincil ölçüsüdür. Müşteriye işlevsel bir yazılım sunmak ilerlemeyi ölçen en temel faktördür.
  8. Çevik süreçler sürdürülebilir geliştirmeyi teşvik etmektedir. Sponsorlar, yazılımcılar ve kullanıcılar sabit çalışma temposunu sürekli devam ettirebilmelidir. Takımlar, çalışan yazılımı teslim edebilecekleri tekrarlanabilir ve sürdürülebilir bir çalışma temposu oluştururlar ve bunu her sürümde tekrarlarlar.
  9. Teknik mükemmeliyet ve iyi tasarım konusundaki sürekli özen çevikliği artırır. Doğru beceriler ve iyi tasarım; ekibin hızı korumasını, ürünü sürekli iyileştirmesini ve değişimi sürdürmesini sağlar.
  10. Sadelik, işin özü olmayan işlerin yapılmamasını en üst seviye tutmak elzemdir. Şimdilik işi bitirecek kadar geliştirme.
  11. En iyi mimariler, gereksinimler ve tasarımlar kendi kendini örgütleyen takımlardan ortaya çıkar. Karar verme gücüne sahip, sahiplik alabilen, diğer takım üyeleriyle düzenli olarak iletişim kuran, yüksek kalitede ürünler sunan fikirlerini paylaşan, yetenekli ve motive takım üyeleri.
  12. Takım, düzenli aralıklarla nasıl daha üretken ve verimli olabileceğini değerlendirir ve adapte olur. Kişisel gelişim, süreç iyileştirme, gelişen beceriler ve teknikler ekip üyelerinin daha verimli çalışmasına yardımcı olur.

Agile’ın amacı sürekli değişim, artan karmaşıklık ve belirsizliğe rağmen müşteri odaklı olarak kesintisiz değer üretmektir. Müşteri takımlara daima doğrudan ya da dolaylı olarak rehberlik eder.

SCRUM Nedir?

Scrum Process

▪ Scrum, agile yazılım geliştirmede yaygın olarak kullanılan proje yönetim yaklaşımıdır.

▪ Scrum, projenin belirli bir aşaması için ayrılan ve birbirini ara verilmeksizin takip eden artımlı ve yinelemeli iş dizilimlerinden (Sprint) oluşmaktadır.

▪ Scrum içerisindeki tüm aktiviteler Sprint içerisinde gerçekleşmektedir.

▪ Scrum ürünü en hızlı, kaliteli, ucuz olarak servis eden proje yönetim çerçevesidir.

▪ Geri bildirim düşüncesine ve ekip çalışmasına dayalıdır.

▪ Şeffaflık, denetleme ve uyarlama olmak üzere üç temel prensipten oluşur. Bu prensipler sayesinde, proje ile ilgili tüm gelişmeler tüm ekip tarafından anında izlenebilir.

▪ Ayrıca, projenin işleyişi düzenli olarak kontrol edilir ve uyarlama özelliği ile proje ihtiyaç duyulan tüm değişikliklere kolaylıkla adapte olabilir.

Scrum Takımı

Scrum takımları, kendi kendilerini yönetir (self-organized) ve çapraz fonksiyonludur (crossfunctional).
Kendini yöneten takımlar; takımın dışındaki birilerinden komut almak yerine işlerini en iyi nasıl yapacaklarına kendileri karar verir.
Çapraz fonksiyonlu takımlar; takımın dışındaki kişilere bağımlı olmadan işi tamamlayacak tüm yetkinliklere sahiptir. Scrum’daki takım modeli esnekliği; yaratıcılığı ve üretkenliği en iyi şekilde kullanmak üzere tasarlanmıştır.

▪ Ürün Sahibi (Product Owner)
▪ Geliştirme Takımı (Development Team)
▪ Scrum Yöneticisi (Scrum Master)

Ürün Sahibi (Product Owner):
▪ Geliştirme Takımının işini ve ürünün değerini en üst seviyeye çıkarmakla sorumludur.
▪ Bunun nasıl yapılacağı ise organizasyonlar, Scrum takımları ve bireyler arasında farklılık gösterebilir.

Ürün sahibi, ürün iş listesini (Product Backlog) yönetmekle sorumlu olan tek kişidir. Ürün iş listesi yönetimi şunları içerir:
▪ Ürün iş listesi kalemlerini açıkça ifade etmek.
▪ Ürün iş listesindeki kalemleri, hedeflerin ve görevlerin en iyi şekilde gerçekleştirilmesini sağlayacak şekilde sıralamak.
▪ Geliştirme takımının ortaya koyduğu işin değerini en üst seviyeye çıkarmak.
▪ Ürün iş listesinin herkes için görünür, şeffaf ve anlaşılır olmasını, Scrum takımının ele alacağı sonraki işleri göstermesini sağlamak.

Geliştirme Takımı (Development Team):
▪ Her bir Sprintin sonunda ürünün “Bitti” tanımına uyan ve potansiyel olarak yayınlanabilir bir parçasını teslim etmekten sorumlu olan profesyonellerden oluşur.
▪ Ürün parçasını sadece geliştirme takımının üyeleri geliştirir.
▪ Geliştirme takımları, kendi işlerini düzenlemek ve yönetmek için organizasyon tarafından kurulan ve yetkilendirilen takımlardır.
▪ Kendi kendilerini yönetirler.
▪ Scrum, geliştirme takımı içinde hiçbir alt takıma izin vermez; test veya iş analizi gibi özel uzmanlıklara bakılmaz ve bunun hiçbir istisnası yoktur.

Scrum Yöneticisi (Scrum Master):
▪ Scrum’ın, çevikliğin anlaşılmasını ve uygulanmasını temin etmekle sorumludur.
▪ Scrum yöneticileri bu sorumluluklarını scrum takımı’nın scrum teorisine, pratiklerine ve kurallarına uyulmasını sağlayarak yerine getirir.
▪ Scrum yöneticisi, scrum takımıyla olan hangi etkileşimlerinin faydalı olup olmadığını anlamaları konusunda başkalarına yardım eder.
Görevleri:
▪ Ürün iş listesini etkili bir şekilde yönetebilmesi için teknikler bulmak.
▪ Scrum takımına, anlaşılır ve kısa ürün iş listesi kalemlerine ihtiyaç olduğunu anlamalarında yardımcı olmak.
▪ Ürün sahibinin değeri en üst seviyeye çıkarması için ürün iş listesini nasıl düzenleyeceğini bilmesini sağlamak, danışmanlık yapmak.

KANBAN Nedir?

▪ Kanban, sürekli gelişim sağlamaya yardımcı olmak için tasarlanmış yalın yöntemdir.

▪ İlk başlangıçta mevcut sistemde değişiklik yapılmadan izleme yapılır.

▪ İsraf ve bekleme yaratan noktalar tespit edilir ve bu noktalara bir çözüm bulunur. Kanban’da iş akışı her an değişebilir.

▪ Mevcut kartlar önceliklendirmeye bağlı olarak yer değiştirebilir, iş listelerine yenileri eklenebilir ya da kaldırılabilir.

▪ Kanban, proje sahiplerinin nasıl çalıştıklarını daha iyi anlamaları için geliştirme ekibi ile birlikte kişiselleşmelerine izin verir.

▪ Bu, geliştiricilerin ekip olarak daha iyi çalışmasına ve başladıklarını çok daha hızlı bitirmesine olanak tanır. Böylece, geliştiricilerin projenin tamamını görmesi sağlanır ve tüm projeyi geliştirebilecek zorluklar önceden belirlenir.

SCRUM ve KANBAN

▪ Kanban ve Scrum, çevik yazılım geliştirmede yaygın olarak kullanılan proje yönetim yaklaşımlarıdır.
▪ Kanban ve Scrum gibi metotlar tüm dünya genelinde bir standarda kavuşmuştur ve bu konuda dünya çapında geçerli eğitim ve sertifikasyon süreçleri yer almaktadır.
▪ Bu sertifikasyon süreçleri ve standart akışlar ülkeler arası takip edilen projeler için de büyük avantajlar sağlamaktadır.

Hangisini Seçmeliyiz?

Her şeyden önce hangi metodun daha iyi olduğundan ziyade işin durumuna hangisinin uygun olduğuna karar verilmesi gerekir. Scrum oldukça planlı bir süreç gerektirirken, Kanban daha esnek bir süreçtir. Scrum’da başlangıç ve bitiş süreleri belirlenmiş spritler ile yapılır. Kanban’da ise işin bitimi için belli bir süre belirlenmez. Scrum’da her kişinin bir görev rolü vardır ancak Kanban’da bu roller yoktur. Bu yüzden aşağıdaki tabloya dayanarak işin durumuna göre karar vermeniz daha iyi olacaktır.

Kanban ve Scrum Farkı

--

--