Agile ve Scrum'a Giriş PDF - Agile Development Modülü 1

Document Details

RadiantJustice1951

Uploaded by RadiantJustice1951

Fırat Üniversitesi

John Rofrano

Tags

agile development Scrum project management software development

Summary

Bu modülde Agile geliştirme ve Scrum metodolojisine giriş yapılmaktadır. Agile'ın temel prensiplerini, Scrum'ın rollerini, ve faydalarını inceleyerek, uygulamalar için gerekli bilgilere sahip olacaksınız.

Full Transcript

Introduction to Agile Development and Scrum 🚀 Agile ve Scrum’a Giriş Merhaba! Ben John Rofrano, ve bu kurs boyunca sizlere Agile geliştirme ve Scrum metodolojisini öğreteceğim. Agile sadece bir süreç değildir; benimsenmesi gereken bir zihn...

Introduction to Agile Development and Scrum 🚀 Agile ve Scrum’a Giriş Merhaba! Ben John Rofrano, ve bu kurs boyunca sizlere Agile geliştirme ve Scrum metodolojisini öğreteceğim. Agile sadece bir süreç değildir; benimsenmesi gereken bir zihniyet ve felsefedir. Bu derste, Agile’ı nasıl uygulayacağınızı, hangi araç ve teknikleri kullanabileceğinizi ve yaygın hatalardan nasıl kaçınacağınızı öğreneceksiniz. 📊 İstatistiklere göre: %70'ten fazla organizasyon Agile yaklaşımlarını benimsemiştir. %77 oranında şirket Scrum metodolojisini kullanmaktadır. Agile projeler, geleneksel projelerden %28 daha başarılıdır. (Kaynak: Price Waterhouse Coopers) Ancak Forbes'a göre Agile dönüşümlerinin %47'si başarısız olmaktadır. ❌ 💡 Agile Dönüşümleri Neden Başarısız Oluyor? Agile yöntemini başarıyla uygulamak için sadece teorik bilgi yeterli değildir. İşte en büyük başarısızlık nedenleri: 🔴 1. Agile’ı uygulamada deneyimsizlik Agile sadece belirli kuralların takip edilmesi gereken bir süreç değildir. Kültürel bir değişimdir. Eğer yönetim Agile prensiplerini benimsemezse, organizasyon Agile dönüşümünde başarısız olabilir. 🔴 2. Sadece kitaplardan öğrenmek Agile’ı bir kitaptan okuyarak öğrenemezsiniz! Tıpkı araba kullanmayı öğrenmek gibi, Agile uygulamasında bir mentor veya eğitmen eşliğinde pratik yaparak öğrenmeniz gerekir. 📌 Örneğin: Introduction to Agile Development and Scrum 1 Birine araba kullanmayı öğretmek için sadece araba kullanma kılavuzu vermezsiniz. Bir deneyimli sürücü ile yola çıkarak, direksiyon başında pratik yaparak öğrenirsiniz. Agile da böyledir! Deneyimleyerek ve hata yaparak öğrenilir. 🎯 Agile Düşünce Yapısını Nasıl Benimseyebilirsiniz? Başarılı bir Agile dönüşümü için organizasyonun şu prensiplere göre hareket etmesi gerekir: ✅ 1. Küçük, Çapraz Fonksiyonlu Takımlar Takımlar küçük olmalı ve farklı disiplinlerden kişileri barındırmalıdır (yazılımcılar, tasarımcılar, test mühendisleri vb.). Ortak çalışma ile başarı sağlanır. ✅ 2. Kendi Kendini Yöneten Takımlar Takımlar bağımsız olmalı ve kararları hızlıca alabilmelidir. Yönetimin, ekiplere güvenmesi ve fazla müdahale etmemesi gerekir. ✅ 3. Değer Odaklı Planlama Agile yönteminde uzun vadeli detaylı planlar yerine, hızlı ve küçük teslimatlar tercih edilir. Müşteriye erken aşamalarda çalışan bir ürün sunmak esas hedeftir. ✅ 4. Lean Üretim Mantığı Toyota'nın üretim felsefesi olan "Lean" (yalın üretim) Agile metodolojisine ilham vermiştir. Bu felsefeye göre: İsrafı ortadan kaldırın 🔄 Değer yaratmayan işleri bırakın ❌ Hızlı geri bildirim alarak sürekli iyileştirme yapın 🔍 ✅ 5. "Pivot mu, Devam mı?" Sorusu Her iterasyon (Sprint) sonunda şu soruyu sormalısınız: "Bu yolda devam mı etmeliyiz, yoksa yön değiştirerek yeni bir strateji mi denemeliyiz?" Introduction to Agile Development and Scrum 2 Eğer mevcut yöntem işe yaramıyorsa, esnek olun ve yön değiştirin. Agile, değişime hızlı adapte olmayı gerektirir. 📌 Agile Planlama Süreci Agile planlama süreci aşamalı ve döngüsel bir süreçtir. Planlar esnektir ve her iterasyon sonunda tekrar gözden geçirilir. Agile sürecinde şu temel unsurlar bulunur: 📆 Sprint Planlaması (Iterative Planning) Sprintler genellikle 1-4 hafta sürer. Hedef, çalışan bir ürün teslim etmek ve müşteri geri bildirimlerini alarak hızlıca iyileştirme yapmaktır. 📋 Scrum Rolleri Scrum Master: Takımın Agile sürecini doğru uygulamasını sağlar. Product Owner: Müşteri gereksinimlerini belirler ve önceliklendirir. Development Team: Ürünü geliştirir ve teslim eder. 🔄 Günlük Stand-up Toplantıları Takım üyeleri her sabah maksimum 15 dakika süren kısa toplantılar yapar. "Dün ne yaptım?", "Bugün ne yapacağım?", "Engellerim var mı?" gibi sorular sorulur. Bu sayede iletişim güçlü tutulur ve ekip hızlı aksiyon alabilir. 🚀 Geri Bildirim & Retrospective Her Sprint sonunda müşteriden ve ekipten geri bildirim toplanır. Neyi daha iyi yapabiliriz? sorusuna yanıt aranır. Sürekli iyileştirme kültürü desteklenir. 📢 Sonuç & Özet Bu kurs, Agile süreçlerini yalnızca teorik olarak değil, pratik olarak nasıl uygulayacağınızı öğretir. Introduction to Agile Development and Scrum 3 ✅ Agile sadece bir süreç değil, bir zihniyettir. ✅ Başarı için küçük, çapraz fonksiyonlu ve kendi kendini yöneten takımlar gereklidir. ✅ Planlama, değer yaratmaya ve esnekliğe dayanmalıdır. ✅ Geri bildirim almak ve süreçleri sürekli iyileştirmek Agile'ın en önemli parçasıdır. ✅ Scrum süreçleri (Sprintler, Stand-up toplantıları, Retrospective) Agile’ı başarılı bir şekilde uygulamanıza yardımcı olur. 🎯 Şimdi Ne Yapmalısınız? 📌 Videoları izleyin ve not alın. 📌 Quizleri çözerek öğrendiklerinizi pekiştirin. 📌 Tartışma forumlarında diğer öğrencilerle fikir alışverişi yapın. 📌 Eğer uygulamalı bir modül varsa, tamamlayarak pratik yapın! Bu kursun sonunda, Agile ve Scrum'ı etkili bir şekilde kullanabilecek bilgi ve yetkinliğe sahip olacaksınız. 🚀 Introduction to Agile Development and Scrum 4 Agile Principles 📌 Agile Nedir? Agile, proje yönetimi için yinelemeli (iteratif) bir yaklaşımdır. Bu yaklaşım, ekiplerin hızlı bir şekilde müşteri geri bildirimi alarak değer üretmesine olanak tanır. ❗ Agile’in temel farkı nedir? Geleneksel planlama yöntemlerinde, tüm yılın planı baştan yapılır. Agile'de ise küçük bölümler halinde planlama yapılır ve sürekli müşteri geri bildirimi alınarak yön belirlenir. 🛠 Agile'in Temel Özellikleri 1️⃣ Uyarlanabilir Planlama (Adaptive Planning) Uzun vadeli planlar yerine kısa iterasyonlarla küçük bölümler planlanır. Bu, müşteri ihtiyaçlarını daha iyi anlamayı sağlar. 2️⃣ Evrimsel Geliştirme (Evolutionary Development) Ürünün tamamı tek seferde oluşturulmaz. Küçük parçalar halinde geliştirilir ve süreç içinde şekillendirilir. 3️⃣ Erken Teslim (Early Delivery) Eğer iterasyonlar tamamlanıyor ama müşteriye teslim edilmiyorsa, Agile uygulanmıyor demektir! Erken teslim, Agile’in en önemli bileşenlerinden biridir. Müşteri geri bildirimi alınarak pivot yapılabilir (farklı bir yöne yönelinir) ya da mevcut planda kalınabilir (persevere). 4️⃣ Sürekli İyileştirme (Continuous Improvement) Takım ve ürün sürekli geliştirilebilir. Erken teslim sayesinde müşteri geri bildirimine göre iyileştirmeler yapılabilir. 5️⃣ Değişikliklere Hızlı Tepki Verme (Responsive to Change) Müşteri talepleri değişebilir. Agile Principles 1 Agile, uzun vadeli planların aksine, hızlı uyarlanabilen bir yapıya sahiptir. 📜 Agile Manifestosu Agile Manifestosu, Agile felsefesinin temel ilkelerini belirler: ✔ Bireyler ve etkileşimler, süreçler ve araçlardan daha değerlidir. ❗ Önemli: Süreçler ve araçlar vardır, ancak insanlar ve etkileşimler daha önemlidir! ✔ Çalışan yazılım, kapsamlı dokümantasyondan daha değerlidir. Dokümantasyon önemlidir ama esas olan çalışabilir üründür. Yazılım teslim edilmeden sadece dökümantasyon sunulamaz. ✔ Müşteri ile iş birliği, sözleşme müzakerelerinden daha değerlidir. Sözleşmeler gereklidir ancak müşteriyle sürekli iletişim ve iş birliği daha önemlidir. ✔ Değişime tepki vermek, plana bağlı kalmaktan daha değerlidir. ❗ Agile'de planlar esnektir! Değişiklikler Agile’in doğasında vardır. 💡 Burada kritik olan nokta şu: Sağ tarafta belirtilen maddelerin bir değeri vardır, ancak sol taraftaki maddeler daha fazla öncelik taşır. 📌 Agile Yazılım Geliştirme Nedir? Agile, Agile Manifestosu'na uygun olarak iteratif bir yazılım geliştirme yöntemidir. ✔ Esneklik ✔ İş birliği ve takım içi iletişim ✔ Şeffaflık ve sürekli geri bildirim Agile’de küçük, bir arada çalışan, çapraz fonksiyonlu (cross-functional), kendini yöneten takımlar kullanılır. 📌Üret!" Agile'in En Önemli Felsefesi: "Planlananı Değil, Gerekli Olanı Agile Principles 2 Müşteri bir özellik istemiş olabilir, ancak eğer ihtiyaç değişmişse, planı değil ihtiyacı takip etmeliyiz. Agile, esneklik ve müşteri odaklılık demektir. 📚 Bu Derste Öğrendikleriniz: ✅ Agile, yazılım geliştirmede esnek ve iteratif bir yaklaşım sunar. ✅ Agile, şeffaflık, iş birliği ve müşteri odaklılık üzerine kuruludur. ✅ Agile Manifestosu’nun temel ilkeleri, müşteri memnuniyetini ve değişime hızlı adaptasyonu vurgular. ✅ Planlanan değil, müşteri için en iyi çözüm üretilmelidir. 🚀 Agile felsefesini benimseyerek, değişime hızlı adapte olabilir ve müşteri memnuniyetini artırabilirsiniz! Agile Principles 3 Methodologies Overview 🚀 Waterfall (Şelale) Yaklaşımı Waterfall, yazılım geliştirme süreçlerinin geleneksel bir modelidir ve katı bir aşamalı süreç izler. Bu modelde her aşama tamamlandıktan sonra bir sonraki aşamaya geçilir. 🔹 Aşamalar: 1. Gereksinim Toplama: Müşterinin ihtiyaçları analiz edilir ve belge haline getirilir. 2. Tasarım: Yazılımın tüm bileşenleri önceden belirlenir ve tasarlanır. 3. Kodlama: Geliştiriciler, belirlenen tasarıma uygun kodları yazar. 4. Entegrasyon: Kodun birleştirilmesi ve tüm bileşenlerin uyumluluğunun test edilmesi sağlanır. 5. Test: Yazılımın hatalarının giderildiği aşamadır. 6. Dağıtım: Yazılımın canlı sisteme aktarılması sağlanır. 🔴 Waterfall Modelinin Sorunları 📌 Değişikliğe Kapalıdır: Gereksinimler belirlendikten sonra değiştirilmesi zordur. 📌 Sonuç Geç Görülür: Yazılımın çalışıp çalışmadığı test aşamasında öğrenilir. 📌 Geridönüş Zor ve Maliyetlidir: Hata veya eksiklikler fark edildiğinde, önceki aşamalara dönmek oldukça zordur. 📌 Uzun Süreli Projeler İçin Uygun Değildir: Teknolojik gelişmeler ve müşteri ihtiyaçları süreç içinde değişebilir. 💡 Özetle: Waterfall, büyük ölçekli projeler için ideal olsa da, değişikliklere kapalı olması ve uzun geliştirme süreçleri nedeniyle çevik metodolojilere göre daha az esnektir. ⚡ Extreme Programming (XP) Kent Beck tarafından 1996 yılında geliştirilen Extreme Programming (XP), hızlı ve esnek yazılım geliştirme anlayışına dayanan bir metodolojidir. Methodologies Overview 1 🔹 XP’nin Temel Unsurları: İteratif Yaklaşım: Yazılım geliştirme süreci sürekli olarak tekrar eden küçük döngülerle ilerler. Hızlı Geri Bildirim: Hataların hızlıca tespit edilmesini sağlar. Sürekli İyileştirme: Her geliştirme döngüsünde yazılımın kalitesi artırılır. 🔹 XP’nin Değerleri: 1. Sadelik (Simplicity): Gereksiz kod ve özelliklerden kaçınılır. 2. İletişim (Communication): Takım üyeleri sürekli olarak bilgi paylaşır. 3. Geri Bildirim (Feedback): Yazılımın her aşamasında hızlı geri bildirim alınır. 4. Saygı (Respect): Takım içinde herkesin fikrine saygı duyulur. 5. Cesaret (Courage): Geliştiriciler, en iyi çözümleri üretme konusunda cesaretlendirilir. ✅ XP, çevik metodolojilerin temel taşlarından biridir ve özellikle sık değişiklik gerektiren projelerde tercih edilir. 📌 Kanban Metodolojisi Kanban, görselleştirilmiş iş akışları ve sürekli iyileştirme prensiplerine dayalı bir sistemdir. Japon üretim sistemlerinden türetilmiştir ve çevik yazılım geliştirme süreçlerine uyarlanmıştır. 🔹 Kanban’ın Temel İlkeleri: 1. İş Akışını Görselleştirme (Visualizing Workflow): İşlerin hangi aşamada olduğunu gösteren panolar kullanılır (Trello, Jira vb.). 2. İş Yükünü Sınırlama (Limiting Work in Progress - WIP): Aynı anda çok fazla iş alınmasını önler, verimliliği artırır. 3. Akışı Yönetme ve Geliştirme (Managing and Enhancing Flow): İşlerin mümkün olduğunca hızlı ilerlemesi sağlanır. 4. Süreç Politikalarını Açık Hale Getirme: Takım üyeleri neyin nasıl yapılacağını iyi bilir. 5. Sürekli İyileştirme (Continuous Improvement): Hatalardan ders alınıp süreçler optimize edilir. Methodologies Overview 2 💡 Özetle: Kanban, iş süreçlerini optimize ederek verimliliği artırmaya ve süreçleri iyileştirmeye odaklanır. Yazılım geliştirme süreçlerinde çevik çalışma prensiplerine uygun bir yaklaşım sunar. 📚 Bu Derste Öğrendikleriniz: (Özet) ✔ Waterfall modeli, yazılım geliştirme sürecini aşamalı olarak yöneten ancak değişikliklere kapalı ve geri dönüşü maliyetli olan bir yaklaşımdır. ✔ Extreme Programming (XP), sürekli geri bildirim ve iteratif geliştirme ile yazılım kalitesini artıran, çevik bir yöntemdir. ✔ Kanban, iş akışını görselleştirerek sürecin daha verimli ilerlemesini sağlayan bir sistemdir. 🔹 Hangi metodoloji seçilmeli? Sabit gereksinimler ve büyük projeler için → Waterfall Esneklik, sık güncellenen projeler için → Extreme Programming (XP) Süreç iyileştirme ve hızlı teslimatlar için → Kanban 🚀 Sonuç: Yazılım geliştirme süreçlerinde hızlı değişikliklere ayak uydurabilmek, müşteri ihtiyaçlarına odaklanmak ve iş akışını optimize etmek için çevik metodolojiler (XP ve Kanban) günümüzde daha fazla tercih edilmektedir. Methodologies Overview 3 Working Agile 📌 Agile Çalışma Prensipleri Agile çalışma prensipleri, esneklik, hızlı geri bildirim ve sürekli iyileştirme üzerine kuruludur. Aşağıdaki beş temel Agile pratiği, verimli ve etkili bir yazılım geliştirme süreci için kritik öneme sahiptir: 1. Küçük Parçalar Halinde Çalışmak (Working in Small Batches) Büyük ölçekli işleri küçük bölümlere ayırarak verimliliği artırır. Hata ve kayıpları minimize eder, hızlı geri bildirim sağlar. 2. Minimum Viable Product (MVP) Kullanımı En temel işlevselliği içeren bir ürün oluşturup müşteri geri bildirimlerini almak için piyasaya sürülmesi. Amaç, hızlı öğrenme ve uyum sağlamadır. 3. Davranış Odaklı Geliştirme (BDD – Behavior Driven Development) Yazılımın son kullanıcının perspektifinden test edilmesi ve işlevselliğin dıştan içe doğru kontrol edilmesi. Gherkin Sözdizimi (Given-When-Then) kullanılarak test senaryoları yazılır. 4. Test Odaklı Geliştirme (TDD – Test Driven Development) Önce test yazılır, sonra kod geliştirilir. Red-Green-Refactor döngüsü ile kod yazım süreci: Red: Test yazılır ve hata alınır. Green: Gerekli kod eklenerek test geçilir. Refactor: Kod iyileştirilir ve optimize edilir. 5. Çift Kişilik Programlama (Pair Programming) İki yazılımcının aynı bilgisayar üzerinde birlikte kod yazması yöntemidir. Biri "sürücü (driver)", diğeri "yönlendirici (navigator)" olarak çalışır. Hataları erken tespit etmeyi sağlar ve bilgi paylaşımını artırır. Working Agile 1 🚀 Küçük Parçalar Halinde Çalışmak Büyük projeleri küçük parçalara ayırmak, hızlı geri bildirim almak ve hataları erken tespit etmek için en etkili yöntemlerden biridir. Örnek: 1000 adet broşür göndermeniz gerekiyor. Büyük Parti Yaklaşımı: Önce hepsini katlayıp, sonra zarflara koyup, sonra mühürleyip en sonunda postalamak 16 dakika sürüyor. Ancak, başta bir hata fark edilirse tüm süreci en baştan yapmak gerekir! Tek Parça Akışı Yaklaşımı: Broşürleri tek tek katlayıp, zarf içine koyup, mühürleyip postalamak 24 saniyede bir tamamlanmasını sağlar ve olası hatalar hemen düzeltilir. ✅ Sonuç: Küçük partiler halinde çalışmak, hataları erken fark etmemizi ve süreçleri hızlı optimize etmemizi sağlar. 🎯 Minimum Viable Product (MVP) Bir MVP, hipotezleri test etmek ve öğrenme sağlamak için en az özellik ile oluşturulmuş üründür. 🚗 Yanlış MVP Yaklaşımı: Kullanıcıya ilk aşamada bir araba yapmak yerine, önce tekerlek, sonra şasi, sonra direksiyon eklemek. Müşteri, uzun süre istediği şeyi alamaz ve süreç verimsiz hale gelir. 🛹 Doğru MVP Yaklaşımı: İlk olarak basit bir kaykay sunarak müşterinin nasıl bir araç istediğini öğrenmek. Sonra bisiklet, motosiklet ve en sonunda araba geliştirmek. Böylece, müşteri en baştan itibaren işlevsel bir şey kullanabilir ve süreç içinde geri bildirim sağlayabilir. ✅ Sonuç: MVP’nin amacı tam bir ürün teslim etmek değil, en hızlı şekilde geri bildirim almak ve iyileştirme yapmaktır. 🛠 Behavior Driven Development (BDD) Working Agile 2 BDD, yazılımı dıştan içe doğru test eden bir yaklaşımdır. Kullanıcı deneyimini baz alır ve önceden belirlenmiş senaryolara dayanır. Gherkin dili kullanılır: Given (Ön Koşul): "Sepetimde iki ürün var." When (Eylem): "Sepetimi temizlersem" Then (Sonuç): "Sepetim boş olmalıdır." ✅ Sonuç: Tüm ekip üyeleri tarafından kolayca anlaşılabilir ve müşteri beklentilerine uygun çözümler geliştirmeye yardımcı olur. 🛠 Test Driven Development (TDD) TDD, önce test yazılıp, sonra kodun geliştirilmesini öngören bir yaklaşımdır. Red-Green-Refactor Döngüsü: 1. Red (Başlangıç): Test yazılır, başarısız olur. 2. Green (Geliştirme): Gerekli kod yazılır ve test başarıyla çalışır. 3. Refactor (İyileştirme): Kod düzenlenir ve optimize edilir. ✅ Sonuç: Test edilmeyen kod, çalışmayan koddur! Erken hata tespiti, maliyetleri ve geliştirme süresini azaltır. 👥 Pair Programming (Çift Kişilik Programlama) İki yazılımcının aynı bilgisayar üzerinde birlikte çalışmasıdır. 🎭 Çeşitli Pair Programming Yaklaşımları: Driver/Navigator: Birisi yazarken, diğeri yönlendirir. Ping-Pong: Bir kişi test yazar, diğeri kodu tamamlar. Strong Style: Kıdemli yazılımcı yönlendirir, yeni yazılımcı kodu yazar. ✅ Avantajlar: Hataların erken tespiti, Bilgi paylaşımı ve mentorluk, Working Agile 3 Daha kaliteli kod üretimi. ❌ Zorluklar: Uzun süre odaklanma gerektirir, Uyumlu eşleşmelerin olması şarttır. 📌 Sonuç ve Özet 📚 Bu Derste Öğrendikleriniz: ✅ Küçük Parçalar Halinde Çalışmak: Hızlı geri bildirim almak için işleri küçük bölümlere ayır. ✅ Minimum Viable Product (MVP): En az özellik ile ürün çıkar, geri bildirim al ve geliştir. ✅ Behavior Driven Development (BDD): Kullanıcı gözünden test et, dıştan içe doğru kontrol et. ✅ Test Driven Development (TDD): Önce test yaz, sonra kodu geliştir, hata riskini azalt. ✅ Pair Programming: İki yazılımcıyla kod geliştirerek kaliteyi artır. 🚀 Agile çalışma prensipleri, esneklik ve sürekli iyileştirme sağlayarak daha başarılı yazılım projeleri oluşturmanıza yardımcı olur! Working Agile 4 Scrum Overview 🔹 Agile vs. Scrum Agile, esnek bir geliştirme felsefesidir ve belirli bir metodoloji sunmaz. Bir çerçeve sağlar ve ekiplerin çevik bir şekilde çalışmasını teşvik eder. Scrum, Agile felsefesini takip eden kesin kurallara sahip bir metodolojidir. Scrum, ekiplerin küçük, kendi kendini yöneten ve işlevler arası olacak şekilde organize olmasını ve sabit uzunluktaki sprintlerle çalışmasını sağlar. 🎯 Özet: Agile bir felsefedir, Scrum ise Agile prensiplerine dayalı bir yönetim çerçevesidir. 🔹 Scrum’ın Temel Unsurları Scrum, kademeli (iteratif) ürün geliştirme için kullanılan bir yönetim çerçevesidir. Aşağıdaki temel unsurları içerir: ✅ Küçük, işlevler arası ve kendi kendini yöneten ekipler ✅ Belirli roller, kurallar ve çıktıların (artifacts) tanımlanması ✅ Sabit uzunlukta "Sprint" adı verilen yinelemeler ✅ Her sprint sonunda müşteriye sunulabilir bir ürün parçası üretme hedefi 💡 Scrum’ın özü: "Anlaması kolay ama ustalaşması zor" 🔹 Sprint Nedir? Sprint, tasarım, kodlama, test ve dağıtım süreçlerini içeren mini bir geliştirme döngüsüdür. Scrum'da sprintler genellikle 2 hafta sürer, ancak 1 ila 4 hafta arasında değişebilir. Her sprintin bir amacı ve sonunda ulaşılan potansiyel olarak sunulabilir bir ürün çıktısı (shippable increment) olmalıdır. 🔹 Scrum Sürecinin Adımları Scrum Overview 1 📌 1. Ürün Backlog’u (Product Backlog) Üzerinde çalışılması gereken tüm kullanıcı hikayelerinin (user stories) bulunduğu geniş kapsamlı iş listesidir. Yeni özellikler, iyileştirmeler ve hatalar burada saklanır. 📌 2. Backlog Refinement (Düzenleme) Ürün backlog'undaki öğeler sprint için hazır hale getirilir. Hikayeler gözden geçirilir ve geliştirme için uygun hale getirilir. 📌 3. Sprint Planlama (Sprint Planning) Sprint için hedeflenen işlerin belirlendiği toplantıdır. Ekip, backlog’dan alınan görevlerle bir Sprint Backlog oluşturur. 📌 4. Günlük Scrum (Daily Stand-up) Her gün yapılan kısa toplantıdır (maksimum 15 dk). Üç temel soruya yanıt aranır: 1. Dün ne yaptın? 2. Bugün ne yapacaksın? 3. Herhangi bir engelin var mı? Bu toplantılar, ekibin senkronize kalmasını ve blokajların hızlı çözülmesini sağlar. 📌 5. Sprintin Tamamlanması & Shippable Increment Sprint sonunda test edilmiş ve çalışır durumda bir ürün ortaya çıkmalıdır. 📌 6. Sprint Retrospective (Geri Bildirim) Her sprint sonunda ekip, neyin iyi gittiğini, neyin geliştirilebileceğini ve gelecek sprintler için nasıl daha iyi olunabileceğini tartışır. 🎯 Özet Scrum, Agile felsefesini takip eden kesin kuralları olan bir metodolojidir. Sprintler genellikle 2 hafta sürer ve her sprint sonunda çalışır bir ürün parçası oluşturulmalıdır. Scrum süreci, backlog yönetimi, günlük toplantılar ve sprint planlamaları gibi adımları içerir. Scrum Overview 2 📌 Scrum uygulamak, sadece süreci öğrenmekten daha fazlasını gerektirir. Uygulama yapmak ve deneyimli biriyle çalışmak öğrenme sürecini hızlandırır! 🚀 Scrum Overview 3 The 3 Roles of Scrum 📌 Scrum’daki 3 Ana Rol Scrum'da yalnızca üç rol vardır. Bunlar: 1. Ürün Sahibi (Product Owner) 2. Scrum Master 3. Scrum Takımı (Scrum Team) Scrum’un başarısı için bu rollerin net bir şekilde tanımlanması ve herkesin rolünü doğru şekilde yerine getirmesi çok önemlidir. 🛠 1. Ürün Sahibi (Product Owner) Bu kişi, vizyona sahip olan, ürünü yönlendiren ve kararları veren kişidir. 🎯 Ürün Sahibinin Sorumlulukları: ✔ Paydaşların (stakeholders) çıkarlarını temsil eder. ✔ Ürün vizyonunu belirler ve bunu takıma açık bir şekilde anlatır. ✔ Gereksinimlere dair nihai kararları verir. ✔ Ürün Backlog’unu sürekli günceller ve önceliklendirir. ✔ Ürün teslimatlarını (Product Increment) kabul eder veya reddeder. ✔ Ürünün geliştirilmesine devam edilip edilmeyeceğine karar verir. 💡 Kafa Karıştıran Soru: Ürün Sahibi ile Ürün Yöneticisi (Product Manager) aynı kişi midir?Hayır, Ürün Yöneticisi bir iş unvanıdır, Ürün Sahibi ise Scrum'da bir roldür. Bir kişi, her ikisini de üstlenebilir ama bu zorunlu değildir. 👨‍🏫 2. Scrum Master Scrum Master, Scrum sürecinin doğru şekilde yürütülmesini sağlayan kişidir. Scrum ekibine koçluk yapar, onların kendi kendini organize edebileceği bir ortam oluşturur ve sürecin tıkanmasını engeller. The 3 Roles of Scrum 1 🏆 Scrum Master'ın Görevleri: ✔ Scrum sürecini yürütür ve uygulatır. ✔ Takımı koçluk yaparak geliştirir. ✔ Takımı dış etkenlerden ve dikkat dağıtıcılardan korur. ✔ Engelleri (impediments) kaldırır ve takımın önünü açar. ✔ Sprint sürelerine ve zaman yönetimine dikkat eder. ✔ Takımın gelişimi için verileri takip eder ve analiz eder. ⚠ Önemli Not: Scrum Master bir yönetici (manager) değildir! Çünkü takım üyelerinin özgürce fikirlerini paylaşabilmesi ve süreçleri geliştirmesi için güvenli bir ortam oluşturması gerekir. Eğer bir yönetici olursa, ekip üyeleri her şeyi açıkça söylemekten çekinebilir. 🛠 3. Scrum Takımı (Scrum Team) Scrum takımı, çapraz işlevsel (cross-functional) ve kendi kendini yöneten (self-managing) bir yapıdır. Bir yazılım geliştirme ekibi, test uzmanları, analistler, operasyon mühendisleri gibi farklı uzmanlıklardan oluşabilir. 🎯 Scrum Takımının Özellikleri: ✔ Çapraz işlevseldir: Yazılım geliştiriciler, test uzmanları, analistler, tasarımcılar vb. birlikte çalışır. ✔ Kendi kendini yönetir: İşin nasıl yapılacağını takım kendi belirler. ✔ Özerktir: Kendileri için çalışma yöntemlerini kendileri belirlerler. ✔ Küçük ve çeviktir: 7 ± 2 kişi olmalıdır (Yani, ideal olarak 5-9 kişi). ✔ Coğrafi olarak mümkünse birlikte çalışır: Aynı odada veya yakın lokasyonlarda olmak, iletişimi güçlendirir. ✔ Adanmış ve tam zamanlıdır: Takım üyeleri farklı projelere bölünmemelidir, tam zamanlı olarak Scrum takımında çalışmalıdır. ✔ Sprint bazlı çalışır: Ürün Sahibi ile birlikte her Sprint’te hangi işlerin yapılacağını belirlerler. The 3 Roles of Scrum 2 ✔ Nasıl yapacaklarına kendileri karar verir: Kendilerine iş atanmaz, işin nasıl yapılacağını kendileri belirler. 📌 Önemli Not: Eğer bir takım çok fazla kişiden oluşuyorsa ya da insanlar başka projelere de bölünmüşse, Scrum’un verimli olması çok zorlaşır! 🚀 Scrum’da Başarı için Anahtar Faktörler 💡 Ürün Sahibi → Net bir vizyon belirlemeli ve takıma açıkça anlatmalı. 💡 Scrum Master → Engelleri kaldırmalı, Scrum’ın doğru uygulanmasını sağlamalı. 💡 Scrum Takımı → Özerk olmalı, kendisi için kararlar almalı ve sprint hedeflerine odaklanmalı. 📚 Bu Derste Öğrendikleriniz (Özet) ✔ Ürün Sahibi (Product Owner) → Ürün vizyonunu belirler, önceliklendirme yapar, paydaşlarla iletişimi sağlar. ✔ Scrum Master → Takımı koçluk yaparak yönlendirir, engelleri kaldırır, süreçleri yönetir. ✔ Scrum Takımı → Çapraz işlevseldir, kendi kendini yönetir ve işin nasıl yapılacağına kendi karar verir. Scrum'da herkesin belirli bir rolü ve sorumluluğu vardır. Başarılı bir Scrum uygulaması için rollerin doğru belirlenmesi ve süreçlerin iyi yönetilmesi gereklidir. 🚀 The 3 Roles of Scrum 3 Artifacts, Events, and Benefits 📌 Scrum Artefaktları (Scrum Artifacts) Scrum’da üç temel artefakt bulunur: 1️⃣ Ürün Backlog’u (Product Backlog): Üzerinde çalışılacak tüm gereksinimleri içeren listedir. Tüm görevler ve özellikler burada saklanır. Takımın henüz çalışmadığı ancak gelecekte ele alacağı tüm işler burada tutulur. Bazı takımlar Icebox veya Release Backlog gibi ek kategoriler kullanabilir. 2️⃣ Sprint Backlog: Yaklaşan sprintte tamamlanacak görevlerin bulunduğu listedir. Bir Sprint Planlama toplantısında belirlenir ve takımın o sprintte yapmayı taahhüt ettiği işleri içerir. 3️⃣ Tamamlanmış Ürün Artışı (Done Increment): Bir sprintin sonunda elde edilen, tamamlanmış ürün parçasıdır. Her sprint sonunda eklenen yeni işlevsellik, tüm paydaşlara sunulabilecek seviyeye getirilir. 📌 Scrum Etkinlikleri (Scrum Events) Scrum içerisinde beş ana etkinlik bulunur: 1️⃣ Sprint Planlama (Sprint Planning): Scrum Master, Ürün Sahibi (Product Owner) ve geliştirme takımı tarafından gerçekleştirilir. Sprintte hangi işlerin yapılacağı planlanır ve takım bu işlere taahhüt verir. 2️⃣ Günlük Scrum (Daily Scrum – Stand-up Meeting): Her gün, aynı saatte ve aynı yerde gerçekleştirilir. Takım üyeleri mevcut durumlarını paylaşır: ✅ Ne yaptım?✅ Bugün ne yapacağım? ✅ Herhangi bir engelim var mı? Artifacts, Events, and Benefits 1 Scrum Master, varsa engelleri kaldırmak için harekete geçer. 3️⃣ Sprint Süreci (Sprint Execution): İki hafta süren sprint boyunca takım belirlenen işleri tamamlamaya çalışır. 4️⃣ Sprint İncelemesi (Sprint Review – Demo Günü): Sprint sonunda yapılan işlerin paydaşlara sunulduğu toplantıdır. Paydaşlar, tamamlanan özellikleri gözden geçirir ve geri bildirimde bulunur. 5️⃣ Sprint Retrospektifi (Sprint Retrospective): Takımın sprint boyunca yaşadığı deneyimler değerlendirilir. Ne iyi gitti? Ne kötü gitti? Gelecekte nasıl daha iyi olabiliriz? sorularına yanıt aranır. 🚀 Scrum Kullanmanın Avantajları 1️⃣ Daha Yüksek Verimlilik: Günlük stand-up toplantıları ve Kanban panosu ile takımın ilerleyişi daha şeffaf hale gelir. Takım üyeleri kendi işlerini yönetebilir ve işleri tamamlamak için motive olur. 2️⃣ Daha İyi Yazılım Kalitesi: Test odaklı geliştirme (Test-Driven Development - TDD) ve davranış odaklı geliştirme (Behavior-Driven Development - BDD) kullanılarak yüksek kalite sağlanır. 3️⃣ Daha Kısa Pazar Süresi (Reduced Time to Market): Küçük iş paketleri ile ürün daha kısa sürede kullanıcılara sunulur. Kullanıcı geri bildirimleri hızlıca alınarak geliştirme sürecine entegre edilir. 4️⃣ Daha Yüksek Paydaş Memnuniyeti: Kullanıcılar aylarca beklemek yerine her sprint sonunda yeni özellikleri test edebilir. Kullanıcılardan alınan erken geri bildirimler ile daha iyi ürün geliştirilir. 5️⃣ Daha Güçlü Takım Dinamikleri: Artifacts, Events, and Benefits 2 Şeffaflık, takım içindeki işbirliğini artırır. Herkes birbiriyle yardımlaşır, işler aksadığında takım üyeleri destek olur. 6️⃣ Daha Mutlu Çalışanlar: Takım üyeleri işleri kendi seçtikleri işlerden oluşturdukları için kontrol hissi kazanır. Ekip üyeleri gelişimlerini daha net görebilir ve yaptıkları işlerden gurur duyabilirler. 🔍 Scrum ve Kanban Karşılaştırması Kriter Scrum Kanban Sabit uzunlukta sprintler (2 Çalışma Düzeni Sürekli akış modeli hafta gibi) Yayınlama Devamlı entegrasyon ve sürekli Sprint sonunda yayınlanır Yöntemi dağıtım uygulanır Ürün Sahibi, Scrum Master, Roller yoktur, sadece çalışanlar Roller Geliştirme Takımı vardır Velocity (Hız) – Takımın 2 Cycle Time (Çevrim Süresi) – Bir Ana Metriği haftada ne kadar iş işin baştan sona tamamlanma yapabileceğini ölçer süresini ölçer Değişim Sprint süresince değişiklik Değişiklikler herhangi bir zamanda Yönetimi yapılmaz (istisnalar hariç) yapılabilir 📌 Özetle: Scrum, belirli süreli iterasyonlar kullanır ve daha düzenlidir. Kanban, sürekli akış modelini benimser ve esneklik sağlar. Scrum, özellikle yeni başlayan takımlar için daha uygundur, çünkü süreçler belirgindir ve net kurallar içerir. 📚 Sonuç: Scrum Kullanarak Daha İyi Ekip ve Ürün Yönetimi Scrum kullanımı, daha yüksek verimlilik, daha hızlı teslimat süreleri ve daha mutlu çalışanlar anlamına gelir. Takımlar işlerini şeffaf bir şekilde yönetebilir ve sürekli gelişim sağlayabilir. ✔ Ürün sahipleri daha hızlı geri bildirim alır Artifacts, Events, and Benefits 3 ✔ Geliştiriciler daha iyi kod kalitesi elde eder ✔ Müşteriler yeni özelliklere daha hızlı ulaşır Bu derste Scrum’un artefaktlarını, etkinliklerini ve sağladığı faydaları öğrendiniz! 🎯 🚀 Bir sonraki adımda: Scrum’un detaylarına, Scrum Rolleri (Product Owner, Scrum Master, Geliştirme Takımı) ve süreçlerine daha derinlemesine bakacağız! 🔥 Artifacts, Events, and Benefits 4 Organizational Impact of Agile 🔥 Organizasyonun Önemi Organizasyon yapısı başarı için kritik bir faktördür. Birçok şirket, mevcut ekiplerini doğrudan Agile’a adapte etmeye çalışırken, aslında ekiplerin Agile’dan tam anlamıyla faydalanabilmesi için yeniden yapılandırılması gerektiğini gözden kaçırır. 🏛 Conway Kanunu 1968’de Melvin Conway tarafından ortaya atılan Conway Kanunu şöyle der: “Bir organizasyon bir sistem tasarladığında, ortaya çıkan sistemin yapısı organizasyonun iletişim yapısını yansıtacaktır.” Bu şu anlama gelir: Eğer dört farklı ekipten bir derleyici (compiler) yapmalarını isterseniz, dört aşamalı bir derleyici elde edersiniz. Eğer bir UI ekibi, bir uygulama ekibi ve bir veritabanı ekibi oluşturursanız, üç katmanlı bir mimari elde edersiniz. Takım organizasyonu, doğrudan yazılımın yapısını belirler. Bu yüzden, Agile’a geçiş yapmak isteyen organizasyonların takımlarını işlevsel olarak hizalaması gerekir. 📌 Takımlar Nasıl Hizalanmalı? Gevşek Bağlı, Sıkı Hizalanmış Takımlar: Takımlar birbirlerine çok bağımlı olmadan, fakat aynı uygulama içinde uyumlu çalışmalıdır. İş Alanlarına Göre Dağılmış Takımlar: Büyük bir e-ticaret sisteminde 50 geliştiriciniz varsa, hepsini tek bir ekip olarak tutmak yerine şu şekilde ayırabilirsiniz: 🛒 Sepet Ekibi 📦 Sipariş Yönetimi Ekibi Organizational Impact of Agile 1 🧾 Ödeme Ekibi 🎯 Kişiselleştirme (Öneriler) Ekibi Böylece her ekip, belirli bir iş alanından sorumlu olur ve uçtan uca geliştirme yapabilir. 🚀 Takımların Uzun Vadeli Bir Misyonu Olmalı Eğer insanlar sürekli projeler arasında değiştirilirse, aidiyet hissi oluşmaz ve işin sahiplenilmesi zorlaşır. 🎯 Özerklik (Autonomy) Neden Önemli? Motivasyonu Artırır: Özerk çalışan ekipler, kendi kararlarını alabildikleri için daha motive olur. Hız Kazandırır: Kararlar ekip içinde alındığında bekleme süreleri azalır, süreçler hızlanır. Bağımlılıkları Azaltır: Takımlar bağımsız çalışabildiğinde, diğer takımlara olan bağımlılık en aza iner. 👉 Sonuç: Özerklik, hızı artırır ve daha iyi sistemler oluşturulmasını sağlar. 🚧Yeterli Agile’ın Sadece Geliştirme Takımlarında Olması mi? Hayır! Eğer tüm organizasyon Agile olmazsa, Agile geliştirme ekibi sadece bekler, bekler ve bekler… 😞 🔥 Örnek Durum: Bir projeye Ocak ayında başladığınızı düşünelim. Sprintler yaparak Şubat ortasında ilk sürümü yayınlamaya hazır hale geldiniz. Ancak, operasyon ekibi size şöyle diyor: "Bir destek bileti açın." 🎟 Tamam, bileti açıyorsunuz. Bir hafta içinde çözüleceğini umuyorsunuz. Ancak bilet beklemeye devam ediyor… 🚦 Sonunda Eylül ayında uygulama dağıtılıyor! 😱 Organizational Impact of Agile 2 Ve Aralık ayında projeden ayrılıyorsunuz çünkü sürecin ne kadar yavaş işlediğinden sıkılmışsınız. 👉 Ders: Eğer sadece geliştirme takımı Agile olursa ve operasyon ekibi eski yöntemlerle çalışmaya devam ederse, tüm sistem tıkanır. Bu yüzden, DevOps kültürüyle operasyon ekiplerinin de Agile’a dahil edilmesi gerekir. 🔄 Agile ve DevOps'un Uyumlu Hedefleri Agile Hedefi DevOps Hedefi Yazılımı hızlı teslim etmek Pazara çıkış süresini hızlandırmak Değişime hızlı tepki vermek BT organizasyonunu iş hedefleriyle uyumlu hale getirmek Yüksek kalite elde etmek BT verimliliğini artırmak 💡 Sonuç olarak: Agile’ı tam anlamıyla benimsemek için, DevOps'u da dahil etmek en doğru strateji olacaktır. 📚 Bu Derste Öğrendikleriniz: ✔ Organizasyon yapısı, geliştirilen sistemleri doğrudan etkiler. ✔ Özerklik, ekip motivasyonunu artırır ve daha hızlı ilerlemeyi sağlar. ✔ Agile’ın yalnızca geliştirme ekiplerinde uygulanması yetersizdir, operasyon ekipleri de Agile olmalıdır. ✔ Agile ve DevOps birlikte uygulandığında en yüksek verim alınır. 🚀 Unutmayın: Eğer organizasyonel yapınızı Agile’a uygun hale getirmezseniz, Agile çalışma yöntemlerinden tam anlamıyla faydalanamazsınız. 🎯 Organizational Impact of Agile 3 Mistaking Iterative Development for Agile Agile'ın Yanlış Uygulanması: Water-Scrum-Fall Tuzağı Birçok organizasyon "Biz Agile çalışıyoruz" dese de gerçekte Agile'ın temel ilkelerini yanlış uyguluyorlar. İşte sıkça yapılan hatalar: 1️⃣ Belirsiz Başlangıç ("Fuzzy Front End") Agile çalıştığını iddia eden şirketler, projenin başında geleneksel Waterfall yöntemleriyle uzun süren planlamalar yapıyor. Gereksinimler toplanıyor, analizler yapılıyor, ancak henüz müşteri geri bildirimi alınmıyor. 2️⃣ Yanlış Agile Yaklaşımı: Sadece İteratif Geliştirme Plan yap, iterasyon yap, tekrar et—ama geri bildirim yok! Gerçek Agile'da her iterasyon sonunda müşteriden geri bildirim alınır ve gerekirse yön değiştirilir. Ancak birçok şirket belirlenen planı takip etmeye devam ediyor ve Agile olduğunu zannediyor. 3️⃣ Son Aşamada Yaşanan Kaos ("Last Mile") Projenin sonunda ilk defa gerçek entegrasyon ve dağıtım yapılmaya çalışılıyor. Operasyon ekibi projeyle yeni tanışıyor, entegrasyon sancılı ve uzun sürüyor. Sonuç? Yavaş teslimatlar ve müşteri geri bildirimlerinin gecikmesi. 🎭 Bu yaklaşımın adı: Water-Scrum-Fall! 🔴 Yani Waterfall gibi planlama, Scrum gibi iterasyonlar ve Waterfall gibi teslimat süreci! 🛑 Bu Agile değil, sadece iteratif geliştirme! Mistaking Iterative Development for Agile 1 ❌ Agile Ne Değildir? 🚫 Agile sadece iteratif yazılım geliştirme süreci değildir. Önceden her şeyi planlayarak çalışıyorsanız, Agile olmuyorsunuz. Hızlı değişime ve müşteri geri bildirimine açık olmalısınız. 🚫 Agile sadece yazılım geliştiricilerin sprintlerde çalışması değildir. Agile bir ekip yaklaşımıdır! Yalnızca yazılımcılar değil; test uzmanları, iş analistleri ve hatta operasyon ekipleri de sürecin içindedir. DevOps yapıyorsanız, operasyon ekibinin de Agile sürecine dahil olması gerekir. 🚫 Agile'da proje yöneticisi yoktur. Agile Manifesto’da Agile proje yöneticisi diye bir kavram geçmez! Eğer komuta-kontrol mantığında iş dağıtan bir yönetici varsa, bu Agile değildir. Agile'da ekipler kendi işlerini kendileri yönetir ve önceliklerini belirler. 🚀 Sonuç: Gerçek Agile Nasıl Olur? ✔ Sürekli müşteri geri bildirimi almak. ✔ Sürekli teslimat ve küçük, yönetilebilir değişikliklerle ilerlemek. ✔ Ekiplerin kendi işlerini yönetmesine izin vermek. ✔ Değişikliklere hızlı adapte olabilmek. ✔ İterasyonları, müşteri değerini artırmak için kullanmak. 🔥 Özetle: Agile, sadece iterasyon yapmak değil, değişime adapte olup sürekli müşteri değerini artırmaktır! Water-Scrum-Fall tuzağına düşmemek için, iterasyonları müşteri geri bildirimi ile yönlendirmelisiniz. Mistaking Iterative Development for Agile 2

Use Quizgecko on...
Browser
Browser