Your SlideShare is downloading. ×
’suzYazılım Gelİştİrme teknİklerİGDO{ doğasına uygun yazılım geliştirme sanatı }Lemİ Orhan ERGİNPrincipal Software Enginee...
Lemİ Orhan Ergİnyılından bu yana Sony’de Yazılım Ustasıyılından bu yana Tüsside, BYM,GittiGidiyor/eBay ve Sony’de yazılımc...
oldu mu?BAŞARISIZHiç yazılım projeniz
Projeyi yetiştiremedik, ek süre istiyoruzYetiştirmemiz imkansız, ama söz verdik bir kereDaha canlıya çıkmadan iptal ediyor...
İstenen özellikleri eklemek çok maliyetliBir kişi ayrıldı proje çıkmaza girdiGeliştiren takımda çalışanlar sürekli değişiy...
11Kariyerimboyuncabüyük çaplı projedeyazılım geliştirdim
Kalıpçılık endüstrisi için B2B eticaret sitesiIBM tabanlı ürün bilgisi yönetim sistemiAvrupa için ürün bilgisi yönetim sis...
Kalıpçılık endüstrisi için B2B eticaret sitesiIBM tabanlı ürün bilgisi yönetim sistemiAvrupa için ürün bilgisi yönetim sis...
BAŞARISIZyazılım Projelerİ“Türkiyedeki projelerin %50si çöpe gidiyor”Agile Turkeymercer consulting“Gerçek masraflar eklendi...
neden?
neden varçokaslında başarısızolmak için
ŞİRKETPOLİTİKALARIkiminin nedenielimizden pek bir sey gelmiyor,
yazılımındoğasınaaykırıdavranmakancak genelininnedeni sadece
GÜNDEMYazılımın DoğasıYazılımın Doğalı: ÇeviklikÇevik Yazılım Geliştirme Pratikleri
Yazılımındoğasıve 9 ana kuralı
Nİhaİ hedefmüşterİ memnunİyetİdİr1Müşterinin talep ettiği yazılımdaistediği özelliklere hızlı bir şekildesahip olma hakkı ...
MÜŞTERİ ÇOĞU KEZNE İSTEDİĞİNDENEMİN DEĞİLDİR2
Yazılım sürecİNİN HER ANINDABelİRSİZLİKmevcuttur3
Gereksİnİmlerdaİma değİşİr4Başlangıç NoktasıBitiş Noktası213
Yazılım sadeceDeğİLDİR5Programlama
Yazılımın süreklİBakımının yapılmasıgereKİR6
Yazılım gelİŞTİRMEsosyal bİR AKTİVİTEDİRsosyalleşmeyİ gerektİRİR7
EN BAŞTA YAPILANDETAYLI Efor TahmİNİANLAMSIZDIR8
TOPLAM MALİYETİ ARTTIRIR9 KALİTEDEN ÖDÜN VERMEK
ÇevİKLİKkavramıyazılımın doğasına uygun yazılım geliştirmeyikolaylaştırmak için vardır
GÜNDEMYazılımın DoğasıYazılımın Doğalı: ÇeviklikÇevik Yazılım Geliştirme Pratikleri
ÇevİKLİKnedİR?
ÇevİKLİKDeğİŞİME HIZLACEVAP VERMEKTİRbir güncellemeyi ya da yeni bir özelliği canlıya hızla çıkabilmektir
ÇevİKLİKEVRİMLEŞTİREREKtasarlamak vegeLİŞTİRMEKTİRyaptıklarınızı güncellemek zorunda kalacağınızıönceden kabul etmektir
ÇevİK yazılım geLİŞTİRME SADECEPROJE PLANLAMASIndaN İBARET DEĞİLDİRProje planlaması çevik yazılım geliştirmenin bir bölümü...
ÇevİK yazılım geLİŞTİRMEProje planlama ve yönetimiYazılım geliştirme pratikleriMüşteri memnuniyetiTakım çalışmasıMotivasyo...
GÜNDEMYazılımın DoğasıYazılımın Doğalı: ÇeviklikÇevik Yazılım Geliştirme Pratikleri
EN DOĞRU TASARımıEN İYİ teknolojİLER İLEEN KISA ZAMANDAbitirmek isteriz
Ancak her zamankaynaklı sorunlarla karşılaşırızİNSAN
HIZLI GERİBİLDİRİMÇevik yöntemler ve yalınlık şunlara odaklanır:YAVAŞ GERİBİLDİRİMİ HIZLANDIRMAK
HIZLI GERİBİLDİRİMÇevik yöntemler ve yalınlık şunlara odaklanır:YAVAŞ GERİBİLDİRİMİ HIZLANDIRMAKBİR PROJEYİÇEVİK Pratİkler...
Çalışanlarınızı “kaynak”tan ziyade birer “yetenek” olarak görün (No headcount calculation)Bilgi ve tecrübeyi paylaşmaktan ...
YazılımGelişticiFarklı görevlerden insanlarla takım oluşturun (Cross functional teams)Takım elemanları olarak birbirinize ...
SürümKontrolSistemiYazılımGelişticiİş AnalistiTestMühendisiYazılan kodu mutlaka sürüm kontrol sisteminde tutun (Version Co...
Mesajlaşma Servisleri (eposta, mesaj)SürekliBütünleştirmeSürümKontrolSistemiHer gün en az bir kere başkalarının komitlerin...
Paket/Sürüm DeposuMesajlaşma Servisleri (eposta, mesaj)SürekliDağıtımSürümKontrolSistemiYazılımGelişticiİş AnalistiTestMüh...
DEV TEST & QA STAGING PRODYazılımcıların deney yapabileceği, uygulamayı test edebileceği bir ortam kurun (DEV)Performans v...
Paket/Sürüm DeposuMesajlaşma Servisleri (eposta, mesaj)SürümKontrolSistemiYazılımGelişticiİş AnalistiTestMühendisiKısa ara...
YazılımGelişticiİş AnalistiTestMühendisiBulut sistemleri bahsedilen çoğu yöntemi kullanmaya zorlar.Bulut üstünde uygulama ...
eXtreme Programming pratikleri olmadan çevik olmaktan sözetmekanlamsızdır. XP ise ancak tutkulu yazılımcılar ile başarılır...
Kullanılan ResİMLERhttp://www.flickr.com/photos/emmanuelecontini/2558211856http://www.flickr.com/photos/thecampbells/5103649...
Lemİ orhan ergİnlemiorhan@agilistanbul.com@lemiorhan@lemiorhanagilistanbul.com@lemiorhanLINKEDINTWITTERSLIDESHAREBLOGPrinc...
Upcoming SlideShare
Loading in...5
×

GDO'suz Yazılım Geliştirme Teknikleri

1,601

Published on

13 Haziran 2013'de Ankara'da gerçekleştirilen, Agile Turkey'in organize ettiği "Agile Talks" seminerindeki sunumum

Published in: Education
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,601
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Transcript of "GDO'suz Yazılım Geliştirme Teknikleri"

  1. 1. ’suzYazılım Gelİştİrme teknİklerİGDO{ doğasına uygun yazılım geliştirme sanatı }Lemİ Orhan ERGİNPrincipal Software Engineer @ Sony@lemiorhan
  2. 2. Lemİ Orhan Ergİnyılından bu yana Sony’de Yazılım Ustasıyılından bu yana Tüsside, BYM,GittiGidiyor/eBay ve Sony’de yazılımcı,takım lideri, teknik koordinatör ve SMyılında Jim Coplien tarafından CSMsertifikasıseneden fazla Scrum Master’lıksprint ve Scrum takımlarında ScrumMaster ve takım elemanı olarak 4 senedönüsüm, yazılım takımlarında veorganizasyonlarda çevik kültür insaasıkonularında deneyim200120122009156agile,,@lemiorhan
  3. 3. oldu mu?BAŞARISIZHiç yazılım projeniz
  4. 4. Projeyi yetiştiremedik, ek süre istiyoruzYetiştirmemiz imkansız, ama söz verdik bir kereDaha canlıya çıkmadan iptal ediyoruzCanlıda sürekli hatalarla karşılaşıyoruzMevcut yazılımı baştan yazmamız gerekProje uzadıkça uzadı, bitecek gibi de görünmüyorProjenin başarısız olacağı aşikardı aslındaProje güzel giderken ne oldu da birden battı“”Proje yönetİMİ / Takım
  5. 5. İstenen özellikleri eklemek çok maliyetliBir kişi ayrıldı proje çıkmaza girdiGeliştiren takımda çalışanlar sürekli değişiyorYazılımın mimarisi ve teknolojisi çok eskiBir hata çözüyorum yeni hatalar oluşuyorBazı modüllere yıllardır kimse dokunmamışHata çözmekten yeni özellik ekleyemiyorumAynı manuel testleri defalarca kez tekrarlıyoruz“”Yazılım gelİŞTİRİCİ
  6. 6. 11Kariyerimboyuncabüyük çaplı projedeyazılım geliştirdim
  7. 7. Kalıpçılık endüstrisi için B2B eticaret sitesiIBM tabanlı ürün bilgisi yönetim sistemiAvrupa için ürün bilgisi yönetim sistemiAskeri belge yönetim sistemiTüm Avrupa ülkeleri için pazarlama siteleriTüm Avrupa siteleri için ortak araç çubuğuAna arkaplan bileşenleri, uygulamaları ve APIleriAvrupa için ana veri servisleriAvrupa için müşteriye özel veri servisleriABD ve Kanada için çekirdek veri servisleriE-ticaret dikey ürün satış modulüHer bİRİEN AZ 6 AYLIKPROJELERDİ
  8. 8. Kalıpçılık endüstrisi için B2B eticaret sitesiIBM tabanlı ürün bilgisi yönetim sistemiAvrupa için ürün bilgisi yönetim sistemiAskeri belge yönetim sistemiTüm Avrupa ülkeleri için pazarlama siteleriTüm Avrupa siteleri için ortak araç çubuğuAna arkaplan bileşenleri, uygulamaları ve APIleriAvrupa için ana veri servisleriAvrupa için müşteriye özel veri servisleriABD ve Kanada için çekirdek veri servisleriE-ticaret dikey ürün satış modulü6 tanesİYa hİç canlıya çıkmadıya kapandıya kapanacak%55
  9. 9. BAŞARISIZyazılım Projelerİ“Türkiyedeki projelerin %50si çöpe gidiyor”Agile Turkeymercer consulting“Gerçek masraflar eklendiğinde dünyadateknoloji projelerinin %80’i zarar ediyor”
  10. 10. neden?
  11. 11. neden varçokaslında başarısızolmak için
  12. 12. ŞİRKETPOLİTİKALARIkiminin nedenielimizden pek bir sey gelmiyor,
  13. 13. yazılımındoğasınaaykırıdavranmakancak genelininnedeni sadece
  14. 14. GÜNDEMYazılımın DoğasıYazılımın Doğalı: ÇeviklikÇevik Yazılım Geliştirme Pratikleri
  15. 15. Yazılımındoğasıve 9 ana kuralı
  16. 16. Nİhaİ hedefmüşterİ memnunİyetİdİr1Müşterinin talep ettiği yazılımdaistediği özelliklere hızlı bir şekildesahip olma hakkı vardırtabi müsterinizin bu kadar mutluetmeyi basaramayabilirsiniz,,
  17. 17. MÜŞTERİ ÇOĞU KEZNE İSTEDİĞİNDENEMİN DEĞİLDİR2
  18. 18. Yazılım sürecİNİN HER ANINDABelİRSİZLİKmevcuttur3
  19. 19. Gereksİnİmlerdaİma değİşİr4Başlangıç NoktasıBitiş Noktası213
  20. 20. Yazılım sadeceDeğİLDİR5Programlama
  21. 21. Yazılımın süreklİBakımının yapılmasıgereKİR6
  22. 22. Yazılım gelİŞTİRMEsosyal bİR AKTİVİTEDİRsosyalleşmeyİ gerektİRİR7
  23. 23. EN BAŞTA YAPILANDETAYLI Efor TahmİNİANLAMSIZDIR8
  24. 24. TOPLAM MALİYETİ ARTTIRIR9 KALİTEDEN ÖDÜN VERMEK
  25. 25. ÇevİKLİKkavramıyazılımın doğasına uygun yazılım geliştirmeyikolaylaştırmak için vardır
  26. 26. GÜNDEMYazılımın DoğasıYazılımın Doğalı: ÇeviklikÇevik Yazılım Geliştirme Pratikleri
  27. 27. ÇevİKLİKnedİR?
  28. 28. ÇevİKLİKDeğİŞİME HIZLACEVAP VERMEKTİRbir güncellemeyi ya da yeni bir özelliği canlıya hızla çıkabilmektir
  29. 29. ÇevİKLİKEVRİMLEŞTİREREKtasarlamak vegeLİŞTİRMEKTİRyaptıklarınızı güncellemek zorunda kalacağınızıönceden kabul etmektir
  30. 30. ÇevİK yazılım geLİŞTİRME SADECEPROJE PLANLAMASIndaN İBARET DEĞİLDİRProje planlaması çevik yazılım geliştirmenin bir bölümüdür
  31. 31. ÇevİK yazılım geLİŞTİRMEProje planlama ve yönetimiYazılım geliştirme pratikleriMüşteri memnuniyetiTakım çalışmasıMotivasyonBiz burası üzerinde duracagız,-
  32. 32. GÜNDEMYazılımın DoğasıYazılımın Doğalı: ÇeviklikÇevik Yazılım Geliştirme Pratikleri
  33. 33. EN DOĞRU TASARımıEN İYİ teknolojİLER İLEEN KISA ZAMANDAbitirmek isteriz
  34. 34. Ancak her zamankaynaklı sorunlarla karşılaşırızİNSAN
  35. 35. HIZLI GERİBİLDİRİMÇevik yöntemler ve yalınlık şunlara odaklanır:YAVAŞ GERİBİLDİRİMİ HIZLANDIRMAK
  36. 36. HIZLI GERİBİLDİRİMÇevik yöntemler ve yalınlık şunlara odaklanır:YAVAŞ GERİBİLDİRİMİ HIZLANDIRMAKBİR PROJEYİÇEVİK PratİklerKULLANARAK GELİŞTİRELİM
  37. 37. Çalışanlarınızı “kaynak”tan ziyade birer “yetenek” olarak görün (No headcount calculation)Bilgi ve tecrübeyi paylaşmaktan zevk alan kişilerle çalışın (Collaborative & Volunteer)Çevik yöntemler ve pratikler hakkında eğitim verin (Up-Front Education)Takımda tutkulu ve disiplinli yazılımcılar bulundurun (Passionate Developer)En iyi teknolojiyi değil, en ucuza değişiklik yapabileceğiniz teknolojileri seçin.Proje ÖncesİYazılım Gelişticiİş AnalistiTest MühendisiÜrün Sahibi
  38. 38. YazılımGelişticiFarklı görevlerden insanlarla takım oluşturun (Cross functional teams)Takım elemanları olarak birbirinize yakın oturun (Sitting CLOSE)İlk önce, geribildirim alabileceğiniz asgari özellikleri yazın (Minimum Viable Product)Müşteriye değer katacak özelliklere odaklanın (Prioritization)Proje öncesi uzun detaylı tasarımdan kaçının (Short Up-Front Design)Detaylı belgeleme yerine yeteri kadar belge oluşturun (Agile Documentation)Çevik olabilmeniz için gerekli teknik altyapıyı kurunProjeye Hazırlıkİş AnalistiTestMühendisi
  39. 39. SürümKontrolSistemiYazılımGelişticiİş AnalistiTestMühendisiYazılan kodu mutlaka sürüm kontrol sisteminde tutun (Version Control System)Eşli programlama yapın (Pair Programming)Başkalarının yazdığı kodu gözden geçirin (Code/Peer Review)Yeni her geliştirmeyi farklı bir dalda yapın (Code Branching)Temiz kod prensiplerini takip edin (Clean Code Principles)Teknik yetenekleri geliştirebilmek için düzenli kod kataları yapın (Code Kata)Tasarım şablonları yanında, mimari ve deyimsel şablonları da kullanın (Idiomatic Patterns)BDD ile müşteri gözünden tasarlayın (Behaviour Driven Development)TDD ile yazılımcı gözünden tasarlayın (Test Driven Development)YAZILIM GELİŞTİRME ve Sosyal Programlama
  40. 40. Mesajlaşma Servisleri (eposta, mesaj)SürekliBütünleştirmeSürümKontrolSistemiHer gün en az bir kere başkalarının komitlerini alın ve bütünleştirin (Continuous Integration)Yazılmış testleri anında çalıştırın ve geribildirim alın (Continuous Build)Kodunuzda test edilmemiş yerleri bulup testlerinizi iyileştirin (Code Coverage)Silmekten korkmayın, tasarımı testler yardımıyla yenileyin (Refactoring)Tüm döngünün bitmesi ve geribildirim alman en fazla 10 dakika sürsün (10 min build)Süreklİ BÜTÜNLEŞTİRME (Continuous INTEGRATION)YazılımGelişticiİş AnalistiTestMühendisi
  41. 41. Paket/Sürüm DeposuMesajlaşma Servisleri (eposta, mesaj)SürekliDağıtımSürümKontrolSistemiYazılımGelişticiİş AnalistiTestMühendisiHer gün çalışan kodun bir kopyasını canlıya çıkabilecekmiş gibi hazırlayın (SNAPSHOT)Kodun çalışan son hali daima depoda ya da CVS’de hazır bulunsun (Continuous delivery)Süreklİ DAĞITIM (Continuous Delivery)
  42. 42. DEV TEST & QA STAGING PRODYazılımcıların deney yapabileceği, uygulamayı test edebileceği bir ortam kurun (DEV)Performans ve yük testlerinin yapılabileceği ayrı bir ortamınız olsun (TEST/QUALITY ASSURANCE)Canlı öncesi kullanıcı kabul testlerinin yapılabileceği bir ortam bulundurun (STAGING/UAT/SIT)GelİŞTİRME ORTAMLARI (development Environments)
  43. 43. Paket/Sürüm DeposuMesajlaşma Servisleri (eposta, mesaj)SürümKontrolSistemiYazılımGelişticiİş AnalistiTestMühendisiKısa aralıklarla sürüm çıkın (SHORT RELEASES)Tek tıkla sürüm çıkabilecek teknik altyapıyı kurun (Continuous DEPLOYMENT)Uygulamaların sürüm çıkma ve açılma sürelerini hızlandırın (Fast bootup)Yazılım geliştirmeden ve BT operasyonlarından anlayan DevOps’lar yetiştirin (DEVOPS)SÜRÜM ÇIKMADEVTEST & QASTAGINGPRODSürekliSürüm
  44. 44. YazılımGelişticiİş AnalistiTestMühendisiBulut sistemleri bahsedilen çoğu yöntemi kullanmaya zorlar.Bulut üstünde uygulama gelİŞTİRMEDevOpsDevOps DevOps DevOpsSürümKontrolSistemi
  45. 45. eXtreme Programming pratikleri olmadan çevik olmaktan sözetmekanlamsızdır. XP ise ancak tutkulu yazılımcılar ile başarılır.“”İsa GöksuAgile Practice Lead
  46. 46. Kullanılan ResİMLERhttp://www.flickr.com/photos/emmanuelecontini/2558211856http://www.flickr.com/photos/thecampbells/5103649471http://www.flickr.com/photos/robbiemacphotos/7875854334http://www.flickr.com/photos/w4nd3rl0st/7174403872http://s590.photobucket.com/user/asmithj/media/CPC/girl_2_computer_arms_raised2.jpg.htmlhttp://www.flickr.com/photos/usnavy/5488581781http://www.flickr.com/photos/purplemattfish/3489639831http://www.flickr.com/photos/thomashawk/7215052318http://www.flickr.com/photos/nuwandalice/4764805046http://www.flickr.com/photos/lauter-als-der-rest/6898114788http://www.flickr.com/photos/31288116@N02/4008216690http://www.flickr.com/photos/a2gemma/1448178195http://www.flickr.com/photos/nuudls/3281779141
  47. 47. Lemİ orhan ergİnlemiorhan@agilistanbul.com@lemiorhan@lemiorhanagilistanbul.com@lemiorhanLINKEDINTWITTERSLIDESHAREBLOGPrincipal Software Engineer @ SonyFounder & Author @ agilistanbul.comflyingtomoon.comBu sunum AgileTurkey’in 13 Haziran 2013 tarihindedüzenlediği Agile Talks etkinliğinde kullanılmıstır,

×