şahanhasret@home:~$

Yazılıma Yeni Başlayacaklara Tavsiyeler

Malum pandemi sürecinde evde kaldığımız bu günlerde çok fazla yazılıma yönelme oldu. Pandemi sürecinde evden çalışılacak bir ortam yaratmak isteyen herkes yazılım öğrenmeye çalışıyor. Fakat bir çok insan (sosyal medya üzerinden ekseriyetli olarak bu konularda soru geliyor) nereden başlayacağını bilemiyor. Hangi dil ile ne yapılır, daha doğrusu hangisinde daha rahat istenilen proje üretilir orada tıkanıyor. Bu girdi ile yeni başlayanlara ipuçları, genel bilgi ve kaynak vermeye çalışacağım.

Yazılıma başlamak için öncelikle kafanızda ne üretmek istediğinize karar verin. Oyun mu? Data Analiz mi? Yapay Zeka mı? Web Yazılım mı? Gömülü Sistem mi? Masaüstü Programlama mı? Mobil Geliştirme mi? Öncelikle buna karar vermeniz gerekmekte. Bu platformlar için çeşitli diller mevcut olup bu diller arasında Syntax (Söz Dizimi Kuralları) hariç çok fazla fark olmamasına karşın Oyun ve Mobil Geliştirme dediğimiz mecra tamamen OOP(Nesne Yönelimli Programlama) üzerine kuruludur. Nesne Yönelimli Programlamayı yazının ilerleyen kısımlarında anlatacağım.

Öncelikle yazılımcıı olmak isteyenlere ipucu vereyim daha sonra hangi dil ile hangi platform daha rahat kodlanır onu anlatayım. Maddeler halinde gideceğim. Kaynaklar önereceğim.

1) Algoritma Öğrenin:

Yazılıma başlamadan önce mutlaka yapmanız gereken şey tam olarak bu. Yazılım dahil her işin yapılış aşamalarını öğrenmek diyebiliriz buna. Okullarda genelde çay demleme üzerinden anlatılır. BTK üstünde eğitimi mevcut ve gayet kaliteli bir eğitimdir.

2) Döküman Okuyun:

Her dil ile alaklı dökümanları okuyun. Güncellemeleri takip edin. Bu size hem dil öğrenme de hem de kurslar dışında öğrenme kaynağı konusunda fırsat verecektir. Malum kurslar sadece eğitmenin bildiği kadarıdır.

3) Dil Öğrenin:

Dil öğrendiğiniz takdirde herhangi bir ücret ödemeden her dili kendi kaynağından öğrenebilirsiniz. FreeCodeCamp gibi oluşumlarda ise başla bitir mantığındaki kurslar hem ücretsiz hem de uzmanlar tarafından verilmektedir. Bu şekilde daha rahat öğrenebilirsiniz. Ayrıca StackOverFlow’da diğer meslektaşlarınız ile yardımlaşabilirsiniz.

4) Not Alın:

Defter tutma alışkanlığınız olsun. Öğrendiğiniz komutları oraya not alın. Takıldığınız yerlere bakabilirsiniz. Ayrıca onu ararken unuttuğunuz başka komutları da öğrenebilirsiniz. Hem kim bilir belki o notları bir gün kitap olarak yayınlarsınız.

5) Blog Açın:

Evet kendinize kişisel bir blog açın. Jekyll ile Github üstünde blog açmak gayet kolay. WordPress, Medium, Blogger farketmez kendinize bir blog kurun. Örnek vermek gerekir ise kendi blog adresim: https://nickzsche.github.io/ GitHub üstünde açıldı. Üstte dediğim gibi hem not almayı hem de yaptığınız işler için bir portfolyo oluşturmanızı sağlar.

6) GitHub Kullanın:

GitHub açık kaynak projelerin yayınlandığı bir yazılımcı platformu. Buraya proje yüklemekten, açık kaynak projelere destek olmaktan ve oradaki kodları okumaktan asla kaçmayın. Kodları okuyarak kod bilginizi geliştirebilirsiniz. Şahsi olarak OOP(Nesne Yönelimli Programlama) temellerimi orada geliştirdim.

7) Bir Programlama Dili Öğrenin:

Burada dediğim şey bir dili tamamen öğrenip diğer dillere geçin bu size sonraki dilleri öğrenme kolaylığı sağlar. Ayrıca bir dili bitirmeden başka dile geçmek kafanızı karıştırabilir. Bu da daha önceki yıllardan kalma bir blog yazım. https://medium.com/@agarthacompany/python-ve-diğer-dilleri-karşılaştıralım-8bbbc9e870ea dilleri karşılaştırdığınız zaman çok bir fark olmadığını görebilirsiniz.

8) OOP Öğrenin:

Nesne Yönelimli Programlama sizlere büyük kolaylık sağlar. 1 defa yazar ve ardından o kodu istediğiniz yerde tekrar ve tekrar kullanabilirsiniz. Bir program içinde 1000 defa Print yazmak yerine 1 defa fonksiyon tanımlamanız size kolaylık sağlayacaktır. Ayrıca bir kod içinde örnek vermek gerekir ise bir özelliği değiştirmek istediğiniz vakit tek tek her satırı düzeltmek yerine sadece classları düzeltmeniz işinize yarayacaktır.

Şimdi ise hangi dil ile hangi platform daha rahat kodlanır onu görelim.

1) Yapay Zeka ve Veri Bilimi:

Yapay zeka ve veri bilimi için revaçta olan iki dilimiz mevcut. Bunlar Python ve R dilleri. İkisinin de öğrenimi kolaydır fakat naçizane tavsiyem yazılıma bu dillerden ziyade C ve C++ gibi diller ile başlamanız. O diller ile yazılım temellerini kavrar iseniz daha rahat edersiniz. Neyse konumuza dönelim. Özellikle Python binlerce kütüphane barındıran bir yazılım dilidir. Her kütüphanenin dökümanı internet üzerinde mevcuttur. Her yazılım dilinde olduğu gibi eğer “İngilizce” biliyor iseniz kendi dökümanları ile dili çok rahat şekilde kavrayabilirsiniz.

Kaynaklar:

Eğer okumayı seviyor iseniz Fırat Özgül tarafından yazılmış https://python-istihza.yazbel.com/ bu “Türkçe” kaynak işinizi görecektir. İsterseniz internette Pdf hali mevcut onun çıktısını da alabilirsiniz. Buradan Python ile veri analizine ve yapay zeka temellerine geçebilirsiniz.

Hayır ben izlemeyi seviyorum diyorsanız https://gelecegiyazanlar.turkcell.com.tr/egitimler#veri_bilimi bu link üzerinden sertifikalı olarak Python ve Veri Bilimi konusunda Mustafa Vahit Keskin hocadan eğitim alabilirsiniz. Benim Python öğrendiğim sistem burasıdır. Ayrıca Btk Akademi üstünde yine Sadık Turan tarafından verilen Python eğitimleri mevcut. Bunlar tamamen ücretsiz. R Dili için ise ücretsiz kaynak göremedim pek. Onun içinde yine Mustafa Vahit Keskin tarafından verilen R kursunu düşük ücretler ile alabilirsiniz o da burada https://www.udemy.com/course/r-programlama/. Elbette sadece programlama dili ile bitmiyor. Sql bilmeniz gerek veri analizi için. Onun için de yine Turkcell ve Btk akademi de videolu eğitimler mevcut.

2) Oyun Programlama:

Oyun programlama kısmı tamamen nesne yönelimli programlama dediğimiz olay üstüne kuruludur. Oluşturulan classlardan yeni nesneler üreterek kodlanabilir. Gözünüzü korkutmasın, zaten artık popüler her dil nesne yönelimli programlama mantığı üstüne işliyor. Öğrenirken kafanız karışabilir fakat kavraması o kadar güç değildir.

Oyun programlamak için bir kaç popüler oyun motoru ve kütüphane mevcut. Burada işlemler tamamen tercihinize kalmış. Misal C# öğrenerek Unity üstünde geliştirme yapabilirsiniz. Mobil oyun yapacak veya küçük ölçekli bir gruba ve süper sistemlere sahip değil iseniz Unity biçilmiş kaftan. Yok ekibiniz büyük ve görsel olarak muazzam işler çıkartacak iseniz Unreal Engine kullanabilirsiniz. C++ ile kodlama yapılıyor orada. Godot Engine ise GDScript denilen Python benzeri bir dille kodlanıyor. Tamamen ücretsiz ve açık kaynak kodlu. Yok hayır ben hikaye tabanlı bir oyun yapacağım diyorsanız da Ren’Py kullanmanızı tavsiye ederim. Python ile yazılan, öğrenmesi kolay çoklu platform destekli bir oyun motoru. Oyun motoru ile uğraşmak istemiyorum diyorsanız da Libdgx ile Java kullanarak oyunlar geliştirebilirsiniz. Ayrıca PyGame ile Python üstünde kodlama yaparak yine oyunlar geliştirmeniz mümkün.

Kaynaklar:

Unity için https://gelecegiyazanlar.turkcell.com.tr/egitimler#oyun_programlama ve Btk Akademi üzerindeki eğitimler Unity için yeterli olacaktır. Unreal ise ücretsiz kaynağa pek rastlamamamdan ötürü Udemy üstündeki kurslar ile öğrenilebilecek bir oyun motorudur. Godot Engine için ise Yazılım Dedektifi ve Aprın Çor Tigin kanallarında Türkçe kaynak bulabilirsiniz. Ren’Py ile çok kısa Türkçe eğitimler var fakat yakın zamanda onu bizzat kendim çekeceğim. Yine dediğim gibi eğer İngilizce diliniz var ise kendi kaynaklarından çok daha rahat şekilde hepsini öğrenmeniz mümkün.

3) Mobil Programlama:

Artık bilgisayarların ellerimizdeki telefonlara dönüşmesinden ötürü mobil programlama hızla yükseliyor. Ve geliştirmek için bir sürü yol var. Android Geliştirme istiyorsanız Java ile başlayabilirsiniz. Kotlin ile de pekiştirme yapmanız mümkün. Bana sorar iseniz Java hiç bilmiyorsanız eğer direkt olarak Kotlin ile de başlayabilirsiniz. Ayrıca yine Python ile Kivy/KivyMd kullanarak geliştirme yapmanız mümkün. Objective-C ve Swift kullanarak ise IOS geliştirme yapabilirsiniz. Hayır tek tek uğraşmak istemiyorum diyorsanız da Dart dili öğrenerek Flutter, Javascript öğrenerek ReactNative ile iki platforma birden uygulama üretebilirsiniz. Ben Microsoft üstünden ilerlemek istiyorum diyorsanız da artık pek kullanılmayan Xamarin ile geliştirme yapmanız mümkün. Onun için de C# öğrenmeniz gerek.

Kaynaklar:
Android için yine BTK Akademi üstünde olan Atıl Samancıoğlunun Kotlin Eğitimi ve https://gelecegiyazanlar.turkcell.com.tr/egitimler#mobil_programlama Turkcell Eğitimleri mevcut. Turkcell eğitimi yazı, Btk ise video eğitimdir. Turkcell üstünde olan Java diğeri ise Kotlin. IOS için Turkcell’de verdiğim link üstünde Objective-C eğitimi mevcut. Bilgeiş ise Odtü onaylı başarı sertifikası veren bir kurum orada ise https://bilgeis.net/tr/courses/35/swift-ile-ios-programlama Swift eğitimi mevcut. Flutter için ise Google Turkiye ve Flutter Türkiye tarafından verilen ve geçtiğimiz günlerde bitmiş olan Flutter kampına buradan ulaşabilirsiniz https://www.youtube.com/watch?v=lVVcrBnGzEA&list=PLZj2Q42tw-68zEBhpO_2mwX-1roiSvEHd.

4) Web Yazılım:

Web Yazılım çok geniş bir alan. Benim alanım olmasa da hızla büyüyen ve artık hemen hemen her dil ile kodlanabilen bir alan. Web Yazılım için olmazsa olmaz bilmeniz gerekenler Html/CSS/Javascript bilgisidir. CSS yerine naçizane tavsiyem Bootstrap da öğrenerek işlerinizi kolaylaştırmanız. Web yazılım FrondEnd ve BackEnd diye ayrılır. FrontEnd en basit tabir ile gözle gördüğümüz site bileşenlerinin tasarımı BackEnd ise o bileşenler üstünde işlemler yapmamızı sağlayan yazılım dilleri ile kodlanmış scriplerdir. FrontEnd kısmı üstte dediğim şekilde kodlanırken BackEnd için seçenekler çok fazladır. En meşhur ve bilinenleri Php ve Asp.Net’tir. Php öğrenmesi kolay ve topluluklar sayesinde yardım alabileceğiniz, platform bağımsız birdildir. Yani Linux sistem üzerinde de gayet rahat çalışabilirsiniz. Asp.Net ise ISS ile çalışan, Windows Tabanlı, C# ile kodlanan bir yazılım dilidir. Genelde kurumsal firmalar ve devlet sistemleri tercih eder. Ayrıca Asp Form ile de sürükle bırak mantığı ile FrontEnd oluşturmak mümkün. Bunun yanında Django, Flask gibi Python kütüphaneleri de mevcut. Ayrıca Ruby on Rails, Ruby dili ile geliştirme yapanlar için büyük kolaylık. Ayrıca yine Ruby ile Sinatra da mevcut. Javascript öğrendim ben daha fazlasına gerek yok diyorsanız da benim de favorim olan Node.js geliştirme yapmanız da yardımcı olacaktır.

Kaynaklar:

https://gelecegiyazanlar.turkcell.com.tr/konu/web-programlama tamamenını bitirdiğiniz takdirde çok rahat şekilde web geliştirme yapabilirsiniz. Ayrıca BTK Akademi üzerindeki web geliştirme kursları da size gayet uygun olacaktır. Engin Demiroğ tarafından anlatılmakta. Yine BTK üzerindeki Python eğitimlerinde Django eğitimi mevcut. Btk Akademi üzerinde yine Bootstrap eğitimi mevcut. Ayrıca oradan SEO eğitimi alırsanız Web geliştirme yanında kolunuzda bir altın bilezik olacaktır. Web için çok fazla kaynak var. Hemen hemen her eğitim sitesinden çok rahat şekilde öğrebilirsiniz. İngilizceniz var ise W3Schools tavsiyem. Gerçekten çok güzel bir kaynak.

5) Masaüstü Programlama:

Web ve Mobil Yazılımın gelişmesinden ötürü artık yavaş yavaş azalıyor fakat hala iş imkanları mevcut. Kodlaması en rahat ve UI(Arayüz) tasarımı en kolay yazılım platformudur. Örnek vermek gerekir ise Visual Studio yükleyerek C# Forms açtığınız takdirde tamamen sürükle bırak yöntemi ile kendinize bir arayüz oluşturup bunun altına sadece ne yapması gerektiğini kodlayabilirsiniz. Keza Java ile de Netbeans IDE(Geliştirme Ortamı) yükleyerek yine sürükle bırak arayüz oluşturmak mümkün. C++ için ise QT Designer mevcut. Python için de. Burada öğrenmek istediğiniz dil size kalmış. Python, C#, Java, C++, JavaScript gibi diller hala masaüstü geliştirme de kullanılıyor. Elbette daha saymakla bitmeyecek kadar dil mevcut fakat en popüler olanlar bunlar.

Kaynaklar:

BTK üzerindeki Java ve C# eğitimleri bu iş ideal. Engin Demiroğ tarafından anlatılıyor. Keza yine üstte verdiğim Python kaynakları da işinizi görecektir.