Şirket içerisinde Cenk Çivici‘den aldığımız Agile süreçler eğitiminde, bloga yazmak için aldığım notları paylaşmak istiyorum. Bazı şeyler hızlı geçtiği için not alamadım ama yazıların sonunda konuyla ilgili toparladığım linkleri de paylaşacağım.
Bunların eğitim veya konu anlatımı değil, sadece notlar olduğunu aklımızdan çıkarmayalım lütfen
Yazı serisi kaç parçadan oluşacak bilmiyorum ama kısaca,
- Agile süreçlere giriş ve quick start aşaması
- Süreçler
- Notlar
- OOP Principles & Design Patterns and Refactoring
- Test Driven Development
konularına kısaca değinmek istiyorum. Hadi başlayalım o zaman…
Agile
- Think big, Act small
- Fail fast, improve learn
Agile’ın olayı sürecin kendini döngü içerisinde adım adım dinamik olarak ayarlamasıdır. Sık release’ler yaparak değişimlere kolay ayak uydurmak önemlidir. Tasarımın değişime, gelişime açık olup, hataları çabuk ortaya çıkması gereklidir. Agile’ın temelinde, bir feedback döngüsüne girip sonuçlara göre süreçlerin ayarlanması yatar.
Süreçler panolarda asılı kartlarda, kartların ayrıntıları wikilerde tutulur.
TDD ve OOP principles agile süreçlerde olmazsa olmaz bir tekniklerdir. Bu tekniklerin bu kadar önemli olmasının nedeni, değişiklik maliyetinin (proje süreçlerinin her noktasında yapılacak değişiklikler) en aza indirilmesini sağlanmalarıdır.
DDD (domain driven design) gibi metodolojilerde kullanılabilir.
İlk aşamada satışçı projeyi satar, sonra quick start aşaması gelir.
Quick Start
Projenin başlangıcında 2-4 kişilik ekiplerle müşteriye gidilir. Bu ekipte,
- Tech lead
- Analyst
- Prototipleme uzmanı (hızlıca arayüz çıkartabilen bir kişi)
bulunur.
Project Deliverable list (İlk yapılacak şeyler):
- Projenin vizyonu : bu proje neden geliştiriliyor, kim kullanacak vs
- Ana story (özellik) listesi : Bu storyler INVEST presniplerine göre yazılır.
- As a “Role”
- I want “feature”
- So that “benefit”
- Stroy’ler kısa özelliklerdir. Daha büyüklerine epic denilir (Mesela, bir projede hem blog kısmı hem de cms kısmı olacak diyelim. Bu durumda blog özelliği epic, bunun içerisindeki comment ekleme, post gönderme gibi özellikler story olur). Storylerin olabildiğince bağımsız olması ve kısa yazılması gerekir.
- Mimari vizyon : Tech lead konu bazında bir kaç story seçerek (belirsizlik nerelerde görülüyorsa) ona göre bir mimari vizyon hazırlar.
- Release planı : Birtakım sorular sorularak (mesela featureların hepsi bitmesi gerekiyor mu, biraz sürede sarkma olsa önemli mi gibi) releaselerin nasıl olacağıyla ilgili planlama yapılır.
-
StoryID As A I want So that Estimate EBT-001 Admin X X M
-
- Dokümantasyon wiki sisteminde yapılır. Geliştirme süresi başlamadıkça o story kesinlikle detaylandırılmaz. Geliştirme aşamasına gelinceye kadar (veya ihtiyaç oluşunca) o story sadece bir iki cümleyle açıklanır. Bu da agile’in waterfall süreçlerden en önemli farkıdır.
- Release planında, müşterinin isteklerine göre, hangi aralıklarla teslimler yapılacak ve teslim planı ne gibi sorulara cevap aranır. Agile’ın olayı sık sık release yapmaktır.
- Estimate tahminleri büyüklük tahminleri şeklinde olur (t-shirt sizeları, fibonacchi sayıları gibi dizilimler kullanılır. Mesela S,M,L,XL gibi). Daha sonra iterasyonlar içinde detaylı estimate yapılırken artık gün (0.5 ve katları) şeklinde estimate verilir. Eğer estimate verilmesinde bir sorun olan kart varsa onun için bir altyapı çalışması istenilebilir.
- Proje süresi hesaplanırken, estimateler verilirken, sizelara en iyi ve en kötü süreler verilir (mesela S bir iş, en iyi ihtimalle 0.5 en kötü ihtimalle 1.5 gün sürer gibi). Bu durumda proje süresinin en iyi ve en kötü tahmin süresi çıkartılır ve istenirse üzerine buffer konulabilir.
- Agile süreçlerde proje süreleride projenin diğer elementleri gibi dinamik şekildedir.
- Agile’ın sunduğu en önemli şey, deadline geldiğinde elinizde kesinlikle çalışan (her feature olmasa bile) kaliteli bir kod bulunmasıdır.
Ekler
- http://en.wikipedia.org/wiki/Agile_software_development
- http://en.wikipedia.org/wiki/Agile
- http://e-bergi.com/2008/Ekim/Cevik-Modelleme-ve-Cevik-Yazilim-Gelistirme
- Prime Teknoloji Agile’a Giriş Belgesi (pdf)
- http://www.minepla.net/2008/10/agilecevik-yazylym-gelithtirme/
- http://www.agileturkey.org/Index.aspx
- http://www.sulc3.com/model.html
- http://blog.emrahkahraman.com.tr/category/cevik-yazilim/
