18 Temmuz 2017 Salı

Scrum Sprint Planlama: Mevcut Sprintte Ne Yapılabilir?

Scrum Sprint Planlama: Mevcut Sprintte Ne Yapılabilir?

Geliştirme Takımı, Sprint boyunca geliştirilecek fonksiyonları öngörmek için çalışır. Ürün Sahibi, Sprintin başarması gereken amacı ve (Sprintte tamamlanırsa) Sprint Hedefini gerçekleştirecek Ürün İş Listesi kalemlerini tartışır. Tüm Scrum Takımı Sprintin işini anlamak üzere birlikte çalışır.

Sprint Planlama toplantısının girdileri Ürün İş Listesi, son çıkan Ürün Parçası, Geliştirme Takımının Sprintte harcayacağı kapasite tahmini ve Geliştirme Takımının geçmiş performansıdır. Ürün İş Listesinden kaç tane kalemi alacağına Geliştirme Takımı karar verir. Sadece Geliştirme Takımı önündeki Sprintte ne kadar işi yapabileceğini tartabilir.

Geliştirme Takımı, Sprintte teslim edeceği Ürün İş Listesi kalemlerini planladıktan sonra Scrum Takımı Sprint Hedefini oluşturur. Sprint Hedefi, Ürün İş Listesinin Sprint boyunca uygulanmasıyla ulaşılacak amaçtır ve Geliştirme Takımına Ürün Parçasını neden geliştirdiğiyle ilgili rehberlik eder.

Kaynak: Scrum Kılavuzu

Scrum ile ilgili geçmiş yazılara ulaşmak için tıklayınız.

17 Temmuz 2017 Pazartesi

16 Temmuz 2017 Pazar

Scrum Etkinlikleri: Sprint Planlama (Sprint Planning)

Scrum Etkinlikleri: Sprint Planlama (Sprint Planning)

Sprintte yapılacak iş Sprint Planlama toplantısında planlanır. Tüm Scrum Takımı planı birlikte oluşturur.

Sprint Planlama, bir aylık Sprint için 8 saatle sınırlıdır. Daha kısa Sprintler için, etkinlik genellikle daha kısadır.

Scrum Master, etkinliğin yapılmasını ve katılımcıların etkinliğin amacını anlamasını sağlar. Scrum Master, Scrum Takımına bu etkinliğin zaman sınırını aşmamasını öğretir.

Sprint Planlama şu sorulara cevap verir:
  • Başlayan Sprintte Ürün Parçası olarak ne teslim edilebilir?
  • Ürün Parçasını teslim etmek için gerekli olan iş nasıl başarılacak?
Kaynak: Scrum Kılavuzu

Scrum ile ilgili geçmiş yazılara ulaşmak için tıklayınız.

14 Temmuz 2017 Cuma

Scrum: Bir Sprintin İptal Edilmesi

Scrum: Bir Sprintin İptal Edilmesi

Bir Sprint zaman sınırına ulaşılmadan iptal edilebilir. Sadece Ürün Sahibi, Sprinti iptal etme yetkisine sahiptir. Ancak paydaşlar, Geliştirme Takımı veya Scrum Master, Ürün Sahibini bu kararı alması yönünde etkileyebilir.

Bir Sprint, Sprint Hedefine ulaşmak anlamını kaybettiğinde iptal edilebilir. Bu durum kurum yön değiştirdiğinde veya pazar ve teknoloji koşulları değiştiğinde söz konusu olabilir. Genel olarak, bir Sprint mevcut koşullarda artık bir anlam ifade etmiyorsa iptal edilmelidir. Fakat Sprintler kısa süreli olduğu için iptal kararı nadiren bir anlam ifade eder.

Bir Sprint iptal edildiğinde, bitirilen ve “Bitti” durumundaki Ürün İş Listesi kalemleri gözden geçirilir. Eğer işin bir kısmı yayın potansiyeline sahipse, Ürün Sahibi bunu genellikle kabul eder. Bitmemiş tüm kalemler yeniden tahmin edilerek Ürün İş Listesine geri konulur. Bu maddeler üzerinde yapılan çalışmalar hızla değer kaybeder ve sıkça yeniden tahmin edilmelidir.

Herkesin yeni bir Sprinti başlatmak üzere bir Sprint Planlama toplantısı daha yapması gerektiğinden Sprint iptalleri kaynak tüketir. Sprint iptalleri çoğunlukla Scrum Takımı için sarsıcıdır ve nadiren gerçekleşir.

Kaynak: Scrum Kılavuzu

Scrum ile ilgili geçmiş yazılara ulaşmak için tıklayınız.

13 Temmuz 2017 Perşembe

Scrum Etkinlikleri: Sprint Nedir?

Scrum Etkinlikleri: Sprint

Bir ay veya daha az zaman sınırı olan, içerisinde “Bitti” durumunda, kullanılabilir ve potansiyel olarak yayınlanabilir bir Ürün Parçasının oluşturulduğu Sprint, Scrumın kalbidir. Baştan sona bir geliştirme çalışması boyunca Sprintlerin süresi sabittir. Önceki Sprint biter bitmez yeni Sprint başlar.

Sprintler; Sprint Planlama, Günlük Scrumlar, geliştirme işi, Sprint Değerlendirme ve Sprint Retrospektifinden oluşur.

Sprint boyunca:
  • Sprint Hedefini tehlikeye sokacak hiçbir değişiklik yapılmaz,
  • Kalite hedefleri düşmez,
  • Daha fazla bilgi edindikçe Ürün Sahibi ve Geliştirme Takımı arasında kapsam netleştirilebilir ve yeniden müzakere edilebilir.
Her bir Sprint bir aydan uzun bir ömrü olmayan bir proje olarak düşünülebilir. Projeler gibi Sprintler de bir şeyi başarmak için kullanılır. Her bir Sprintin, neyin üretileceğine ilişkin bir tanımı, üretime rehberlik edecek bir tasarımı ve esnek bir planı, işin kendisi ve sonuçta ortaya çıkacak olan ürünü vardır.

Sprintler bir takvim ayıyla sınırlıdır. Sprintin süresi çok uzun olursa üretilecek şeyin tanımı değişebilir, karmaşıklık ve risk artabilir. Sprintler, en az bir takvim ayında bir, Sprint Hedefine doğru ilerleyişi gözlemlemeyi ve adapte etmeyi temin ederek öngörülebilirliği mümkün kılar. Ayrıca Sprintler riski bir takvim ayının maliyetiyle sınırlar.

Kaynak: Scrum Kılavuzu

Scrum ile ilgili geçmiş yazılara ulaşmak için tıklayınız.

12 Temmuz 2017 Çarşamba

C# Sorusu: Delege (Delegate), Olay (Event) ve Metot (Method)

Facebook üzerinde cevapladığım bir soruyu başkalarına da faydalı olabileceğini düşünerek burada da paylaşıyorum.

SORU:
İkisi arasındaki fark nedir?
> MyEvent += new MyDel(MyMethod);
> MyEvent += MyMethod;

CEVAP:
C# dilinde bu iki kullanım arasında fark yok.

İlk kullanım, nizami bir kullanım şeklidir. Metodu temsil edecek bir delege örnekleniyor ve olaya bağlanıyor.

Alttaki yazım şekli ile de aynı şeyi yapıyoruz. Bu kullanım derleyici tarafından üstteki gibi derlenecektir. Bir nevi kısa yazım şekli gibi düşünülebilir. Olayda kullanılan delegenin imzası ile olaya bağlanmak istenen metodun imzası aynı olduğu sürece derleyici delegeyi örnekleyecek şekilde işlem yapılmasını sağlayacaktır.

Yani; ikinci kullanım, daha az tuş basımı, daha sade, daha anlaşılır ve rahat okunabilir bir kod yazımı sağlayarak aynı işlevselliği sunuyor.

11 Temmuz 2017 Salı

Scrum ve Agile Aynı Şey Değildir! Ne Fark Var?

Scrum ve Agile arasındaki benzerlik ve farkı doğru şekilde tanımlamak için öncelikle Agile nedir bunu bilmek gerekiyor.

Agile

Agile, değişime hızlı ve etkin bir şekilde uyum sağlama yeteneği, kapasitesi ve esnekliğidir.
Agile Manifesto bu şekilde tanımlıyor Agile'ı.

Nedir bu Agile Manifesto? Temel olarak ne anlatır?

Agile Manifesto, yazılım geliştirme projelerinin geliştirme sürecinde;
bireyler ve bireyler arasındaki ilişkilerin, süreçler ve kullanılan araçlardan,
çalışan bir yazılımın, kapsamlı bir dokümantasyondan,
müşteri ile iş birliği içerisinde olmanın, sözleşme pazarlığı yapmaktan,
değişime cevap vermenin, bir planı takip etmekten daha önemli olduğunu söylüyor.

Scrum ve Agile

Agile tanımını yaptıktan sonra, Scrum'dan bahsedelim. Scrum, Agile yaklaşımlardan birisidir. Pek çok Agile yaklaşım bulunuyor. Fakat, Scrum günümüzde en çok kullanılan Agile yaklaşımıdır diyebiliriz.

Diğer yaklaşımlara ismen değinmek gerekirse, Extreme Programming (XP), Dynamic Systems Development Method (DSDM), Feature-Driven Development (FDD), Lean, DevOps, Kanban var. Bu yaklaşımların tamamı Agile Manifesto altında işleyen ve Agile değerlerine bağlı yaklaşımlardır.

Scrum ile ilgili geçmiş yazılara ulaşmak için tıklayınız.

10 Temmuz 2017 Pazartesi

Scrum Etkinlikleri (Scrum Events) Nelerdir? Amaçları Nedir?

Scrum Etkinlikleri (Scrum Events)

Scrum Etkinlikleri aşağıda maddeler halinde sıralanmıştır;

  • Sprint
  • Sprint Planlama (Sprint Planning)
  • Günlük Scrum (Daily Scrum)
  • Sprint Değerlendirme (Sprint Review)
  • Sprint Retrospektifi (Sprint Retrospective)

Scrum etkinlikleri, Scrumda tanımlı olmayan toplantı ihtiyacını asgari seviyeye düşürmek ve düzenlilik sağlamak için kullanılır. Tüm etkinlikler, her bir etkinliğin azami süresi olacak şekilde zaman sınırlıdır (time-boxed). Bir Sprint başladığında, süresi sabittir; kısaltılamaz veya uzatılamaz. Diğer etkinlikler, amaçlarına ulaşıldığında son bulur ve böylece süreçte israfa meydan vermeyecek şekilde uygun bir zamanın harcanması sağlanır.

Sprintin yanı sıra içinde barındırdığı diğer etkinlikler de gözlem ve adaptasyon için resmî birer fırsattır. Bu etkinlikler, büyük öneme sahip olan şeffaflığı ve gözlemi mümkün kılmak için özel olarak tasarlanmıştır. Bu etkinliklerin birini bile kullanmamak, şeffaflığı azaltır; gözlem ve adaptasyon için bir fırsatın kaybedilmesi anlamına gelir.

Kaynak: Scrum Kılavuzu

Scrum ile ilgili geçmiş yazılara ulaşmak için tıklayınız.

8 Temmuz 2017 Cumartesi

TypeScript Giriş Dersinden Ders Notları

TypeScript Giriş Dersinden Ders Notları

TypeScript kullanarak yazdığımız kodlar;
TypeScript ile yazılan kodların JavaScript karşılıkları;

7 Temmuz 2017 Cuma

Scrum Master'ın Organizasyona Hizmetleri Nelerdir?

Scrum Master'ın Organizasyona Hizmetleri

Scrum Master, aşağıdaki hususları içerecek şekilde farklı yollarla organizasyona hizmet eder:

  • Organizasyona Scrumı benimsemesinde liderlik ve koçluk etmek
  • Organizasyondaki Scrum uygulamalarını planlamak
  • Çalışanlara ve paydaşlara Scrumı ve deneysel ürün geliştirmeyi anlamalarında ve uygulamalarında yardım etmek
  • Scrum Takımının üretkenliğini artıracak değişimi başlatmak
  • Organizasyondaki Scrum uygulamalarının etkililiğini artırmak üzere diğer Scrum Masterlarla birlikte çalışmak

Kaynak: Scrum Kılavuzu

6 Temmuz 2017 Perşembe

Scrum Master'ın Geliştirme Takımına Hizmetleri Nelerdir?

Scrum Master'ın Geliştirme Takımına Hizmetleri

Scrum Master, aşağıdaki hususları içerecek şekilde farklı yollarla Geliştirme Takımına hizmet eder:

  • Geliştirme Takımına kendini yönetme ve çapraz fonksiyonluluk konularında koçluk etmek
  • Geliştirme Takımına yüksek değerli ürünleri oluşturmasında yardım etmek
  • Geliştirme Takımının ilerlemesine engel oluşturan unsurları ortadan kaldırmak
  • İhtiyaç duyulduğu veya istendiği takdirde Scrum etkinliklerini yönetmek
  • Scrumın henüz tam olarak benimsenmediği ve anlaşılmadığı organizasyonlarda Geliştirme Takımına koçluk etmek
Kaynak: Scrum Kılavuzu

Visual Studio Code (VSCode) ile Kod Satırlarını Formatlamak

SORU: Visual Studio içerisinde yazdığımız kodları formatlamak için CTRL + K + D ya da CTRL + K + F kısayollarını kullanıyorduk. Visual Studio Code ile çalışırken hangi tuş kombinasyonu ile bu işi gerçekleştirebiliriz?

CEVAP:
Windows İşletim Sistemi üzerinde SHIFT + ALT + F tuş kombinasyonu kullanılabilir.
MAC için SHIFT + Option + F
Ubuntu Linux için ise CTRL + SHIFT + I
Ayrıca; kodları yazdığımız alana sağ tıklayıp, menüden "Format Document" seçeneğini seçerek de dokümanımızı formatlayabiliriz.

Visual Studio Code içerisinde herhangi bir işlem için kısayol tuşlarını bulmak isterseniz;
Windows için CTRL + SHIFT + P,
MAC için Command + SHIFT + P tuş kombinasyonlarını kullanarak arama penceresini açabilirsiniz.
Bu pencerede örneğin; "format document" yazarak arama yapabilir ve kısayol tuş kombinasyonlarını öğrenebilirsiniz.

Neden fare yerine kısayol tuşları tercih edilir?
Fare kullanımı, klavye ile çalışan kişiyi yavaşlatacaktır. Klavye üzerinde 2 eli kullanarak kod yazarken, ellerden birini kaldır, fareyi kod alanına götür, fareye tıkla, menü öğesine doğru hareket ettir, tekrar tıkla, fareyi ekrandan çek, yazdığın kod satırına geri dön. Bu süreçte acı çekmektense klavye kısayolu bana daha kolay geliyor.

Ama Photoshop gibi bir elin zaten fare üzerinde olduğu ortamlarda yapılacak işin kolaylığı ya da zorluğuna göre bazen fare, bazen de klavye kısayolları tercih ediyorum.

5 Temmuz 2017 Çarşamba

Scrum Master'ın Ürün Sahibine Hizmetleri Nelerdir?

Scrum Master'ın Ürün Sahibine Hizmeti

Scrum Master, aşağıdaki hususları içerecek şekilde farklı yollarla Ürün Sahibine hizmet eder:

  • Ürün İş Listesini etkili bir şekilde yönetebilmesi için teknikler bulmak
  • Scrum Takımına, anlaşılır ve kısa Ürün İş Listesi kalemlerine ihtiyaç olduğunu anlamalarında yardımcı olmak
  • Deneysel bir ortamda ürün planlamayı anlamak
  • Ürün Sahibinin değeri en üst seviyeye çıkarması için Ürün İş Listesini nasıl düzenleyeceğini bilmesini sağlamak
  • Çevikliği anlamak ve uygulamak
  • İhtiyaç duyulduğu veya istendiği takdirde Scrum etkinliklerini yönetmek

Kaynak: Scrum Kılavuzu

4 Temmuz 2017 Salı

Scrum Takımında Scrum Master Kimdir? Ne İş Yapar?

Scrum Master, Scrumın anlaşılmasını ve uygulanmasını temin etmekle sorumludur. Scrum Masterlar bu sorumluluklarını Scrum Takımının Scrum teorisine, pratiklerine ve kurallarına uyulmasını sağlayarak yerine getirir.

  • Scrum Master, Scrum Takımı için bir hizmetkâr liderdir.
  • Scrum Master, Scrum Takımıyla olan hangi etkileşimlerinin faydalı olup olmadığını anlamaları konusunda başkalarına yardım eder.
  • Scrum Master, Scrum Takımınca üretilen değerin en üst seviyeye çıkması için herkese bu etkileşimleri değiştirmelerinde yardımcı olur. 

Kaynak: Scrum Kılavuzu

Scrum Master hizmetkardır. Scrum Masterın, Ürün Sahibine, Geliştirme Takımına ve Organizasyona hizmetleri olur. Bu hizmetlerle ilgili bilgiler bir sonraki yazıda geliyor olacak...

3 Temmuz 2017 Pazartesi

Scrum Geliştirme Takımı Kaç Kişiden Oluşmalıdır? Büyüklüğü Ne Olmalıdır?

Scrum Geliştirme Takımının Büyüklüğü Ne Olmalıdır?

En uygun Scrum Geliştirme Takımı büyüklüğü, hızlı davranabilecek kadar küçük ve bir Sprintte anlamlı bir işi bitirebilecek kadar büyük olmalıdır. Üçten az takım üyesi etkileşimi azaltır ve üretkenlik artışını sınırlar. Küçük takımlar, Sprint boyunca beceri kısıtlarıyla karşılaşarak potansiyel olarak yayınlanabilir bir Ürün Parçası teslim etmekte başarısız olabilir. Dokuzdan fazla üyesi olan bir takım ise çok fazla koordinasyona ihtiyaç duyar. Büyük Geliştirme Takımları deneysel bir süreçte yönetilebilecekten daha fazla karmaşıklığa neden olur. Ürün Sahibi ve Scrum Master, Sprint İş Listesindeki işi yapmadıkları sürece bu sayıya dâhil değildir.

Kaynak: Scrum Kılavuzu

2 Temmuz 2017 Pazar

Scrum Geliştirme Takımı (Development Team) Kimlerdir? Ne İş Yaparlar?

Scrum Geliştirme Takımı, her bir Sprintin (iterasyon) sonunda ürünün “Bitti” tanımına uyan ve potansiyel olarak yayınlanabilir (releasable) 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. Ortaya çıkan sinerji, Geliştirme Takımının toplam verimliliğini ve etkililiğini en üst seviyeye çıkarır.

Geliştirme Takımlarının özellikleri şunlardır:

  • Kendi kendilerini yönetirler. Hiç kimse (Scrum Master dahi) Geliştirme Takımına Ürün İş Listesini potansiyel olarak yayınlanabilir Ürün Parçalarına nasıl dönüştüreceğini söyleyemez.
  • Geliştirme Takımları çapraz fonksiyonludur; bir Ürün Parçası oluşturmak için gerekli tüm becerilere sahiptir.
  • Scrum, Geliştirme Takımı üyeleri için Geliştiriciden başka hiçbir unvanı tanımaz; kişinin ne iş yaptığına bakılmaz ve bunun hiçbir istisnası yoktur.
  • 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.
  • Geliştirme Takımı üyelerinin uzmanlaştıkları belli beceriler veya odak alanları olabilir fakat sorumlu olan her zaman Geliştirme Takımıdır. 

Kaynak: Scrum Kılavuzu

1 Temmuz 2017 Cumartesi

Scrum Takımında Ürün Sahibi (Product Owner) Kimdir? Ne İş Yapar?

Scrum takımında Ürün Sahibi, 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 İş Listesini (Product Backlog) yönetmekle sorumlu olan tek kişidir. Ürün İş Listesi yönetimi şunları içerir:

  • Ürün İş Listesi kalemlerini açıkça ifade etmek
  • Ürün İş 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 İş 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ının Ürün İş Listesindeki kalemleri gerektiği kadar anlamasını temin etmek.

Ürün Sahibi, yukarıdaki işleri kendisi yapabilir veya Geliştirme Takımına yaptırabilir. Ancak sorumluluk her zaman Ürün Sahibindedir.

Ürün Sahibi bir kişidir; bir komite olamaz. Ürün Sahibi, bir komitenin isteklerini Ürün İş Listesine yansıtabilir fakat Ürün İş Listesindeki kalemlerin önceliğini değiştirmek isteyen her kimse Ürün Sahibine başvurmalıdır.

Ürün Sahibinin başarılı olabilmesi için kararlarının organizasyondaki herkesten saygı görmesi esastır. Ürün Sahibinin kararlarını görmek isteyenler Ürün İş Listesinin içeriğine ve sıralamasına bakabilir. Başka hiçbir kimse Geliştirme Takımına farklı bir iş listesi üzerinde çalışmasını söyleyemez. Geliştirme Takımının başka bir kimseden iş alma izni yoktur.

Kaynak: Scrum Kılavuzu