Nasıl Kendi Kendime Yazılımcı Olabilirim?

Yazılımcı Olmak İçin Tek İhtiyacınız Biraz Tutku!

Mert Eroğlu
Yetkin Yayın
5 min readMay 19, 2020

--

Photo by Christopher Gower on Unsplash

İnsanlığın binlerce yıllık bilim çalışmasının, yüzlerce matematikçi ve fizikçinin emeğinin meyvesidir bilgisayarlar. Milimetrik boyutlardaki çipleri harekete geçiren sinyallerin programlanmasıyla başlayıp katman katman inşa edilen sistemlerin sonucu olarak bize sunulan üst seviye programlama dillerini kullanarak bugün bilgisayarlarımızda çalışan programlar oluşturabiliyoruz. Yazılım dediğimiz bu programlarlar görsel-işitsel medyadan dudak uçuklatıcı hesaplamalara kadar birçok alanla ilgili olabilir.

Oluşturduğunuz yazılım ne tür bir iş görüyor olursa olsun onu üretmek size inanılmaz bir zevk verir. Bunun yanında çağımızda işlerin bilgisayarlar üzerinden yürütülmesi olarak basitçe ifade edebileceğimiz dijitalleşme artık olmazsa olmaz durumundadır. Bu alanı geleceğin mesleğinden ziyade geleceğin meselesi olarak görüp ilk adımlarını atmak isteyenlerle bildiklerimi paylaşmak istedim.

Yazılım alanda karşınıza çıkacak kaynakların çoğu İngilizce. Özellikle okuduğunu ve dinlediğini anlama konularında eksik hissediyorsanız ilk önce bunu gidermelisiniz.

Microsoft yönetim kurulu başkanı Steve Ballmer’ın yazılım geliştiricilerin önemi konusundaki ısrarı :)

Temel Programlama

Programlama temelinde veriyi almak, işlemek, bazı hesaplardan geçirip bir sonuç çıkarmaktan ibarettir. Veriler genellikle sayı, string (birden çok karakterin bir araya gelmesi) veya boolean (doğru-yanlış) tipindedir. Bunlar kullanılarak daha kompleks veri tipleri oluşturulabilir. If-else (koşul kontrol etme) yapıları kullanılarak programların verilerin değerine göre farklı şekillerde akması sağlanabilir. Döngüler kullanılarak da veriler üzerinde toplu işlemler yapılabilir. Temelde bunları bildikten sonra birçok şey yapabilirsiniz, gözünüz korkmasın.

Bu yapıları kullanmanız için öncelikle bir programlama dili seçmelisiniz tabii ki.Başlangıç programlama dili seçimi konusunda yakın zamanda YetGen eğitiminde bir konuşmacıdan duyduğum ve aklıma yatan bir yaklaşım var; mobil ve web gibi birden fazla alanda yazılım üretmemize izin veren JavaScript ile başlamak. Böylece ilk öğrendiğiniz programlama diliyle farklı alanları deneyimleyebilirsiniz.

Yeni başlayanların en çok tercih ettiği dillerden biri de Python; doğal dile (İngilizce) benzer yapısıyla, az kodla çok iş yapan bir dil olmasıyla iyi bir giriş dili olduğu söylenebilir. Eğer benim gibi “uzun olsun, açık olsun” tutumunuz varsa Java ile başlamayı da düşünebilirsiniz. Yazılım dilinizi yöneleceğiniz alana göre belirlemek de mantıklı bir strateji olabilir, yazılımın alt alanlarından yazının devamında bahsedip uygun programlama dillerini belirteceğim.

Nasıl başlarım?

JavaScript öğrenmeye karar verirseniz aşama aşama anlatımlar ve alıştırmalardan oluşan bir dersi w3schools sitesinde bulabilirsiniz. Python öğrenmek için yine adım adım egzersizlerle öğreten learnpython sitesini deneyebilirsiniz. Öğrenmek istediğiniz dil ne olursa olsun öncesinde Google, YouTube ve eğitim siteleri üzerinde kapsamlı bir araştırma yapıp içeriği size en uygun olanı seçmelisiniz. Önemli nokta; dersleri takip ederken çekinmeden ellerinizi kirletmeniz, yani uygulamaya geçmeniz.

Öğrendiğiniz her yeni şeyi deneyimlemeli, üzerinde değişiklikler yapmalı, kafanıza oturana kadar onunla oynamalısınız.

Sizden istenen veya sizin hayal ettiğiniz programı kodlayabilmek için ilk önce temel programlama konusunda elinizi güçlendirmelisiniz. Her aşamada öğrendiğiniz yapıyı hemen uygulamaya geçirin, önce olduğu gibi çalıştırın, sonra kodun içeriğini değiştirip sonucun nasıl değiştiğini görün. Bu adımda öğrendiğinizi bir sonraki adımda öğrendiğinizle birleştirin, üzerine koyarak ilerleyin. Çıkmaz sokaklarla ve çözülmez gibi görünen sorunlarla karşılaşacaksınız; inatla çözüm aramalısınız. Danışabileceğiniz biri varsa çok zorlandığınızda mutlaka kapısını çalın.

Not: Bir programlama dilinin temeli konusunda çalışmayı bitirdiğinizde Öklid’in EBOB bulma algoritması gibi çok bilinen basit algoritmaları yapabiliyor olmalısınız.

Yazılım Alt Alanları ve Teknolojileri

Programlama öğrendikten sonra ilerleyebileceğiniz bir çok alan var. Yapay zeka, veri analizi, siber güvenlik, oyunlar, görüntü işleme, mobil ve web bunlardan birkaçı. Bu alt alanlar hakkında daha fazla bilgi almak için Quora üzerindeki bu soruyu inceleyebilirsiniz. Oyunlarla ilgiliyseniz her platform için oyunlar geliştirebileceğiniz Unity dilini öğrenebilirsiniz. Yapay zeka ve veri mühendisliği alanlarında ise daha yaygın olarak Python kullanılıyor.

Son yıllarda mobil uygulamaların websitelerinden daha çok kullanılmasıyla mobil geliştirme de aranan bir özellik oldu. Android için Java veya Kotlin, iOS için de Objective-C veya Swift kullanılıyor. Bunların yanında tek bir kod yazıp her iki platform için de uygulama üretebileceğiniz seçenekler mevcut. Facebook tarafından geliştirilen React Native bu konuda popüler tercihlerden birisi. İki yıl sonra Google tarafından geliştirilen Flutter da her iki platforma uyumlu uygulama üretiyor. Flutter şu anda daha az kişi tarafından kullanılıyor olsa da bu dengelerin değişebileceği değerlendiriliyor.

Mobil uygulamalar tarafından geride bırakılsalar da websiteleri de halen gerekli ürünler. Web geliştiricisi olmak isterseniz karşınıza bir yol ayrımı çıkıyor; front end ve back end. Front-end geliştiriciler sitelerin görünüşlerini ve kullanıcılarla etkileşimlerini kodlayan kişiler. Bu alanda ilerlemek için HTML, CSS ve JavaScript üçgenini tamamladıktan sonra ReactJS veya AngularJS öğrenebilirsiniz. Back end ise siteye gerekli verileri sağlayan, sunucu tarafında çalışan kısım. Mobil uygulamalar da çoğu zaman verileri back-end servislerinden sağlarlar. Sunucu tarafında kullanılan birçok dil var; amacınız kurumsal bir şirkette iş bulmaksa Java Spring Boot veya .NET, kendi uygulamanızı geliştirmekse NodeJS veya Python Django öğrenmeyi deneyebiliriniz.

Alıştırma Önerileri

Programlar yazdıkça ve problemler çözdükçe kodlama konusunda daha iyi hale geleceksiniz. Başlangıçta basit problemlerle başlamalısınız. Örneğin kullanıcıdan girdiler alıp bu girdilere göre farklı sonuçlar üreten basit bir program olabilir. Fibonacci sayılarını bulan, asal sayıları bulan veya ekrana üçgen şeklinde bir çıktı bastıran programlar olabilir.

Sürekli ve bol pratik yapmak iyi bir yazılımcı olmanızı sağlayacaktır. Kodlamayı öğrendiğiniz süreçte günlük hayatta karşınıza bir hesaplama çıktığında hemen bunu bir programla otomatize edebilirsiniz. Pratik yapmak için problemler bulabileceğiniz bazı platformlar da var: Project Euler, Hacker Rank, Programmr, CoderByte, HackerEarth, Exercism, Code Maven.

Mobil

Mobil uygulama geliştiricisi olmaya karar verirseniz ilk adımlar olarak verilerin değişken olmadığı bir uygulama yapabilirsiniz. Örneğin futbolla ilgileniyorsanız futbolcularla ilgili bilgilerin veya müzikle ilgileniyorsanız sevdiğiniz sanatçıların sergilendiği bir uygulama geliştirebilirsiniz. Ayrıca buradakiler gibi ücretsiz back-end servislerini kullanarak gerçek verilerle bir uygulama da ortaya çıkarabilirsiniz. Bu tarz birkaç alıştırmadan sonra hayalinizdeki mobil uygulamayı yapabilir veya mobil geliştirici olarak bir şirkete başvurabilirsiniz.

Web

HTML-CSS-JavaScript öğrendikten sonra kendinize ait bir portfolyo sitesi oluşturabilir, burada kendinizi tanıtabilirsiniz. Daha sonra yukarıda bahsettiğim back-end ve front-end teknolojilerinden birer tane seçip okuduğunuz kitapları (veya izlediğiniz filmleri) puanlandırıp kaydedebileceğiniz bir uygulama yapabilirsiniz. Bunları veya bunlara benzer bir uygulamayı baştan sona inşa etmek size tahmin edemeyeceğiniz ölçüde bilgi ve tecrübe kazandıracaktır.

Bu da benim küçük kitap uygulamam :)

Eleştirmek, katkıda bulunmak, soru sormak veya yardım istemek için aşağıdaki kanallardan birinden iletişime geçebilirsiniz.

Twitter |LinkedIn | GitHub

--

--