Bloga geri dön
Bizler yazılım geliştiriciler, genel kanının aksine kariyerlerimizi kod yazmaktan çok kod okuyarak geçiriyoruz. Çalıştığımız projelerde geliştirme yapmak için kimi zaman bizden önceki yazılımcıların yazdığı kodları okurken kimi zaman belki de kısa bir süre önce bizzat kendimizin yazdığı kodları okuyoruz. Geliştirme süreci, genellikle mevcut koda eklemeler yapmak veya içerisine mevcut diğer yapılar gibi ve onlarla uyumlu çalışacak yeni yapılar eklemek olarak gelişiyor. Her iki durumda da mevcut kodun nasıl çalıştığını anlamak ve yorumlamak kritik öneme sahip.
Kod okumayı ve anlamayı, okuduğumuz kodu yazan geliştiricinin geliştirmeyi yaptığı andaki zihninde dolaşmak ve onun gibi düşünerek ne yapmaya çalıştığını anlamaya çalışmak olarak düşünebiliriz. Bunu yeterince iyi yapamadığımızda ise ya çalışan sistemleri yaptığımız geliştirmelerle bozuyoruz ya da onlarla uyumsuz çalışan yeni geliştirmeler yapmış oluyoruz.
Kod okuma ve anlama becerisinin gelişmesi ise mümkün olduğunca fazla kaynak kod okumak ve anlamaya çalışmaktan geçiyor. Özellikle de farklı farklı yazılımcılar tarafından yazılmış kaynak kodları okumak, değişik programlama teknikleri öğrenmek açısından önemli. Açık kaynak kodlu projelere katkıda bulunmak da tam bu aşamada devreye giriyor çünkü birçok yazılımcı tarafından geliştirilmiş projelere katkıda bulunabilmek için öncelikle mevcut kodu anlayabilmek ve yorumlayabilmek şart. Kodu anlamaya çalışırken mevcutta çalıştığımız şirketlerde olduğu gibi kodu bizden daha iyi bilen ve bize geliştirme yapacağımız kodun nasıl çalıştığını anlatacak birileri de yok. Bu kısım belki de katkıda bulunmanın en zorlayıcı kısımlarından biri olabilir ancak aynı zamanda kod okuma ve anlama becerimizin gelişmesini sağlayan da en kritik nokta. Ayrıca bu durum geliştirme yapacağımız kodun temiz kod (clean code) prensiplerine uygun yazılmış olmasının ve testinin olmasının kodu nasıl anlaşılabilir kıldığını ve işimizi kolaylaştırdığını kavramak için de önemli bir fırsat.
Açık kaynak kodlu projeler doğası gereği birçok farklı yazılımcının katkısı ile geliştirilmekteler. Bu yazılımcıların birçoğu muhtemeldir ki farklı yazılım geliştirme kültürlerine sahipler. Ancak geliştirilen yazılımın sürdürülebilir olması ve projede belli bir kaliteyi devamlı olarak tutturabilmek de çok önemli. Bunu sağlayabilmenin yolu da zaman zaman önemsenmeyen bazı yazılım geliştirme süreçleri. Açık kaynak kodlu projelere katkıda bulunarak, bu süreçlerin kaliteli bir yazılım geliştirmek için ne kadar kritik olduğunun farkına varabiliriz.
Yazılım geliştirirken bir yazılımcıyı en çok geliştiren ve çoğu zaman en mutlu eden şeylerden bir tanesi de iyi yazılımcılarla birlikte çalışmak. Birlikte çalıştığımız yetenekli yazılımcıların yazdığı kodları okumak, onlarla tasarımı tartışmak ve onların tecrübelerinden faydalanmak bir yazılımcının kariyeri için çok kıymetli. Açık kaynak kodlu projelere katkıda bulunurken de farklı yazılım kültürlerinden hatta farklı ülkelerden yazılımcılarla birlikte kod yazma şansına sahibiz. Bu projelerin çekirdek ekiplerinin genellikle bilinen şirketlerdeki iyi yazılımcılardan oluştuğunu düşünürsek de onların yazmış olduğu kodu okumamız, bizim yazdığımız kodun onlar tarafından incelenmesi ve yorumlanması da bizim için önemli bir fırsat.
Yazılımcılar geliştirme yaparken kullandıkları framework, kütüphane ve teknolojilere katkıda bulunarak bu yazılımların iç yapısını öğrenip, çalışma mantığını daha iyi kavrayabilirler. Framework ve kütüphaneler geliştirilirken bazı yazılım geliştirme prensipleri diğer yazılımlarda olduğundan daha kritik bir öneme sahiptir, dolayısıyla en doğru şekilde uygulanmaları gerekmektedir. Bu prensiplerin uygulama pratiklerini görmek ve anlamak, bazen kafamızda canlanmayıp soyut kalan kavramların somut hale gelmesini sağlar. Kullandığımız programlama dilinin en yeni versiyonunu veya dilin kullanmadığımız bir özelliğini de açık kaynak kodlu projelerde nasıl kullanıldığını görüp deneyimleyebiliriz. Saydığım bu ve benzeri sebeplerden dolayı açık kaynak kodlu projelere katkıda bulunmak bir geliştiricinin teknik yönleri geliştirmesini sağlar.
Bir yazılım geliştiricinin açık kaynak kodlu projelere katkıda bulunması için gerekli motivasyonu sağlayacak en önemli sebep yazılım dünyasına katkıda bulunma ve faydalı olma duygusudur. Yazılım geliştiriciler olarak bizler mevcut işlerimizde birçok açık kaynaklı kodlu projeyi kullanıyor ve onlardan faydalanıyoruz. Ancak bu projeleri mevcut işlerimizde sadece kullanmak ve hiçbir katkıda bulunmamak, açık kaynak kodlu projelerin ruhuna oldukça aykırı bir durum. Bizler yazılım geliştiriciler olarak, kullandığımız bu projelere karşı borçlu olduğumuzu kabul edip borcumuzu bir şekilde ödememiz gerekiyor. Bu borcu ödememizin yolu da bu projelere katkıda bulunarak faydalı olmaktan geçiyor.
Kullandığımız açık kaynak kodlu projenin bir noktasında bir problem yakalamış olabiliriz veya bir eksikliğini görmüş olabiliriz, bu noktada katkıda bulunmak için gerekli özveriyi gösterip ilgili projeye katkıda bulunmalıyız. Katkı sağladığımız projelerin diğer yazılımcılar tarafından geliştirilen birçok üründe kullanılıyor olması ve bu ürünleri kullanan milyonlarca insana yaptığımız katkılar aracılığıyla dokunacak olmamız fazlasıyla motive edici bir durum. Çoğu zaman böyle fırsatları kariyerlerimiz boyunca yakalamak pek mümkün değil ancak açık kaynak kod dünyası, bizler için bu tip fırsatlar ile dolu.
Bu yazımda, yazılım geliştiricileri açık kaynak kodlu projelere katkıda bulunmaya motive edecek 5 sebepten bahsettim. Kendime motivasyon sağlarken de kullandığım bu sebepler umarım daha fazla yazılımcının açık kaynak kodlu projelere katkıda bulunmasına öncülük eder.
Blog yazmak için ne yapmak gerekiyor herhangi bir şart var mı?
Gerçekten faydalı bir metindi. Elinize kolunuza sağlık Murat Bey.
Güzel bir yazı olmuş , açık kaynaklı kodlamanın lisans problemini ortadan kaldırdığını sanıyordum ama şimdi sizin blogunuzdan anladığım kadarıyla kendimizi o mecralarda 3 kat daha hızlı geliştirir ve ortama ayak uydururuz #openCV #pyhton
Hiç bir zaman eskimeyecek bir konuyu çok güzel ele almışsınız. Teşekkür ederim yazı için ellerineze sağlık.