eXtreme Programming ve Bir Başarı Öyküsü

0
FZ
Bill Clementson son blog girdilerinden birinde birkaç gün önce gerçekleştirdikleri etkinlikte sunum yapan ve bir başarı öyküsü aktaran Ken Dickey'e yer vermiş.

Avustralya kökenli başarılı bir start-up olan Memetrics'in öyküsünü çarpıcı bir dille anlatan Dickey, eXtreme Programming metodolojisi ve Common Lisp'ten faydalanarak geliştirdikleri sistemi anlatan güzel bir sunum hazırlamış.

Keskin rekabetten ve gizli silahların gücünden hoşlananlar için incelenesi bir örnek. Afiyet olsun.

Görüşler

0
neurorebel
Hımm... XP... Amatör Delphi ve VB programcılarının proje geliştirme mantalitesinin "cool" bir isim verilmiş hali... Yazıda bahsi geçen geliştirme adımları standart bir sistem analizinin iterasyonları zaten. Eğer işin başında doğru dürüst analiz yapılırsa çok daha sağlam ve esnek ürünler ortaya çıkar. Ayrıca başarıyı neye göre ölçüyoruz ? Eğer amaç, hayatında konsol bile kullanmamış bir kaç adamı kaşıkla yavaş yavaş mama vererek memnun etmekse; evet XP iyi bir tekniktir. Ama XP modern yazılım geliştirme anlayışıyla kesinlikle uyuşmaz. Yazılım *katmanlardan* oluşur. Bu nedenle ürünün kalitesi işin başında modellemeye ayrılan vakitle doğru orantılıdır. Ortalıkta nerede n'aptığı belli olmayan ve 10larca megabytelık paket boyutlarına ulaşan pek çok başarılı(!) yazılım var. Bunlar ölçüt değil... Olmamalı...
0
anonim
Keşke bu satırları yazmadan önce XP hakkında biraz daha okusaydınız. XP de katmanlar vardır, hatta XP de dizayn da vardır. AMA XP her bir ayrıntıyı en ince şekilde planlamaya karşıdır. XP için kabaca şöyle bir algoritma uygulanabilir.

1 İhtiyaç analizini yap, gereksinimleri belirle
2 İskelet tasarımı oluştur.
3 Testleri yaz
4 Çalıştırılabilir kodu yaz
5 Test et
6 Kodu değiştir
7 Dokümantasyonu değiştir
8 Müşteriye göster ve değişen ihtiyaçlara göre 3 adıma geri git.

Daha fazlası için aşağıdaki adreslere gözatılabilir.

http://www.fazlamesai.net/index.php?a=article&sid=1300
http://www.bilgidata.com/localhost/bilgidata/yazi_liste.jsp@kategori=Proje.html
http://www.godoro.com/Divisions/Ehil/Mecmua/Magazines/Columns/txt/html/article_XP.html
http://www.martinfowler.com/
0
mdakin
XP, üzerinde çok tartışılan ve bence de eksikleri olan bir metodoloji olsa da "Amatör Delphi - VB programcılarının mentalitesi" diye aşağılanamayacak kadar iyidir. Etrafımızdaki bir kaç kişi XP yapıyorum diye işleri ellerine yüzlerine bulaştırdıysa bu metodolojinin suçu değil. Örnek verecek olursak amatör (hatta kendisini profesyonel sanan) delphi ve VB programcıları:
  • Tasarım yapmaz, XP tasarıma önem verir
  • Asla test yapmaz, Otomatize edilmiş testler XP nin belkemiğidir, olmazsa olmaz
  • iteratif geliştirme yapmaz, blok halinde bir çamur yığını oluşturur, XP en baştan itibaren çalışabilen bir yazılımın adım adım planlı şekilde sürekli testlerle kontrol edilerek ilerlemesini sağlar. Otomatize edilmiş build ortamları ve sürekli testlerin işletilip regresyonların belirlenmesi de XP nin önerisidir

Bunlardan başka, sürekli refactoring gibi şeylerin amatör VB programcılar için hiç bir şey ifade etmediği de aşikar. XP bu kuralalrı kendisi uydurmadı, hemen hepsi zaten yıllardır iyi programala ve geliştirme teknikleri olarak zaten biliniyordu. Dediğinizin tam aksine, XP modern yazılım geliştirme anlayışının bir parçasıdır, kullanılabileceği yerler de çoktur. Siz istediğiniz kadar "katmanlı" yazılımınızın başında uzuun bir süre modellemeye zaman ayırın, eğer müşteriniz fırıldak gibi karar değiştiriyorsa, takımınızın tamamı guru seviyesinde adamlardan oluşmuyorsa o yazılımı bitene kadar en az on kere baştan modellersiniz. Hızlı değişime adapte olan modellerin, ki XP olmak zorunda değil, başka çevik yöntemler de var, gayet başarılı olduğu örnekler var. XP için benim de eleştirebileceğim şeyler var, ama bu şekilde körü körüne kötülemek doğru değil.
0
neurorebel
Evet biraz körü körüne kötüledim. Kusura bakmayın :) Sadece bu aralar bu konuda biraz hassas ve sinirliyim... XP'nin daha iyi bir seçim olabileceği projeler mutlaka olabilir. Ama sinir bozucu olan, kimi insanların VB'yle, Delphi'yle veya benzer komponent tabanlı herhangi bir geliştirme sistemiyle yaptığı yanlışları doğruymuş gibi göstermek namına "Bunun adı XP !" diye bağırması.
0
bm
Aslinda anliyorum ben ruh halinizi. Ben de pek memnun degilim zaten bildigimiz bazi seylerin paketlenip sonra bilip anlayamayacak insanlarin agzina sakIz olmasindan. Hmm iyi bu calisti ama biraz temizleyip duzenlemek istiyorum yerine simdi refactor etmem lazim denmesinin merifet olmasi benim de hosuma gitmiyor. Yalniz bu bahsedilen insanlar tam oyle degil. Buyuk bir _yenilik_ iddialari yok bence, yalniz XP demekten, o terminolijiyi kullanmakan filan cekinmiyorlar, presniplerinin bir butun olarak faydali olduguna inanmislar. Bir ara bu Memetrics, sirf ortamin hoslugu yuzunden pek de para vermeden ABD'den AU'ya genc lispci getirtip calistirirdi. (pair programming ya, hizli uyum, hizli verim vs. vs.).
0
FZ
Valla Delphi'cileri ve VB'cileri bilmem de görülen o ki berbat bir sözdizimi olan Common Lisp dilini kullananlar da bu proje için eXtreme Programming kullanmışlar. Söz konusu adamların hayatlarında konsol kullanmamış adamlar olmadıklarına bahse girerim (hayatında konsol kullanmış olmak her ne demekse ve konumuzla ne ilgisi varsa). Memetrics'in başarısına gelince herhalde rekabet ettiği ortamlara bakarak bir karar verilebilir.

Ben neyle neyi kıyasladığınızı anlamadığım gibi yazıda linkleri verilen belgeleri, sunumları okuduktan sonra mı böyle bir kanıya vardınız onu da anlamadım.
0
neurorebel
Hayatında konsol kullanmamış demekle yazılım işi hakkında hiç bir fikri olmayan kişileri kastetmiştim...
0
tongucyumruk
Bir süredir aklımda olan birşeydi, tam yazmak için fırsat oldu bana da...

Lisp ortamlarındaki yazılım geliştirme metodolojisinin XP'deki birim testi kavramını farklı bir boyuta taşıyabileceğini düşünüyorum. Şu ana kadar özellikle Practical Common Lisp gibi kaynaklarda gördüğüm kodlar genelde Lisp ile yazılan kodların diğer dillerde belki "aşırı" diye nitelenebilecek ölçüde parçalanmış olduğu. Burada parçalanmadan kastım tabiiki köt birşey değil. Sadece gördüğüm kadarıyla genelde Lisp'te kod yazma tarzı problemi mümkün olabilecek en küçük fonksiyonlara bölüp sonra da bu fonksiyonları bir araya getirerek çözümü oluşturmak yönünde. Bunun tipik bir örneği bahsi geçen kitapta gördüğüm spam filtresi [1].

Bu yönüyle Lisp'in XP tarzı yazılım geliştirmeye fazlasıyla uygun bir dil olduğunu düşünüyorum. Zira yazılımın tamamı genelde çok fazla parametresi olmayan (çoğunlukla tek parametreli) fonksiyonlardan oluştuğunda bu otomatik olarak refactoring'i kolay hale getirdiği gibi yazılımın kendisinin de bir tür birim test gibi çalışmasını sağlıyor ve gerekirse yazılacak ekstra birim testler için uygun bir platform oluşturuyor [2].

[1] http://www.gigamonkeys.com/book/practical-a-spam-filter.html
[2] http://www.gigamonkeys.com/book/practical-building-a-unit-test-framework.html
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Paul Graham’ın Startup Destek Şirketi İlk Meyvelerini Veriyor

FZ

Paul Graham'ın startup şirketlere destek olma amacı ile kurduğu Y Combinator* ilk meyvelerini vermeye başladı.

Y Combinator'dan aldıkları destekle bir şirket kuran iki genç üniversite mezunu http://reddit.com sistemini devreye soktular.

Hedeflerinde kısaca şunu diyorlar: "Her Internet kullanıcısının ana sayfası olmak istiyoruz." İnsanda Google çağrışımı yapan bir cümle, öte yandan sitenin sadeliği ve işlevselliği de Google'ı hatırlatmıyor değil. Fikir çok özgün değil, yeni Internet siteleri, haberler, yazılar, kısaca URLsi verilebilecek herhangi bir şey. Gönderdiğiniz haberin popülaritesi diğer üyeler tarafından belirleniyor. Buna göre sizin popülariteniz, vs. de belirleniyor. Kullanılan "karma" sözcüğü de doğrudan Slashdot'u çağrıştırmakla birlikte /. editör kaprislerinden ve yorum kirliliğinden uzakta, yepyeni bir kavramı hayatımıza katabilir.

Bağlı Listeler, C, Lisp, Scheme...

FZ

Bağlı listeler programcıların kullanabilecekleri soyutlama araçları arasında önemli yer işgal ederler. Bu veri yapılarını kullanarak veri işleme süreçlerini kolayca yönetmek mümkündür.

Jonathan Bartlett, IBM developerWorks sitesindeki Techniques for using linked lists in C and -- smarter still -- Scheme makalesinde bağlı listelere dair önce C programlama örnekleri vermekte ve daha sonra liste yapısını dilin doğal parçası olarak ele alan Lisp benzeri Scheme dilinde benzer işlerin nasıl daha kolayca ve soyut seviyede yapılabileceğini göstermektedir.

Land Of Lisp Çıktı

okanakyuz

İleri seviye sitesindeki lisperati (Tılsımlı Programlama) (http://ileriseviye.org/Makale/lisperati-tr/) metninin orjinalinin yazarı Conrad Barski en sonunda bir lisp kitabı çıkarttı. Kitap Lisp diline bir türlü alışamayan meraklılar ile yeni başlayan kullanıcılara hitap ediyor. Ayrıca lisp dilini komik hikayeler ve karikatürler ile anlatmakta. http://landoflisp.com/ sitesinden kitabın 8nci bölümünü okumak da mümkün.

Fonksiyonel Geometri, Lisp, Escher, Postscript: Sanat ve Bilgisayarlar

FZ

Daha önce FM'de bir Mars programlama projesi yarışması bağlamında adı geçen Frank Buss bu sefer de gündemimizi Peter Henderson'ın makalelerinden uyarladığı ve Common Lisp kullanarak gerçekleştirdiği bir fonksiyonel geometri uygulaması ile meşgul ediyor. Fonksiyonel programlamanın grafik uygulamalarını kullanarak anlaşılması bakımından çarpıcı bir örnek. Program çıktısını Postscript olarak üretiyor.

Söz konusu grafik yapılar pek çok matematikçinin ve diğer bilim insanlarının da hayranlığını kazanan Hollandalı meşhur sanatçı M. C. Escher'in yapıtlarından esinlenerek hazırlanmış.

'Lisp Outside the Box' Düştü Mü?

okanakyuz

Nick Levine tarafından O'Reilly için 2009 yılında yazılması planlanmaya başlanan ve resmi sitesi lisp-book.org şeklinde olan hayal kitap tarih oldu gibi duruyor. Kitap her lisp meraklısı gibi benim de hayallerimi süslemekte, (Özellikle kısım 3 ve kısım 6) fakat görünen o ki bu proje tarih olmuş durumda. Bir arkadaşım ile sohbet ederken öğrendiğim bilgi bu kitaba asla kavuşamayacağımız yönündeki dedikodu. Kitap için tek satır bile yazılmamakta artık. Dilerim birisi çıkar ve yeni bir proje başlatır. Çünkü Hacker lugatında O'Reilly'den bir kitap çıkartmak dünyadaki en önemli 2 hadiseden biri (diğeri zengin olmak ve paraya para dememek)