Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri

Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri

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.

Lemi Orhan Ergin

March 23, 2013
Tweet

More Decks by Lemi Orhan Ergin

Other Decks in Programming

Transcript

  1. Ç e v ⌅ K Y A Z I L

    I M G E L ⌅ ✏ T ⌅ R M E P R A T ⌅ K L E R ⌅ L e m i O r h a n E r g i n P r i n c i p a l S o f t w a r e E n g i n e e r / Y a z ı l ı m U s t a s ı S o n y E u r o p e B A ✏ A R I L I P R O J E L E R ⌅ n A N A H T A R I
  2. B a ⇢ a r i s i z o

    l d u m u ? P r o j e y i z a m a n ı n d a y e t i s t i r e m e d i k H ⌅ Ç y a z ı l ı m p r o j e n ⌅ z D a h a c a n l ı y a ç ı k a m a d a n i p t a l e t t i k P r o j e u z a d ı k ç a u z a d ı , b i t e c e k g i b i d e g i l Y a z ı l ı m i s t e d i g i m g i b i o l m a m ı s s t e d i g i m ö z e l l i k l e r i e k l e m i y o r l a r İ U f a k ö z e l l i k l e r i ç i n b i l e ç o k p a r a i s t i y o r l a r C a n l ı d a s ü r e k l i h a t a b u l u y o r u m M e v c u t y a z ı l ı m ı b a s t a n y a z m a m ı z g e r e k B i r k i s i i s t e n a y r ı l d ı , p r o j e ç ı k m a z a g i r d i Y a z ı l ı m ı g e l i s t i r e n t a k ı m s ü r e k l i d e g i s i y o r P r o j e n i n b a s a r ı s ı z o l a c a g ı a s i k a r d ı a s l ı n d a Y a z ı l ı m m i m a r i s i ç o k e s k i y m i s P r o j e g ü z e l g i d e r k e n n e o l d u d a b i r d e n b a t t ı , , , , , , , , , - - - -
  3. Y a z ı l ı m P r o

    j e l e r ⌅ B A ✏ A R I S I Z “ T ü k i y e ' d e k i p r o j e l e r i n % 5 0 ' s i ç ö p e g i d i y o r ” A g i l e T u r k e y “ G e r ç e k m a s r a f l a r e k l e n d i g i n d e t e k n o l o j i p r o j e l e r i n i n % 8 0 ' i z a r a r e d i y o r ” M e r c e r C o n s u l t i n g -
  4. 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ü k a r ⌅ y e R ⌅ m b o y u n c a 1 1 b ü y ü k ç a p l ı p r o j e d e ç a l ı ⇢ t ı m
  5. 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ü k a r ⌅ y e R ⌅ m b o y u n c a 1 1 b ü y ü k ç a p l ı p r o j e d e ç a l ı ⇢ t ı m 6 t a n e s ⌅ H ⌅ Ç C A N L I Y A Ç I K M A D I / K A P A N D I / K A P A N A C A K
  6. B A ✏ A R I S I Z L

    I K k a ç ı n ı l m a z Ç Ü N K Ü B A ✏ A R I S I Z O L M A K ⌅ Ç ⌅ N Ç O K N E D E N V A R B i l i n m e y e n g e r e k s i n i m l e r T e k n i k b i l g i e k s i k l i g i Y a n l ı s t a s a r ı m y a d a k o d l a m a S o r u n l a r ı m ü s t e r i d e n g i z l e m e T e s t e d i l m e d e n g e l i s t i r m e C a n l ı d a ç ı k a n h a t a l a r B a s a r ı s ı z t a k ı m ç a l ı s m a s ı Y a n l ı s ü r ü n g e l i s t i r m e Y ö n e t i m z a a f l a r ı E k s i k b e l g e l e m e l e t i s i m e k s i k l i k l e r i İ K u l l a n ı l a n y a n l ı s a r a ç l a r T a n r ı y a z ı l ı m c ı l a r S ü r e k l i m e s a i v e v e r i m s i z g ü n l e r K a l i t e d e n v e r i l e n ö d ü n l e r S u n u c u v e a l t y a p ı s o r u n l a r ı G e r e k s i z ö z e l l i k l e r e o d a k l a n m a Y a z ı l ı m ı s a d e c e k o d l a m a s a n m a k , , , , , , - , , ,
  7. P e k ⌅ D Ü N Y A D

    A B A ✏ A R I L I y a z ı l ı m l a r d i y e s o r m a k h a k k ı n ı z N A S I L G E L ⌅ ✏ T ⌅ R ⌅ L ⌅ Y O R ?
  8. b a s a r ı s ı t e

    c r ü b e i l e s a b i t , d ü n y a c a k a b u l g ö r m ü s , , Ç E V ⌅ K Y A Z I L I M G E L ⌅ ✏ T ⌅ R M E P R A T ⌅ K L E R ⌅ , b a s a r ı l ı s o n u ç l a r e l d e e d e n y a z ı l ı m l a r g e l i s t i r m e k i ç i n g e r e k e n y a z ı l ı m p r a t i k l e r i t o p l u l u g u d u r , - ,
  9. Ç E V ⌅ K Y A Z I L

    I M G E L ⌅ ✏ T ⌅ R M E P R A T ⌅ K L E R ⌅ 4 A n a k a v r a m ü z e r ⌅ N E K U R U L M U ✏ T U R
  10. E r k e n b a ⇢ a r

    ı s ı z o l m a k
  11. Y a z ı l ı m d a k

    a l ⌅ T E S T A N D A R T L A R I
  12. B ⌅ L G ⌅ P A Y L A

    ✏ I M O R T A M I O L U ✏ T U R M A K
  13. Ç E V ⌅ K Y A Z I L

    I M G E L ⌅ ✏ T ⌅ R M E P R A T ⌅ K L E R ⌅ N e l e r d ⌅ R ?
  14. M ü ✏ T E R ⌅ ⌅ L E

    D Ü Z E N L ⌅ O L A R A K G Ö Z D E N G E Ç ⌅ R ⌅ N H e r s e y i e n b a s t a n p l a n l a m a y a k a l k m a y ı n P r o j e k a p s a m ı n ı k ü ç ü k p a r ç a l a r a b ö l ü n K ı s a d ö n g ü l e r l e y a z ı l ı m g e l i s t i r i n , , ,
  15. T e s t e d ⌅ L E B

    ⌅ L ⌅ R K O D Y A Z I N s i s t e m i b o z a n y e n i ö z e l l i k l e r , Y a z ı l ı m ı T D D ⌅ L E G E L ⌅ ✏ T ⌅ R ⌅ N k o d a d o k u n m a k t a n k o r k a n y a z ı l ı m c ı l a r , ö m r ü n ü b i t i r m i s p r o j e l e r , n a s ı l ç a l ı s t ı g ı a n l a s ı l m a y a n k o d l a r , s o n a n d a o r t a y a ç ı k a n h a t a l a r , u z u n t e s t e t m e s ü r e l e r i , b i t m e y e n p r o j e l e r E : E R ⌅ S T E M ⌅ Y O R S A N I Z Ç o k k a t m a n d a t e s t e d ⌅ N , , , -
  16. H a t a Ç Ö Z M E D

    E N Ö N C E M U T L A K A T E S T Y A Z A R A K H A T A Y I Y E N ⌅ D E N Y A R A T I N T E S T ⌅ Y A Z I L M A M I ✏ H A T A L A R B ⌅ R G Ü N Y E N ⌅ D E N H O R T L A R
  17. K o d u s ü r e k l

    ⌅ Y E N ⌅ D E N Y A P I L A N D I R I N ( R E F A C T O r ı N G ) S ü r e k l ⌅ t ü m l e ⇢ t ⌅ R M E ⌅ L E H A T A L A R I A N I N D A F A R K E D ⌅ N ( C O N T I N U O U S I N T E G R A T I O N )
  18. E ⇢ L ⌅ P R O G R A

    M L A M A Y A P I N ( P A I R P R O G R A M M I N G ) Y A Z I L a n K O D L A R I T A K I M C A ⌅ N C E L E Y ⌅ N ( C O D E R E V ı E W )
  19. T e m ⌅ Z K O D Y A

    Z I M K U R A L L A R I N A U Y U N ( C L E A N C O D E ) K O D A N A L ⌅ Z ⌅ A R A Ç L A R I ⌅ L E G ⌅ Z L ⌅ H A T A L A R I B U L U N ( C O D E A N A L Y S I S ) K O D U N U Z U V E R S ⌅ Y O N L A Y I N V E H E R F I R S A T T A D A L L A N D I R I N ( C O D E V E R S I O N I N G & B R A N C H I N G )
  20. K ı s a a r a l ı k

    l a r l a s ü r ü m ç ı k ı n ( s h o r t r e l e a s e s ) Ö n T a s a r ı m ı k ı s a t u t u n ( s h o r t u p - f r o n t d e s i g n ) Y e t e R ⌅ K A D A R B E L G E L E Y ⌅ N ( A G I L E D O C U M E N T A T I O N ) G E L E C E : ⌅ N E T L E ✏ T ⌅ R M E Y E Ç A L I ✏ M A Y I N Ç A L I ✏ M A L A R I N I Z I N E V R ⌅ M L E ✏ M E S ⌅ N E ⌅ Z ⌅ N V E R ⌅ N
  21. B I R A K I N Ç a l

    ı ⇢ a n l a r ⌅ ⇢ a r k a d a ⇢ l a r ı n ı e D ⌅ T S ⌅ N ⌅ ç E D ⌅ t ⌅ m l e r O R G A N ⌅ Z E E D ⌅ N
  22.  M ü s t e r i i l

    e d ü z e n l i o l a r a k g ö z d e n g e ç i r i n .  T e s t e d i l e b i l i r k o d y a z ı n , y a z ı l ı m ı T D D i l e g e l i s t i r i n , ç o k k a t m a n l ı t e s t e d i n .  K o d u s ü r e k l i y e n i d e n y a p ı l a n d ı r ı n ( r e f a c t o r i n g )  S ü r e k l i t ü m l e s t i r m e i l e h a t a l a r ı a n ı n d a f a r k e d i n ( c o n t i n u o u s i n t e g r a t i o n )  E s l i p r o g r a m l a m a y a p ı n ( p a i r p r o g r a m m i n g )  Y a z ı l a n k o d l a r ı t a k ı m c a i n c e l e y i n ( c o d e r e v i e w )  T e m i z k o d y a z ı m k u r a l l a r ı n a u y u n ( c l e a n c o d e )  K o d a n a l i z i a r a ç l a r ı i l e g i z l i h a t a l a r ı b u l u n ( c o d e a n a l y s i s )  K o d u n u z u v e r s i y o n l a y ı n v e h e r f ı r s a t t a d a l l a n d ı r ı n ( v e r s i o n i n g & b r a n c h i n g )  K ı s a a r a l ı k l a r l a s ü r ü m ç ı k ı n ( s h o r t r e l e a s e s )  Ö n t a s a r ı m ı k ı s a t u t u n ( s h o r t u p - f r o n t d e s i g n )  Y e t e r i k a d a r b e l g e l e y i n ( a g i l e d o c u m e n t a t i o n )  B ı r a k ı n ç a l ı s a n l a r i s a r k a d a s l a r ı n ı e g i t s i n l e r ( i n t e r n a l t r a i n i n g s ) Ç E V ⌅ K Y A Z I L I M G E L ⌅ ✏ T ⌅ R M E P R A T ⌅ K L E R ⌅ B a ⇢ a r ı l ı p r o j e l e r g e l ⌅ ⇢ t ⌅ r m e n ⌅ z ⌅ s a D l a r , , , , , , -
  23. h t t p : / / c o m

    m o n s . w i k i m e d i a . o r g / w i k i / F i l e : T r a i n _ w r e c k _ a t _ M o n t p a r n a s s e _ 1 8 9 5 _ 2 . j p g h t t p : / / w w w . p u b l i c d o m a i n p i c t u r e s . n e t / v i e w - i m a g e . p h p ? i m a g e = 1 9 9 6 3 & p i c t u r e = s a d - w o m a n h t t p : / / v e t t o n . r u / 6 1 3 4 5 / h t t p : / / w n y i n j u r y l a w y e r s . c o m / a s s e t s / s l i d e r - s l i p . j p g h t t p : / / b l a c k b o a r d m k t g . c o m / w p - c o n t e n t / u p l o a d s / 2 0 1 1 / 1 1 / b l a c k b o a r d - b a c k g r o u n d s - w a l l p a p e r s . j p e g h t t p : / / w w w . a c c l a i m i m a g e s . c o m / _ g a l l e r y / _ i m a g e _ p a g e s / 0 4 2 0 - 1 0 1 0 - 1 6 1 5 - 0 9 1 0 . h t m l h t t p : / / n u t r i t i o n . a b o u t . c o m / o d / t r y i n g t o g a i n w e i g h t / t p / f o o d s t o g a i n w e i g h t . h t m h t t p : / / w w w . j o u r n a l o f a p p l i e d e c o l o g y . o r g / v i e w / 0 / e d i t o r s c h o i c e 4 9 1 . h t m l h t t p : / / b l o g . c a t h y s p a r k l e . c o m / t h e - t r u t h - a b o u t - s o a p / h t t p : / / w w w . d e l a w a r e o n l i n e . c o m / b l o g s / 2 0 0 8 / 0 9 / h e - p i n g p i n g . h t m l h t t p : / / w w w . g e m d i a m o n d s . c o m / g e m / i m a g e _ u p l o a d s / b a c k g r o u n d s / 1 c u t t i n g p o l i s h . j p g h t t p : / / i c e d c o f f e e . d e v i a n t a r t . c o m / a r t / Z o m b i e s - 1 4 5 8 5 8 7 2 4 h t t p : / / w w w . l o o k f o r d i a g n o s i s . c o m / m e s h _ i n f o . p h p ? t e r m = Q u a d r u p l e t s & l a n g = 1 K u l l a n ı l a n r e s ⌅ m l e r r e f e r a n s l a r h t t p : / / w w w . g a l o r a t h . c o m / w p / s o f t w a r e - p r o j e c t - f a i l u r e - c o s t s - b i l l i o n s - b e t t e r - e s t i m a t i o n - p l a n n i n g - c a n - h e l p . p h p “ Y a z ı l ı m p r o j e l e r i ç ö p e g i d i y o r ” - A g i l e T u r k e y h t t p : / / w w w . a g i l e t u r k e y . o r g / H a b e r l e r / D e t a y / Y a z i l i m - P r o j e l e r i - C o p e - G i d i y o r “ S o f t w a r e P r o j e c t F a i l u r e C o s t s B i l l i o n s . . ” - G a l o r a t h I n c o r p o r a t e d
  24. L e m ⌅ o r h a n e

    r g ⌅ n l e m i o r h a n @ a g i l i s t a n b u l . c o m @ l e m i o r h a n @ l e m i o r h a n a g i l i s t a n b u l . c o m @ l e m i o r h a n l i n k e d i n t w i t t e r s l i d e s h a r e b l o g g e r P r i n c i p a l S o f t w a r e e n g i n e e r / y a z ı l ı m u s t a s ı S o n y e u r o p e