Bu sunum, 23 Mart 2013 tarihinde Dinamikler 2013 Proje Yönetim Kongresi Agile Panelinde yaptığım konuşmanın yansılarından oluşuyor.
http://www.dinamikler.org/sunum5.asp
Konuşmamın ana fikri şöyle özetlenebilir:
Her yıl geliştirilen yazılım projelerinin yarısı çöpe gidiyor. Birçok şirket, uzayan, bitmeyen, kalitesiz projeler nedeniyle yüklü miktarda para kaybediyor. Her projede projenin kapsamı, donanımsal ve yazılımsal gereksinimler, projenin kaç kişi ile geliştirileceği, projenin kaç adam gün süreceği ve ne kadar bütçe ayrılacağı gibi sorular için cevap aranırken çoğu kez bir şey gözden kaçıyor: Yazılımın doğası.
Yazılımın doğası gereği kaynaklar kısıtlı ve gereksinimler belirsizdir. Belirsizlik ve kısıtlı kaynaklarla başadebilmenin tek yolu oyunu onun kurallarıyla oynamaktır. Değişken gereksinimleri kısıtlı kaynaklarla belirlenen süre zarfında bitirebilmek, yani daha azla daha çok şey başarmak için, çevik olmak, kaliteli yazılım geliştirmek, belirsizliğe değişimle anında cevap vermek gerekir.
Yazılım geliştirmek, özellikle de takım halinde yazılım geliştirmek belli bir disipline sahip olmayı gerektirir. Hızla değişen teknolojilere, belirsiz gereksinimlere, projelerin türlü ihtiyaçlarına ayak uydururken, kalıcı, dayanıklı, esnek ve kaliteli yazılım geliştirmek için elinizde size yol gösterecek tek şey yazılım ilkeleridir. Yazılım ilkeleri sizin ve takımınızın kültürdür, disiplinidir.
Çevik yazılım geliştirme uygulamaları tam da bu noktada sahneye çıkar. Bu uygulamalar, projelerinizin başarıya ulaşabilmesi adına gereken yazılım kültürünün yapıtaşlarını oluşturur. Bu oturumda, başarılı projelerde yazılım kültürüne şekil veren çevik yazılım geliştirme uygulamalarından ve etkilerinden bahsedeceğim.
Teoriden Pratiğe Mikroservisler - Özgür Web Teknolojileri Günü 2014
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
1.
2. BAŞARILI PROJELERİn ANAHTARI
ÇevİK YAZILIM GELİŞTİRME PRATİKLERİ
Lemi Orhan Ergin
Principal Software Engineer / Yazılım Ustası
Sony Europe
3. HİÇ yazılım projenİz
Başarisiz oldu mu?
Projeyi zamanında yetistiremedik
,
Daha canlıya çıkamadan iptal ettik
Canlıda sürekli hata buluyorum
Mevcut yazılımı bastan yazmamız gerek
,
-
Proje uzadıkça uzadı, bitecek gibi degil
-
Yazılım istedigim gibi olmamıs ,
İstedigim özellikleri eklemiyorlar
Ufak özellikler için bile çok para istiyorlar
Bir kisi isten ayrıldı, proje çıkmaza girdi
,
-,
Yazılımı gelistiren takım sürekli degisiyor
,
Yazılım mimarisi çok eskiymis ,
- ,
Projenin basarısız olacagı asikardı aslında
,
Proje güzel giderken ne oldu da birden battı
5. karİyeRİm boyunca 11 büyük çaplı projede çalıştım
Kalıpçılık endüstrisi için B2B eticaret sitesi
IBM tabanlı ürün bilgisi yönetim sistemi
Avrupa için ürün bilgisi yönetim sistemi
Askeri belge yönetim sistemi
Tüm Avrupa ülkeleri için pazarlama siteleri
Tüm Avrupa siteleri için ortak araç çubuğu
Ana arkaplan bileşenleri, uygulamaları ve API'leri
Avrupa için ana veri servisleri
Avrupa için müşteriye özel veri servisleri
ABD ve Kanada için çekirdek veri servisleri
E-ticaret dikey ürün satış modulü
6. karİyeRİm boyunca 11 büyük çaplı projede çalıştım
6 tanesİ HİÇ CANLIYA ÇIKMADI/KAPANDI/KAPANACAK
Kalıpçılık endüstrisi için B2B eticaret sitesi
IBM tabanlı ürün bilgisi yönetim sistemi
Avrupa için ürün bilgisi yönetim sistemi
Askeri belge yönetim sistemi
Tüm Avrupa ülkeleri için pazarlama siteleri
Tüm Avrupa siteleri için ortak araç çubuğu
Ana arkaplan bileşenleri, uygulamaları ve API'leri
Avrupa için ana veri servisleri
Avrupa için müşteriye özel veri servisleri
ABD ve Kanada için çekirdek veri servisleri
E-ticaret dikey ürün satış modulü
7. BAŞARISIZLIK kaçınılmaz
ÇÜNKÜ BAŞARISIZ OLMAK İÇİN ÇOK NEDEN VAR
Bilinmeyen gereksinimler Basarısız takım çalısması
, , Tanrı yazılımcılar
-
Teknik bilgi eksikligi Yanlıs ürün gelistirme
, , Sürekli mesai ve verimsiz günler
Yanlıs tasarım ya da kodlama Yönetim zaafları
, Kaliteden verilen ödünler
Sorunları müsteriden gizleme Eksik belgeleme
, Sunucu ve altyapı sorunları
Test edilmeden gelistirme
, İletisim eksiklikleri
, Gereksiz özelliklere odaklanma
Canlıda çıkan hatalar Kullanılan yanlıs araçlar
, Yazılımı sadece kodlama sanmak
9. ÇEVİK YAZILIM GELİŞTİRME PRATİKLERİ
basarısı tecrübe ile sabit, dünyaca kabul görmüs,
, ,
basarılı sonuçlar elde eden yazılımlar gelistirmek için
, ,
-
gereken yazılım pratikleri toplulugudur
16. MüŞTERİ İLE DÜZENLİ OLARAK GÖZDEN GEÇİRİN
Proje kapsamını küçük parçalara bölün
Herseyi en bastan planlamaya kalkmayın
, ,
Kısa döngülerle yazılım gelistirin
,
17. EĞER
sistemi bozan yeni özellikler,
koda dokunmaktan korkan yazılımcılar,
ömrünü bitirmis projeler,
,
, -
nasıl çalıstıgı anlasılmayan kodlar,
,
son anda ortaya çıkan hatalar,
uzun test etme süreleri,
bitmeyen projeler
İSTEMİYORSANIZ
Test edİLEBİLİR KOD YAZIN
Yazılımı TDD İLE GELİŞTİRİN
Çok katmanda test edİN
18. Hata ÇÖZMEDEN ÖNCE MUTLAKA TEST YAZARAK HATAYI YENİDEN YARATIN
TESTİ YAZILMAMIŞ HATALAR BİR GÜN YENİDEN HORTLAR
24. ÇEVİK YAZILIM GELİŞTİRME PRATİKLERİ
Başarılı projeler gelİştİrmenİzİ sağlar
Müsteri ile düzenli olarak gözden geçirin.
,
Test edilebilir kod yazın, yazılımı TDD ile gelistirin, çok katmanlı test edin.
,
Kodu sürekli yeniden yapılandırın (refactoring)
Sürekli tümlestirme ile hataları anında farkedin (continuous integration)
,
Esli programlama yapın (pair programming)
,
Yazılan kodları takımca inceleyin (code review)
Temiz kod yazım kurallarına uyun (clean code)
Kod analizi araçları ile gizli hataları bulun (code analysis)
Kodunuzu versiyonlayın ve her fırsatta dallandırın (versioning & branching)
Kısa aralıklarla sürüm çıkın (short releases)
Ön tasarımı kısa tutun (short up-front design)
Yeteri kadar belgeleyin (agile documentation)
-
Bırakın çalısanlar is arkadaslarını egitsinler (internal trainings)
, ,
26. linkedin
@lemiorhan
blogger slideshare twitter
@lemiorhan
@lemiorhan
Lemİ orhan ergİn
agilistanbul.com lemiorhan@agilistanbul.com
Principal Software engineer / yazılım ustası
Sony europe