Yazılım Öğrenmeden Önce

Yazılım Yolculuğunuza Başlamadan Önce Bilmeniz Gerekenler

Adem Efe Devrez
TechSheet
6 min readOct 2, 2023

--

“Eğer baştan başlayacak olsaydım yazılımı nasıl öğrenirdim?” Bunun gibi başlıklara sahip videolara ve yazılara daha önce denk gelmişsinizdir. Bu yazımda ben de kendime aynı soruyu soruyorum ve eğer bugün yazılıma sıfırdan başlayacak olsam neler yapardım, nelere dikkat ederdim, yazılıma başlayacak bir kişi neleri bilmeli, bunlardan bahsedeceğim.

Yazılım Tam Olarak Ne?

Genelde yazılıma başlamak isteyen kişilere hemen yazılım dilleri önerilir ancak ben bundan önce size yazılımın nasıl bir şey olduğunu göstermek istiyorum. Etrafımda birkaç kez “Bak her şeyi 0 ve 1'lerle kodluyorlar, düşünsene çok zor değil mi?” tarzı şeyler duyduğum oldu. Bu tarz muğlak ve işi aslından daha karmaşık, daha zor gösteren söylemler gözünüzü korkutmasın! Birazdan göstereceğim üzere, bazı yazılım dilleri konuşma dilimize o kadar yakın ki dümdüz İngilizce okuyabiliyoruz.

Bakın, işte kod! Ve okunuşu. 0'ları ve 1'leri görebiliyor musunuz?

Şu an kodu gördüğünüzde anlayamamış olabilirsiniz. Bu gayet normal çünkü henüz yazılım bilmiyorsunuz. Size önerim döngüleri öğrendikten sonra bu kodu tekrar okumaya çalışmanız. İşin aslına gelirsek yazılımın kendisini öğrenirken sıfırlarla ve birlerle, elektrik devreleriyle, yüksek matematik ve fizikle uğraşmak zorunda kalmayacaksınız. Ha ilginizi çekiyorsa yine öğrenebilirsiniz ama bunlar hiçbir şekilde bir önkoşul değil.

Yazılım öğrendiğiniz süre boyunca bilgisayara “Şunu yap, bunu şu şekilde yap, eğer böyleyse bunu yap şöyleyse şunu yap” demeyi öğreneceksiniz. Zaten yazılım aslında tam olarak bu.

İlk kez bir yazılım dili öğrenmek

Yazılım öğrenmeye bir yazılım dili seçerek başlayacaksınız ancak hangi yazılım dilini öğrenmek istediğinize karar veremiyor, “Ya yanlış seçim yaparsam ne olacak?” diye endişeleniyor olabilirsiniz. Ancak endişelenmeye hiç gerek yok! Çünkü bir yazılım dilini öğrendikten sonra diğer yazılım dillerini öğrenmeniz çok daha kolay oluyor. Muhtemelen bunu da daha önce duydunuz ve yazılımla ilgili diğer pek çok söylemin aksine bu doğru. Neden doğru olduğundan kısaca bahsedeyim.

İlk kez müzik aleti çalmayı öğrenen birini düşünelim. Bir yandan enstrümanı nasıl tutacağını, nasıl çalacağını öğreniyor; bir yandan da notaları, skalaları, akorları, yani Müzik Teorisi’ni öğreniyor. Şimdi aynı kişi bir süre sonra başka bir müzik aletini öğrenmeye karar versin. Evet, bu yeni enstrümanı nasıl çalacağını öğrenecek, ama tekrardan Müzik Teorisi’ni öğrenmesine gerek var mı? Hayır.

Gördüğünüz üzere müzik öğrenmeyi ikiye ayırdım: enstrümanı öğrenmek ve Müzik Teorisi’ni öğrenmek. Her bir enstrümanın çalma kuralları değişse de müzik teorisi hepsinde ortak ve bir kez öğrenildiği sefer her yeni enstrümanla tekrardan öğrenilmesine gerek yok. İşte yazılım da tam olarak böyle.

Yazılımı da aynı şekilde ikiye ayırmak mümkün: seçtiğimiz yazılım dilinin yazım kuralları yani Syntax, ve yazılımın mantığı yani Algoritma. Aynı müzik öğrenirken olduğu gibi, ilk kez yazılım öğrenirken hem seçtiğiniz dilin syntax’ını hem de algoritma kurmayı, bu algoritmalar ile problemler çözmeyi öğreniyorsunuz. Ancak bir kez Algoritma’yı (ve daha kapsamlı ifade etmek gerekirse Bilgisayar Bilimi’ni) öğrendikten sonra yeni bir yazılım dili öğrenmek isterseniz yalnızca o yeni dilin syntax’ını ve kendine özel kurallarını öğrenmeniz yetiyor. Bu yüzden ya yanlış dili seçersem diye endişelenmenize hiç gerek yok. Seçtiğiniz yazılım dilinin size artık yetmediğini veya yanlış dili seçtiğinizi düşünürseniz başka bir dil seçersiniz, şimdiye kadar öğrendiğiniz kavramların bu dilde nasıl yer aldığını hızlıca öğrenirsiniz ve yazılım öğrenmeye kaldığınız yerden devam edersiniz. Yazılım, deneyip yanılmanın uzun uzun plan yapmaktan daha avantajlı olduğu bir alan. Yine de en başta tek bir dil seçip onda derinleştikten sonra başka bir yazılım diline geçmenizi öneririm.

Syntax ve Algoritma

Bu konuyu da aradan çıkardığımıza göre artık yazılım dili seçmek ile ilgili diğer her şeyi sonraki yazıma bırakabiliriz. Şimdi başka bir soruya geçelim: “Yazılım öğrenmeden önce veya yazılım öğrenirken neleri bilmem lazım?”

Altın Kural: İngilizce

Yazılım öğrenmek için İngilizce bilmeye ihtiyacınız var mı? Hiç oyalanmadan cevap vereyim: Evet. Yazılım öğrenmek istiyorsanız ya öncesinde ya da öğrenme süreciniz devam ederken İngilizce öğrenmek zorundasınız. Ne kadar erken o kadar iyi, durum bu kadar net. Mesela yazılım yolculuğunuzun en başından başlayarak İngilizce kaynaklardan faydalanabilmenin öneminden bahsedelim:

Bir yazılım dili seçtikten sonraki aşama, o yazılım dilini öğrenmek için kaynak aramak olacak. Bu esnada bir şeyi fark edeceksiniz: hem İngilizce kaynaklar var hem Türkçe kaynaklar var. Biri diğerinden daha iyi oluyor mu? Hangisini tercih etmeliyiz? Bu soruları sorduğumuzda şunu fark edeceğiz ki Türkçe bir kaynak varsa İngilizce bin kaynak var ve bazı ücretsiz İngilizce kaynakların kalitesine ücretli Türkçe eğitimler yaklaşamıyor bile. Ayrıca yeni ortaya çıkan bir teknolojinin sağlam bir Türkçe kaynağının ortaya çıkması iki üç yıl alabiliyor ki bu iyimser bir rakam. Eğer yeni teknolojiler, yeni diller hakkında endişelenmem için daha çok erken, şimdilik Türkçe başlayabilirim diyorsanız yanılmıyorsunuz. Ancak bu konuda Can Değer’den alıntılayacağım bir söze hak veriyorum “İngilizcen olmadan yazılıma başlayabilirsin ancak ilerleyemezsin.

Sorun kaynak arama ile de sınırlı değil. Ne kadar iyi olursanız olun er geç hatalı kod yazacaksınız. Bu olduğunda programlarınızdan alacağınız hata mesajları İngilizce olacak. Programın size vereceği hata kodunu okuyarak nerede hata yaptığınızı ve nasıl düzeltebileceğinizi anlamanız gerekiyor. Hadi çıkan hata mesajını arama motoruna kopyalayıp yapıştırdınız, ancak o da ne? Karşınıza çıkan, hatanın çözümünü anlatan sitelerin hepsi de İngilizce. Hadi hasbelkader Türkçe bir çözüm buldunuz, şanslısınız. Bu döngü daha ne kadar devam edebilir? Gün gelecek öyle bir hata alacaksınız ki internette net bir çözümünü bulmakta zorlanacaksınız.

Peki İngilizce bilmiyorsak veya İngilizcemiz yazılım kaynaklarını anlamaya henüz yetmiyorsa ne yapmak gerekiyor? İngilizce nasıl öğrenilir? Bu soru kendi başına uzun ve detaylı bir yazıyı hak ediyor ve yakın zamanda bu yazıyı yazıp sizlerle paylaşmayı düşünüyorum ancak o zamana kadar şunu söyleyeyim ki Duolingo veya muadili bir program indirin ve her gün beş dakika olsa dahi aksatmadan çalışmaya başlayın. Ne olursa olsun, ne yaparsanız yapın ama mutlaka İngilizce öğrenin!

İkinci Altın Kural: Google Sizin Dostunuz

Bu konuya başlarken eğitim sistemine çok laf edesim var o yüzden edeceğim: şimdiye kadar bir şeyi öğrenmek, ona dair bilgileri ezberlemek ve sınavda karşımıza çıkan soruları bu bilgilerle çözmekten ibaret oldu bizim için. Bu düşünce kalıbı, gerek yazılımda gerekse kendi kişisel gelişiminiz için öğrenmeye karar verdiğiniz başka herhangi bir alanda size çok zarar verecek. Bu konuda hiç abartma yapmıyorum, hiç dramatik de davranmıyorum. Muhtemelen önünüzdeki en büyük engel bu düşüncenin kendisi olacak yazılım yolculuğunuzda.

Kendi yolculuğumdan bir örnek vereyim. Yazılım öğrenme sürecimin başlarında, temel birkaç kavramı öğrendikten sonra pratik yapmak için HackerRank’e kaydolmuştum ve oradaki basit soruları çözüyordum. HackerRank sorularının formatı “Şunu yapan bir program yaz.”dır, laf arasında söylemiş olayım. Birkaç problem çözdükten sonra bir soruda takıldığımı hatırlıyorum. Ne yapmam gerektiğini az çok anlamıştım ancak çözümün bir kısmını nasıl yapacağımı bir türlü bulamıyordum. En sonunda internetten baktım, çözümünü buldum, uyguladım ve problemi çözdüm. Ancak bunu yaptığım zaman soruyu hakkıyla çözmediğimi düşündüm, kopya çektiğimi hissettiğim için moralim bozuldu ve HackerRank’e bir süre ara verip temelleri tekrar çalışmaya karar verdim. HackerRank’e veya başka herhangi bir yazılım pratiği yapma sitesine girmem altı ay sonra olacaktı.

Bu şekilde hareket etmemin sebebi, küçük de olsa bir program yazmaya başladığım zaman nesini nasıl yapacağımı son noktasına kadar bilmem gerektiğini sanmamdı. Henüz beş altı kavram öğrenmişken bu yanılgıyı sürdürmek kolaydı ancak öğrendiklerim bir dağ gibi yığılmaya başladıkça bu işin böyle olmayacağına akıl erdirmeye başladım. Eş zamanlı olarak yazılımcılar için rehber videoları izleyedururken “Google sizin dostunuz.” şeklinde bir ifade duyduğum zaman taşlar yerine oturdu.

Öğrenmek ezberlemek değildir. Zaten internetin kendisi yüzünden hiçbir bilgiyi ezberlemek zorunda değilsiniz, o bilgiyi ne zaman, nasıl kullanacağınızın anlayışını geliştirdikten sonra bilginin kendisini unutsanız bile sorun değil. İnternetten bakıverirsiniz. Çözümünü hatırlayamadığınız bir soruna Google’dan baktınız diye işten atılmazsınız, ancak bunu bile yapamıyorsanız işiniz riske girer. Günümüzde bir sorunun çözümüne internetten bakabilmek, o sorunu çözecek yöntemi bulabilmek bile kendi başına bir yetenek, özellikle de yazılımcılar için hayati bir yetenek.

Toparlamak Gerekirse

Bu yazıda yazılımın ve yazılım öğrenmenin tam olarak ne olduğundan bahsettik. Yazılıma başlamadan önce veya yazılım öğrenirken İngilizcemizi geliştirmemiz gerektiğini, bir yandan da bilgileri ezberlemek yerine nasıl kullanacağımızı öğrenmemiz gerektiğini, bilginin kendisine zaten internetten bakabileceğimizi anlattık. Yani yazılım öğrenmeden önce bilmeniz gereken, yazılım öğrenme yolculuğunuzu kolaylaştıracak bu konuları ele aldık. Buraya kadar her şey iyi güzel, peki yazılım öğrenmeye nasıl başlayacağız? Mesela ilk yazılım dilimiz hangisi olmalı, hangi yazılım dilini öğrenmeliyiz? Bu da bir sonraki yazımın konusu olacak. O zamana kadar kendinize iyi bakın, hoşça kalın!

--

--