Merhabalar,
Hemen hemen herkesin bir an için bile olsa meraklandığı, “Lan?! Acaba…” diye başlayıp, nasıl olduğunu çözmeye çalıştığı veya öğrenmeye başlamak istediği bir konuya değinmek istiyorum: “Programlama”. Dijital dünyada hepimiz bilgisayarlar, telefonlar, tabletler, akıllı TV’ler, otomobiller ve daha nicelerini kullanmaktayız. Peki bunların içerisinde gerçek anlamda çalışabilen yapılar diğer bir deyişle programlar veya uygulamalar nasıl yapılıyor? Bunu sürekli merak eden bir kitle oldu ve çoğunlukla bir kaç öğrenme girişiminden sonra bıraktı, çok azı devam edip iyi bir yazılımcı olabildi. Benim naçizane önerim ise; bırakmayın…
NOT: Birazdan okuyacaklarınız tamamen şahsi görüşlerimdir. Aksini düşünen varsa tabii ki fikrini açıkça dile getirebilir. Bunu üzerine konuşmaktan mutluluk duyarım. 🙂
Bugünlerde hemen her yerde, gerek sosyal medyada, gerek arkadaş çevrenizde bir sürü farklı söylentiler dolaşıyor. Bunlara bir göz atalım ve ardından gerçekten nereden başlamamız gerektiğine değinelim.
Yaygın Tavsiyelere Güvenmeyin
Özellikle de yeni başlayanlara şiddetle önerilen yazılım dillerinin olduğu bir liste ile mutlaka karşılaşmışsınızdır. “En kolay 5 programlama dili” veya “Yeni başlayanların öğrenmesi gereken diller” gibi ilgi çekici başlıklarla karşımıza çıkan bu yazılar sizi tamamen yazılımdan soğutmaya yöneliktir. Genelde yeni başlayanlara Phyton gibi veya Ruby dilleri önerilmekte…
Ama asıl soru şu olmalı : “Neye başlayanlar ?!”
Yazılım öyle başlanılıp bitirilecek bir şey değildir ve bu tarz listedeki programlama dillerini öğrenmeye çalışıp vaktinizi ve hevesinizi boşa harcamayın. Öncelikle ne öğrenmek istediğinizi belirleyin. Siz ne yazmak istiyorsunuz ? veya ne programlamak istiyorsunuz ? Windows Form uygulaması yapmak mı istiyorsunuz veya Console uygulaması yapmak sizi tatmin ediyorsa doğru yoldasınız o listelere devam edebilirsiniz. Fakat kendinize biz vizyon belirleyin. Mesela ben Oyun yapmak istiyorum deyin ve oyun yapmak için ne öğrenmeniz gerekiyorsa onu öğrenin. Yazılım öğrenmek diye bir şey yoktur. Yazılım geliştireceğiniz projeler için bir araçtır sadece. Tek yapmanız gereken geliştirmek istediğiniz projenin nasıl geliştirildiğini öğrenmeniz. Yazılım zaten sonradan oturur.
Yazılım dili bilmek asla yeterli değildir
Bir yazılım dilini asla tamamen bilemezsiniz ve bir programlama dili biliyor olmanız o dil ile yapılan her projeyi yapabileceğiniz anlamına gelmez. Mesela C# biliyor olduğunuzu varsayalım. C# ile Windows Form uygulamasını üst düzey yapabiliyorken, Xamarin‘ ile uygulama yazamazsınız. Çünkü başka bir teknoloji ve bu teknolojide C# sadece bir araç. O yüzden en doğru şey ne yapmak istediğinize karar vermek olacaktır. Android uygulaması mı geliştirmek istiyorsunuz ? Java’dan başlayın öğrenmeye, Web tasarım mı yapmak istiyorsunuz ? HTML ve CSS ile başlayın. Hayatınız boyunca işinize yaramayacak dilleri öğrenmeye vaktiniz yok. Gerçekten yapmak istediğinize odaklanın ve onu en iyi şekilde yapın. Bazı noktalarda istediğiniz, hedef aldığınız teknolojiyi öğrenmek zor gelecektir. Mesela doğrudan mobil uygulamaya atlayan birisi olarak söyleyebilirim ki, aşama aşama ilerlemek en mantıklısı. Önce hangi dil gerektiğini öğrenin ve o dilin giriş seviye ve orta seviyeli örneklerine yönelin. Kolay dil veya zor dil yoktur. Her dilin başlangıç seviyesi vardır. Tek farklı olan şey Syntax yapısı. Giriş seviyede bir kaç proje mutlaka geliştirin. Daha sonra yavaş yavaş istediğiniz platforma yönelin. İşe yarayacaktır. Hedeflerinize doğru ilerlemekten çekinmeyin ve asla bir teknolojiye körü körüne bağlanmayın. Her teknolojinin bir dönemi vardır gelir parlar ve geçer. İşinize yarayan teknolojiler daima değişecektir. Yenilerini sürekli öğrenin ve sabit kalmayın.
Yazılıma nasıl başladım ?
Benim yazılım dünyasına girmem veya buna etkilenmek diyelim, Lise yıllarımda gerçekleşti. 9. sınıfın sonlarına doğruydu. İlk cep telefonum Symbian s60v5 işletim sistemli (çok efsanedir) bir nokia cihazdı ve Bulgaristan’dan gelmişti. Çok büyük bir hevesle aldım kurcalamaya başladım. Fakat bir süre sonra özellikle ayarlara girdiğimde cihazın arayüzünün İngilizce olduğunu fark ettim. Öncelerinde çok dert etmemiştim. Fakat daha sonra Türkçe yapmaya çalıştığımda Türkçe dil seçeneğinin telefonda olmadığını gördüm. O an gözümde çok büyüttüğüm, kendisini kullanmak için heyecanlandığım telefon içimde buruk bir his oluşturmuştu. Durur muyum? Hemen babamın yanına gittim. “Baba bunu telefoncuya götürelim, bunda Türkçe dili yok.” gibi bir cümle sarf ettim. Babam elimdeki telefona bile bakmadan, “O zaman yap” dedi. Daha sonra sırayla şu diyalogu yaşadığımı bugün bile unutmam:
– Ama içinde yok
+ O zaman yükle
-Nasıl yapayım bilmiyorum ki
+ O zaman öğren
– Nasıl öğreneyim ?
+ Araştır
– Kodları nereden bulayım ki?
İşaret parmağı ile kafama tıklatıp “Buradan” dedi. Garip geldi ve bir nebze de hayal kırıklığına uğradım ve dedim ki :
– “Nasıl yapayım bunun tamir edilmesi gerekiyor”
+ Telefoncular nasıl yapıyorsa aynısını yap. Onlar da insan, mühendisler bunu daha önce düşünmüş de yapmış sen hazır şeyi mi çözemeyeceksin ?
Cümlesini duyduktan sonra Google’a yapıştım. O gün 3 veya 4 saat uğraştıktan sonra sıfır bilgim ile sistemde olmayan Türkçe dili sisteme eklemiştim ve bunun gururu ile kendim bizzat yaptığım şeyi keyifle kullanmaya başlamıştım. Daha sonralarında Google’a olan saygım gittikçe arttı. Önce basit şekilde Java’ya girişsem de çok karışık geldi ve bıraktım. O zamanlarda Facebook sayfalarına HTML eklenti eklenmesine izin veriliyordu. Ben de bir sayfa açıp o sayfaya HTML sekme eklemeye çalışırken temel HTML yapısını öğrendim. Fakat bu beni tatmin etmiyordu. Çünkü tasarım çalışmıyordu. Bana tepki vermiyordu. Benim cihaz tabanlı, gerçek manada çalışan bir şeye ihtiyacım vardı. Daha sonralarında Android telefonlar yaygınlaşmaya başladı. Bu sefer de ben bu javayı ve Android’i öğreneceğim diye kolları tekrar sıvasam da maalesef başarılı olamadım. En sonunda telefonumu rootlayıp, bootloader kilidini kırıp custom kernel ve custom romlar kurmaya ve daha sonra bunları düzenleyerek, parçalayarak ve birleştirerek kendi android ROM’umu yapıyordum. Özellikle de halihazırda varolan işlerin üzerinde düzenleme yapmak gelişiminizi çok etkiliyor.
Daha sonralarında Java’yı Minecraft Server’ı açtığım dönemlerde pluginleri düzenleyerek öğrendim, C++ ile ilk tanışmam ise GTA San Andreas için online server kurduğumda, oyun modunu düzenlerken ve geliştirirken oldu. Eğer bir şeyleri yapamıyorsanız o zaman parçaları birleştirin. Geliştirici olmak için sıfırdan yazmanız gerekmez. Hazır sistemleri birleştirebilmek de sizin bir şeyler üretmenizi sağlamaktadır.
Şimdiye kadar üzerinde uğraştığım alanlar için burayı ziyaret edebilirsiniz.
Hayatım boyunca unutmayacağım bir şey varsa, o da beni bu noktaya kadar sürükleyen ilk adımı atmamı sağlayan, babamın şu cümesidir; “-Mühendisler bunu düşünüp yapmış, sen hazır yapılmış şeyi mi çözemeyeceksin?” aslında ne kadar da sıradan bir cümle. Ancak bende yüklü olan anlamı paha biçilemez…