Yazılım alanında kariyer hedefleyenler ya da kendisini temel yazılım bilgisi konusunda geliştirmek isteyenler bazen nereden başlayacaklarını bilemezler. İyi bir yazılım geliştiricisi olabilmek için öncelikle meraklı, sabırlı ve teknik bilgiye sahip olmalısınız. Peki yazılım geliştiricisi olmak için sadece pratik yapmak yeterli mi? Nasıl ki teorik bilgi tek başına yeterli değilse pratik bilgi de sizi bir yere kadar ilerletir. Son yıllarda özellikle yazılım alanında online kurslar ve seminerler öne çıksa da klasik yöntemler de hala geçerliliğini koruyor.
Yazılım alanında kendini geliştirmek isteyen kişilerin aklına gelen ilk soru “Nereden başlayacağım?” sorusudur. Yazılım konusunda sadece pratik yaparak bir şeyler öğrenmek hem yorucu hem de zorluklarla karşılaştığınızda heves kırıcı olabilir. Bu noktada imdadınıza temel yazılım kitapları yetişir. Bu kitaplar teorik bilgi sonrası gerekli yönlendirmelerle yazılım pratiklerinde ilerlemenize yardımcı olur. Kimi kitaplarda mesleki etik ve işin yönetimsel kısmına odaklanarak gerçek anlamda yazılımcı olabilmenin incelikleri sunuluyor. Yazılım kitapları sektörde yaşanan başarısız hikayeleri yaşamamak ve bilgilerinizi sürekli hatırlayarak hatalarınızı minimum düzeye çekmenizi sağlayabilir. Sizin için seçtiğimiz bazı temel yazılım kitaplarını inceleyerek siz de iyi birer yazılım geliştiricisi olma yolunda adım atabilirsiniz. Peki bu kitaplar neler ve ne gibi içeriklere sahipler?
Clean Code: A Handbook of Agile Software Craftsmanship
2008 yılında Robert C. Martin tarafından yazılan kitap yeni başlayanlardan profesyonellere kadar “temiz kod” yazmak isteyen tüm yazılımcılar için temel bir kaynak. Yazılımda yapılan en büyük hatalardan birisi olan temiz kod yazmama üzerine odaklanan kitap aslında çok önemli bir noktaya değiniyor. Temiz; yani anlaması ve değiştirmesi kolay kod yazmak hem ilerleyen işlerde kodu yazan kişiye hem bu kod üzerinde çalışacak başka yazılımcılara çeşitli kolaylıklar sağlar. Ayrıca kitapta sorunlu yazılmış bir kodun nasıl temiz hale getirileceği tüm aşamalarıyla da anlatılıyor. Kodların formatı, sınıf tasarımları ve hata yönetimi yalın ve sade bir dille okuyucuya aktarılıyor. Yazılımda sıklıkla kullanılan ve nesne yönelimli programlama dilleri açısından faydalı olan, JavaScript’in anlatıldığı bir kısım da bulunuyor.
Kitabın en ilginç bölümünü ise yazılımcı psikolojisine değinilen kısım oluşturuyor. Yazar, projeyi teslim tarihine yetiştirirken yazılımcıların ne gibi hatalar yaptıklarının ve bu hataların aslında daha sonra yazılımcıları daha fazla uğraştırması üzerinde duruyor.
Clean Code için yazılımın ne olduğundan ziyade nasıl olması gerektiğine odaklanan bir kitap diyebiliriz. Ayrıca vurgulamak gerekir ki kitabın başında yer alan cümle yazarın “Yazılımcı nasıl olmalıdır?” sorusunu özetler niteliktedir: Martin “Kendinize profesyonel diyebilmeniz için temiz kod yazabilmelisiniz. En iyisinden daha azını yapmanız için geçerli bir sebebinizin olmaması gerekir.” diyerek yazılım geliştirmeye yeni başlayanlara cesaret ve motivasyon aşılıyor.
The Clean Coder: A Code of Conduct for Professional Programmers
The Clean Coder, Robert C. Martin tarafından 2011 yılında kaleme alınan ve yazılımcıların davranışlarına dair önerilerde bulunan bir kitap. Teknik olarak yazılım ve kodun nasıl olmasından ziyade sektörde profesyonel bir yazılımcı olmak için neler yapılması gerektiği üzerinde duruyor. Yazılımcıların yaptığı işe bir “zanaat” olarak bakması gerektiği ve karşılaştığı problemlerle nasıl baş etmesi gerektiğini anlatan kitap, profesyonel bir yazılımcının problemler karşısında nasıl bir planlama yaptığı ve kodlamaya nasıl devam edebileceğini anlatması açısından değerli bir çalışma.
Kitabın öne çıkan bir diğer özelliği de mesleki etik konularında okuyucularını yönlendirmesi. Yazar çalışma ortamının, yazılımcıların ve ekibin nasıl geliştirilebileceği sorusuna odaklanıyor. Ne zaman ve nasıl “Evet” ve “Hayır” denmesi gerektiğine kadar okuyuculara çeşitli yönlendirmeler yapıyor. The Clean Coder bir teknik yazılım kitabından daha çok yazılımcının nasıl tutum geliştirmesi gerektiğine dair bir kitap. Martin yazılımcının kendi öz saygısı, yaptığı işle ilgili duyacağı gurur ve bilginin; sorumlu davranış biçimiyle nasıl daha da değerli hale geleceğini okuyucularına aktarıyor.
The Pragmatic Programmer: From Journeyman to Master
Andrew Hunt ve David Thomas tarafından 1999 yılında yazılan bu kitap günümüzde hala popülaritesini ve geçerliliğini koruyor. Eser, yazılımcıların kariyer gelişimleri aşamasında yazdıkları kodların esnek, uyarlanabilir ve yeniden kullanılabilir olması için çeşitli ipuçlarından bahsediyor. Aynı zamanda pragmatik yazılım ekibiyle birlikte oluşturulan otomasyon sistemleriyle nasıl daha korunaklı bir kod sistemi yazılabileceği de kitabın konuları arasında yer alıyor. Teknik ve pratik tavsiyelerle bir yazılım geliştiricinin nasıl olması gerektiği örnekler ve ilginç anekdotlarla anlatılıyor.
Kitabın bir bölümünde anlatılan kırık cam hikayesi de hayli ilgi çekici:
“Bozuk kodlar tıpkı kırık camlar gibidir. Kimse bu bozuk kodları tamir etmek istemez fakat her seferinde karşınıza çıkar. Kırık camları çöpe atmak için ekstra masraf yaparak çöp kovası almak yerine sorumluluk alarak işe girişmelisiniz.”
Üniversitelerin birçoğunda temel kaynak olarak okutulan bu kitap teorik bilgiden çok sizi geliştirecek pragmatik bilgilere ve süreçlere odaklanır. Hunt ve Thomas, kitapta yazılımcının ne yaptığına ve nasıl yaptığına dikkat etmesi halinde bir şeyi bir kez yapmasının otomatikleşmesi için yeterli olacağını belirtir. Yani sistemi bir kez oturtup uygulamasını yaptığınızda devamı kendiliğinden gelecektir.
Refactoring: Improving The Design of Existing Code
Martin Fowler tarafından 1999 yılında yazılan kitap kod düzenlemek ve optimize etmek isteyenler için refactoring kavramına odaklanıyor. Kod düzenleme anlamına gelen “refactoring” aslında düzenlemeden fazlasını barındırır. Kodun düzenlenerek optimize edilmesi ve daha anlaşılır hale getirilerek düzenlenmesi refactoring sırasında amaçlanan ana hedeftir. Yazılımın sürdürülebilirliği açısından mevcut kodun tasarımlarının değiştirilerek iyileştirilmesi büyük önem arz eder. Martin Fawler bu kitabında hangi kodların yeniden düzenlemeye ihtiyaç duyduğunu nasıl anlayacağınız ve hangi yazılım dilini kullanırsanız bunu başarabileceğinize odaklanıyor. Yazar ayrıca refactoring yaparken çalışan bir kodu bozma ihtimalinden dolayı oldukça titiz davranılması gerektiğinden de bahsediyor.
Kitabın ilk bölümünde refactoring örneklerine yer verilirken ikinci bölümde refactoring ile ilgili çeşitli kavramlara yer veriliyor. Yazar, kitabın son bölümünde kötü kodun belirtilerinden bahsediyor. Kötü kodun, örneklerle açıklanması akılda kalıcılık açısından fayda sağlayabilir. Sadece bu bölüme odaklanarak bile refactoring’in nasıl yapılabileceğine dair önemli çıkarımlarda bulunabilirsiniz.
Soft Skills: The Software Developer’s Life Manual
Yazılımcılar için kariyer gelişimi ve verimliliğe odaklanan kitap 2014 yılında John Z. Sonmez tarafından yazılmıştır. Kitabı ilginç kılan nokta ise yazarın hem geliştirici hem yaşam koçu olmasıdır. Yazar, hem içeriden hem dışarıdan bir bakış açısıyla yazılımcılar için nasıl verimli olunabileceğine dair çeşitli öneriler sunuyor. 71 kısa bölümden oluşan kitabın dili herkesin anlayacağı sadelikte kaleme alınmış. Yazılım geliştirme, fazla bilgi gerektirdiğinden ve sürekli başarılı ve dikkatli olmayı zorunlu kıldığından kişilere özellikle yeni başlayanlara ağır gelebiliyor. Pek çok yazılımcı bir sonraki aşamada ne yapacağını bilmediğinden ilişki, sağlık, kariyer ve diğer alanlarda bocalayabiliyor. Yazar kitabıyla bu tarz zorlukları yaşamamaları için yazılımcılara hayatın sadece kod yazmaktan ibaret olmadığını göstermeyi amaçlıyor. Yazılım ve yazılımcıların hayattan bağımsız olmadığını savunarak geliştiricilerin soyut bir dünyaya hapsolmasını engelliyor.