Head First serisinde yer alan kitapları okumayı gerçekten çok zevkli buluyorum. Anlatımın söyleşi tarzında olması, brain-map ismi verilen beyin haritalarıyla desteklenmesi, anlatılmak istenen konuda yer alan öğelerin kişiselleştirilmesi (bir yazılım kavramıyla röportaj yapılması gibi), fena sayılmayacak mizah anlayışları bu serinin başarısının ardında yatan sebepler.

Amazon üzerinden sipariş vererek aldığım bu kitap, yazılım geliştiren herkesin elinde bulunmalı. Benim ihtiyacım yok demeyin, alın bir okuyun. Satın almak istemiyorsanız da internetten satın alabilirsiniz. Torrent kullanmayın 😐

Çevirisi çevik yazılım geliştirme yöntemleri ya da metodları olarak yapılan Agile Software Development konusunda yeni-eski, tecrübeli-tecrübesiz tüm geliştiricilerin, proje yöneticilerinin okuması ya da göz atması fena olmaz. Gereksiz kalıplar ve sıkıcı anlatımlarla karşılaşmadan eğlenerek öğrenmenin tadına varacağınız türden bir kitap. Richard Helm ‘in dahi bir yorumu var kitap hakkında.

Kitap ilk olarak müşteri görüşmesi, big bang yaklaşımı, iteration (yineleme) kavramlarına değiniyor. Müşteri memnuniyetinin olmazsa olmaz olduğu aktarılıyor. İkinci bölümde müşteri yada patronun isteklerini nasıl çıkarabileceğinizi detaylı olarak anlatıyor kitap, user story oluşturulması konusunda oldukça faydalı ve nokta atışı bilgiler var. Requirement (yazılım isterleri) çıkarılması konusu ülkemizde faaliyet gösteren çoğu firmada uygulanmıyor. Gereksinimler genellikle “abi şöyle yapalım” şeklinde geliyor yazılım birimlerine, sürekli soru sorduğunuzda da aptal ya da şapşal muamelesi ile karşılaşıyorsunuz, halbuki bu kitapta size “Dont make assumptions, ask” (varsayım yapmayın sürekli sorun) mottosu öğretilmeye çalışılıyor.

Benim en kötü olduğum konulardan birisi yazılım geliştirme zaman tahmin (estimation) yapmak diyorum ancak user story ve gereksinimler atomik parçalara ayrıldığında estimation yapmak oldukça kolay oluyor, hatta soylediğiniz estimationlar neredeyse birebir tutar hale geliyor.

Burndown chart oluşturulması, planning poker, planning board gibi agile methodologies içerisinde sıkılıkla kullanılan yardımcı araçlardan bahsediliyor. Proje planlamasıyla ilgili olarak da detaya girmeden size on-the-job training tarzı gerçek dünya projesinde nasıl uygulama yapacağınız senaryosunu veriyor. Milestone ve Iteration ‘ın karşılıklı sohbeti okumaya değer.

Scrum içerisinde kullanılan stand-up meetingler burada geliştiricilerimiz Mark, Bob ve Laura tarafından yapılıyor. Stand-up meetingler, firmanızda kullanacağınız ayak üstü toplantılarınızı da sağlıklı ve uzatmadan yapmanızı sağlayacak.

Software design ile ilgili ipuçlarının da yer aldığı kitap, UML şemalarıyla sınıf tasarımlarını destekliyor. Bu sayede hem geliştirme yapmadan önce bu adımları uygulamanız gerektiğini aklınızdan çıkarmıyor, hem de “bundan sonra UML şeması olmadan yazmam” şeklinde bir tavıra bürünmeniz sağlanıyor. Iteration sırasında olabilecek, bug, müşteri istekleri gibi interrupting (bölücü) sebeplere karşı nasıl tavır almanız gerektiği gerçek dünya örnekleriyle sunuluyor.

Object oriented design (nesne yönelimli programcılık) hakkında tasarım prensiplerine de yer verilmiş. SRP, DRY, LSP kavramları da açıklanıyor. Bu kavramların neler olduğunu bulmak size ödev olsun, kitap içerisinden okumanız ve bunları merak etmiş olmanızı sağlayabiliriz belki. Perfect Design ve Good Enough Design kavramları arasında geçen sohbeti de kesinlikle okumalısınız. Tüm tasarımlar kusursuz olamaz, yeterince iyi olabilir.

Defensive development, version controlling hakkında bilgiler de veriliyor, ancak bu bölümde svn kullanılıyor, git kullanıcıları bundan pek hoşlanmayacaklardır, version control konusunda tecrübesi az geliştiriciler için oldukça kullanışlı bir bölüm. Ben de git ile anlatım yapılmış olmasını isterdim, version control konusunda bilgi sahibiyseniz bu bölümü okumanıza gerek yok sanırım. Sonraki bölümde automated build scripts, build scripts kavramları anlatılıyor ve burada ant kullanılıyor, maven kullanılmış olmasını şahsen tercih ederdim.

Sonraki bölümlerde Software testing, Test Driven Development, Continuous Integration bölümleri yer alıyor. Mock objects kavramına da yer veriliyor ve EasyMock kullanılarak bir örnek dahi verilmiş. Fake objects konusundan bahsediliyor ancak tümüyle TDD için bir kaynak olarak görmeyin. Kitabın sonlarında bir sonraki iteration için yapmanız gereken işleri, yazılımınızı gerçek dünyaya sunarken yapmanız gereken işleri anlatan bölümler bulunuyor.

Tools for the experienced software developer ayrıtında bulunan Development Techniques ve Development Principles kartlarını post-it lere yazark buzdolabınıza yapıştırmanızı tavsiye ederim, bir de kitapta bulunan alıştırmaları ve bulmacaları çözmeniz oldukça faydalı olacaktır.

Kitap uzman geliştiricilerin burun kıvırmasına neden olabilir, gerçekten böyle düşünüyorsanız yanılıyorsunuz. Bilmediğiniz çok şey vardır istediğiniz kadar tecrübeli olun, burada bulunan senaryolara göz atmanızı tavsiye ederim. Sizi muhteşem bir yazılım uzmanı yapacak demiyorum bu kitap, ya da süper bir proje yöneticisi olacaksınız, sorunsuz projeler geliştireceksiniz de demiyorum. En azından bu saydıklarımı yapabilmek için doğru tekniklerin ve metodların neler olduğuna daha kolay karar verebileceksiniz. Soylemesi benden isteyen arkadaşlar kitabı edinsin derim.