Sıfırdan yazılım öğrenirken neler yapmamız gerekiyor?

Yazılım öğrenmenin birçok yolu vardır. İnternette araştırırken bununla ilgili de farklı farklı yazılar ve videolar karşımıza çıkıyor. Bu yazıda sizinle kendi tecrübelerimi paylaşacağım.

Bu yazımızda, yazılma ilk kez başlamak isteyenler ve kendini geliştirmek isteyenler için önemli konuları ele alacağız. Birçok insan bu konuda zorluklarla karşılaşıyor ve kafa karışıklığı yaşıyor. Kendi deneyimlerimden yola çıkarak, size yardımcı olmaya çalışacağım. Öncelikli amacımız, bizim için uygun yöntemi bulmaktır. Gelişim sürecinde verim alınabilecek yöntem, kişiden kişiye değişebilir, bu yüzden öncelikle kendinizi deneyerek keşfetmeniz gerekir.

Yazılım öğrenirken yapılan en büyük hatalardan biri, sürekli olarak sadece video izlemek ve videolarda gösterileni uygulamaktır. Sadece video izleyerek öğrenmeniz çok zor olacaktır. Tabii ki videolardan ve kaynaklardan beslenmek gerekir, ancak öğrendiklerinizi farklı projelerde denemeniz de önemlidir. Deneme yanılma yoluyla kodların mantığını kavramanız, daha kolay ve mantıklı bir hareket olacaktır.

Aklınıza herhangi bir fikir gelmezse, editörünüzde dosya açın ve rastgele bir şeyler yazmaya başlayın. Yazmaya başladıkça fikirler aklınızda canlanmaya ve gelişmeye başlayacaktır. Projelerinizi geliştirdikçe, siz de gelişeceksiniz. Her projede takılmanız olasıdır, ancak bunlar moralinizi bozmasın. Takıldığınız konuları direkt bilen kişilere sormak yerine, konuyla ilgili araştırmalar yapın. Böylece hem o konuyu çözmüş olacaksınız hem de başka bilgiler öğreneceksiniz.

Ayrıca, yazılımla ilgili takip ettiğiniz sosyal medya hesapları ve yazılımla ilgili konuşabileceğiniz insanların olması, ilginizi taze tutmanız ve hevesinizi kaybetmemeniz açısından faydalı olabilir.

Sizlere fikir vermek açısından, başlangıçta hangi dillere başladığımı, bu dilleri öğrenirken kullandığım kaynaklar, yaptığım projeler hakkında ve size hangi projeleri yapabileceğiniz konusunda bilgi vereceğim.

Front-End

HTML-CSS

Ben öğrenme sürecime Java ile başladım. Fakat bir süre sonra faydalı olmayacağını ve yönelmek istediğim alanın bu olmadığını anladım. Daha sonra, web alanına yöneldim ve ilk olarak front-end kısmı, yani HTML, CSS ve daha sonra Javascript öğrenmeye başladım.

Başlangıç olarak, HTML ve CSS mantığını öğrenmek için videolar izlemeye başladım. İzledikten sonra, bunları farklı şekillerde uygulamaya çalıştım ve tasarımlar ortaya çıkardım. Bunun yanı sıra, kendime bir proje belirledim ve saf HTML ile başladım. Daha sonra, yeni konular öğrendikçe ve uyguladıkça, o proje üzerine eklemeler yaptım. Böylece, sayfamın geliştiğini görmek motivasyonumu büyük ölçüde arttırdı ve daha büyük bir hevesle öğrenmeye devam ettim.

Öğrenme aşamasında bu uygulamaların çok fazla faydasını gördüm. Her bilgiyi direkt olarak mantığıyla beraber, nerede, nasıl ve hangi aşamalarda kullanılacağını bilerek öğrendim. Kendi projeme eklemeler yaparken tabii ki takıldığım ve zorlandığım noktalar oldu, ancak yapmak istediğim bir şey vardı ve bunu yapmak için daha fazla araştırma yapmam gerekti. Araştırırken, ek olarak, yeni şeyler de öğrendim ve bunların da bana olumlu yönde faydası oldu.

Belli bir noktadan sonra, tek başıma öğrenmenin benim için yeterli olmayacağını ve tecrübeli birinin yönlendirmesi olmadan zorlandığımı fark ettim. Bu dönemde, Neos Ailesine katıldım ve Duhan Hocamın desteği ve yönlendirmesi sayesinde artık daha sağlam adımlarla ilerlemeye başladım. Duhan Hocam beni projeler geliştirmem konusunda daha da teşvik etti ve zamanla, neden sürekli olarak "proje geliştirin" dediğini daha iyi anlamaya başladım.

Front-end kısmında, küçük projelerle kendimi biraz geliştirdikten sonra, daha büyük projeler yaparak kendimi zorlamanın beni daha da geliştireceğini düşündüm. Bu amaçla, büyük platformların sayfalarını klon proje olarak yapmaya karar verdim. İşe Exxen ile başladım. Önce ana sayfasını iyice araştırdım, hangi kaynaklardan yararlanacağımı tespit ettim ve sayfayı birebir yapabilmek için elimden geleni yaptım. Sonuç, benim seviyemde bir yazılımcı için oldukça başarılıydı ve bunu başka projelerle desteklemeye ve kendimi daha da zorlamaya devam ettim. Netflix ve Blutv'nin klon projelerini de yaptıktan sonra, farklı projelerle devam ettim..

JAVASCRİPT

HTML ve CSS'i öğrendikten sonra, Javascript'e geçme kararı aldım. Javascript öğrenme sürecinde daha zor bir dil ile karşılaştım ve başlangıçta biraz zorlandım ancak programlama dillerinin benzerliğinden dolayı Java'da öğrendiğim şeylerin faydasını gördüm. Yine aynı yöntemi uyguladım: ilk olarak konuları öğrenip daha sonra bu konularla küçük uygulamalar yaparak öğrendiklerimi pekiştirdim. HTML ve CSS’de olduğu gibi, bu yöntem Javascript için de faydalı oldu. Sonunda, HTML, CSS ve Javascript kullanarak projeler ve uygulamalar geliştirmeye başladım.

BACK-END

Front-end alanında ilerledikçe, front-end’in tek başına yetmeyeceğini ve kendimi daha da geliştirmem gerektiğini fark ettim ve back-end alanını da eklemem gerektiğine karar verdim. Back-end öğrenme sürecinde eğitimlerden, videolardan ve mümkün olduğunca farklı kaynaklardan yararlanmaya çalıştım. Farklı kaynaklar incelemek, farklı bilgiler anlamına gelir ve öğrenme sürecinde size çok faydalı olacaktır.

PYTHON - C#

Back-end öğrenirken, ilk olarak algoritma mantığını daha da sağlamlaştırmam gerekti. Makalelerden, videolardan ve kaynaklardan yararlanarak bilgi topladım ve bu konuda da kendimi geliştirdim. Daha sonra hangi dil ile devam edeceğimi araştırdım ve en çok kullanılan iki dil olarak Python ve C#'ı buldum.

Python:

  • Syntax'ın kolay olması nedeniyle daha kolay öğrenilebilir.
  • Kolay okunabilir.
  • Kullanım alanı geniş.
  • Popülaritesi yüksektir.
  • Kütüphane çeşitliliği mevcut.
  • Nesneye yönelik.
  • Tüm işletim sistemlerinde sorunsuz bir şekilde çalışır.
  • Django framework'u ile web alanında kolaylık sağlar ve güvenlik açısından ileri seviyedir.
  • Hazır admin paneli mevcut.

C#:

  • Genel amaçlı bir programlama dilidir.
  • Nesne yönelimli ve bileşen odaklıdır.
  • Verimli programlar üretmenize olanak tanır.
  • Çeşitli bilgisayar platformlarında derlenebilir.
  • Syntax'ı Python'a göre biraz daha karışıktır.

Back-end'e yeni başlayan birisi olarak, bu listedeki terimlerden bazılarını henüz bilmiyordum. Bu yüzden basit düşünerek, kendime göre bir mantık çıkardım. Python, oldukça geniş bir kullanım çerçevesine sahiptir ve yapay zeka, robotik kodlama, siber güvenlik ve veri analizi gibi alanlarda da sıklıkla kullanılır. Böylece, web dışında başka bir alana geçmek istediğim zaman, Python'ı bilmem sayesinde işim biraz daha kolaylaşacaktı ve bu alanlar da zaten ilgimi çeken alanlardı. Ancak, C# ile devam edersem ve ileride bu alanlara geçmek istersem, ayrıca Python öğrenmem gerekecekti. Bunlara ek olarak, Python'ın web tarafındaki Django'yu ve C#'ın .net framework'ünü karşılaştırdığımda, Django'nun birçok yönde daha avantajlı olduğunu gördüm. Bu diller arasındaki farkları daha detaylı olarak başka bir yazımızda tartışacağız.

Back-end sürecinde de aynı yöntemi kullandım. Videoları izleyip öğrendiklerimle küçük projeler yaptım. İlk olarak basit bir blog sitesiyle başladım. Öğrendikçe projeme farklı sayfalar ve fonksiyonlar ekledim. Bu yöntemi uygularken çok fazla hata ile karşılaştım ve bazen hatalardan dolayı yapmaya çalıştığım projeleri sildim. Başlangıçta bu motivasyon kaybına yol açtı, ancak her hatayı araştırdıkça hem hatalarımı düzeltip doğrularını öğrendim hem de farklı bilgiler edindim. Bu süreçte yararlanabileceğiniz bazı siteleri sizin için aşağıya bırakıyorum:

Bu aşamaları tamamladıktan sonra, artık front-end ve back-end ile  birlikte Full Stack projelerine başladım ve bu şekilde kendimi geliştirmeye devam ettim. Bu aşamaları uygulamanın sizin için de faydalı olacağına inanıyorum.