7 Temmuz 2020

10 Adımda Yazılıma Başlama Kılavuzu

Hamid Torres

Yazılıma başlamak isteyenlerin etraflarında yazılımla ilgilenen kişilere sordukları bazı sorular vardır; ‘yazılıma nereden başlamalıyım’, ‘ilk olarak hangi dili öğrenmeliyim’ ve ‘sen kaç dil biliyorsun’ gibi.

Ben de fazla detaya inmeden, işinize yarayacak şekilde, yazılım sektörünün bazı alanlarına değinip yol haritaları, kaynak ve önerilerle bir yazılıma başlama kılavuzu hazırladım.

Giriş

Şu an bu yazıyı okuduğunuz web sitesi ya da uygulama, günde saatlerce zaman ayırdığınız bilgisayarınız, telefonunuz… Tüm bunların hepsi belirli kodlar, algoritmalar sayesinde yazılmış, oluşturulmuş şeyler. 

Hiç bilgisayar oyunu oynadınız mı? Veya bilgisayarınızı, telefonunuzu kullanarak Facebook, Twitter gibi webs itelerinde vakit harcadınız mı? İşte, bunlar ve bunların çok daha fazlası yazılımın, yazılım dillerinin bize sunduğu şeyler. 

Peki, bu sektörde ne gibi alanlar var ve başlangıç için neleri öğrenmeniz gerekiyor? 

Sektörün en önemli alanlarından birisi, web development (web geliştirme). Web geliştiriciler e-ticaret, haber ve aklınıza gelebilecek diğer tüm içeriklere sahip web sitelerini oluşturur, geliştirirler. Web geliştirme de kendi içerisinde birkaç alt alana bölünüyor. Bunlar arasında öne çıkanlar Front-End ve Back-End geliştirme. 

apple laptop devices

Front-End

Front-End geliştiriciler web uygulamaları, web siteleri ve web araçları geliştirmede büyük rol oynarlar. Fakat Front-end geliştiriciler (developer) bu uygulamaların sadece görünümü, düzeni ve içeriği ile ilgilenir, bu kısımları geliştirirler. Yani; eğer bir Front-end geliştiricisi olmaya karar verdiyseniz, bir web sitesinin nasıl görüneceği ve kullanıcı ile olan etkileşimi tamamen size bağlı olacak. Öğrenebileceğiniz onlarca teknoloji var. Fakat HTML, CSS ve JAVASCRİPT öğrenmek, başlangıç için fazlasıyla önemlidir. 

Back-End

Back-end geliştiriciler (developer), yukarıda bahsettiğim web sitesinin sunucu ile olan ilişkisi, Front-end’cinin yazdığı kodların nasıl işleneceği, vs. ile ilgilenirler. Genellikle Java, PHP, Python ve Node.js kullanılırlar. Bunlardan birini üst seviyede bilmek size büyük fayda sağlayacaktır. 

Sonuç olarak, Front-end ve Back-end birbirlerine paralel şekilde çalışır ve web geliştirmede ikisi de çok önemlidir. 

coding

Aralarındaki fark; Front-end, kullanıcının iletişime geçtiği, web sitesinin görünen kısmı ile uğraşırken Back-end, kullanıcının direkt olarak iletişime geçmediği, fakat web sitesinin işleyişinde önemli olan kısımlarla ilgilenir. 

Kısaca; Front-end, vücudunuzun insanlara görünen kısmı iken back-end, insanların göremediği fakat hayatta kalmanızda büyük rol oynayan iç organlarınızdır.

software engineer

Artificial Intelligence/Machine Learning (Yapay Zeka ve Makine Öğrenmesi) 

Yapay zeka geliştiricileri oyunlar, robotlar ve diğer yapay zeka uygulamaları için yazılımlar geliştirirler. Mesela; yazdıkları bir program, bir robotun diğerleri ile iletişime geçmeyi öğrenmesini sağlayabilir veya usta bir satranç oyuncusunu yenmesini sağlayabilir (bkz. Deep Blue). 

Bilgisayar bilimi, robotik ve özellikle matematik gibi konularda bilgiler edinmeniz ve Python ile başlangıç yapmanız ilk adımları atma açısından önemlidir.

Makine öğrenmesi; bilgisayara, verilere/bilgilere bakarak nasıl karar verileceğini ve tahminde bulunulacağını öğretmekle ilgilidir. Yine aynı şekilde bilgisayar biliminin temellerini anlamak, istatistik ve matematik gibi alanlarda bilgi sahibi olmanız önemlidir. 

Mobil Uygulama Geliştirme (Mobile Application Development) 

Mobil uygulama geliştiriciliği, yazılım sektörünün en hızlı gelişen alanlarından birisi. Bu alanda çalışanlar telefon ve tabletler için mobil uygulamalar ve oyunlar geliştirirler. En çok kullanılan diller Android için Java ve Kotlin; İOS için Swift’tir. Bunların dışında Flutter, React Native gibi teknolojiler de geniş kapsamda kullanılır. 

macbook phone

Oyun Geliştirme 

Read Dead Redemption, Skyrim ve God of War gibi oyunlar oynadınız mı? Peki, bu tarz oyunlar kodlamak ister miydiniz? Oyun piyasası günden güne gelişen ve fazlasıyla geniş bir alan. Her gün yeni teknolojiler, yeni araçlar ortaya çıkıyor. Fakat C++ ve C# gibi dilleri öğrenmek ve Unity, oyun motoruna aşina olmak başlangıç için çok önemlidir ve bu piyasada yükselmenize yardımcı olacaktır. 

Hacking (Beyaz Şapkalı Hacker) 

Siyah şapkalı hackerlar, internet kullanıcılarının bilgilerini çalmak ve benzeri zararlı işler için kullanırken beyaz şapkalı hackerlar, bilgilerin korunması ve şirketlere güvenlik sağlanması, vb. ile ilgilenirler. 

Etik hacker olarak da isimlendirilen bu kişiler, sistemlerdeki açıkların bulunması ve kapatılması ile uğraşırlar. Dijital dünyanın koruyucusu olmak, beyaz şapkalı hacker olabilmek için internet üzerinde çeşitli eğitim videoları bulmak mümkün. 

person pc typing

Nasıl ve Nereden Öğrenebilirim? 

Günümüzde yazılıma başlamak isteyenler fazlasıyla şanslılar diye düşünüyorum. İnternet sayesinde birçok kaynağa kolayca erişebilir, bu kaynakları kullanarak yukarıda bahsettiğim teknolojileri ve daha fazlasını öğrenebilirler. 

Önemli ve faydalı kaynakların %90’ı İngilizce olduğundan bunlara ulaşmak için İngilizce bilmek şart. İngilizce bildiğiniz zaman, aşağıdaki üst seviye kaynaklar sizi bekliyor olacaklar. 

Yani, yazılıma nereden başlamalıyım sorusuna, İngilizceden diye cevap vermek gerekiyor sanırım. Fakat faydalı Türkçe kaynaklar da var. Benim önerdiğim bazı kaynaklar: 

Türkçe kaynaklar: 

  • Bilgisayar Kavramları (YouTube) 
  • Yazılım Bilimi (YouTube)
  • Murat Yücedağ (YouTube) 
  • Web Odası (YouTube)
  • Yakın Kampüs (YouTube) 

İngilizce kaynaklar: 

  • Codecademy
  • Treehouse
  • W3School
  • Travery Media (Youtube) 
  • Khan Academy 
  • CS50 Harvard 
  • The Odin Project 

Sadece kodlamayı değil, yaratmayı da öğren! 

Yukarıda bahsettiğim dillerin tamamı birer araç. Tıpkı yazı yazmayı öğrenmek gibi. Yazı yazmayı öğrenip bunu kullanmayan veya sadece bazı hesaplamalar yapmak için kullananlar var. Fakat bu yazma yeteneğini hayal gücü ile birleştirip Harry Potter gibi, Yüzüklerin Efendisi gibi şaheserler ortaya koyan insanlar da var. 

Kaç tane programlama dili bildiğiniz değil; o dillerle neler yarattığınız, ortaya neler koyduğunuz önemli. Anlamlı, işe yarayacak, bir kişi için bile olsa, faydalı olacak bir şey. Yazılımcılar sadece bir odaya kapanıp saatlerce kod yazan insanlar değillerdir. Onlar kendileri için, etraflarındakiler için ve toplum için önemli ve faydalı şeyler üreten, yaratan kişiler!

creating coding

Kapanış ve Kişisel Önerilerim 

Yukarıdaki alanların birçoğu birbiriyle bağlantılı ve aralarında kolayca geçiş yapılabilir. Bölümlerin birçoğu fazla detaylı olmasa da, umarım sizin yazılıma başlamanız ve ilerleyebilmeniz için yeterli bilgiler barındırıyordur. 

Bu yollardan birisini seçip, o yolda ilerlemek, sevdiğiniz ve insanların da beğeneceği işler ortaya koymak size kalmış. Kişisel önerilerime gelince; İngilizce-Harvard CS50-Python üçlüsünü öneriyorum. Ortalamanın üzerinde bir İngilizce, sizin yazılım sektöründe kolayca yukarılara tırmanmanıza yardım edecektir. Harvard Üniversitesi’nin CS50 dersleri, size bilgisayar biliminin temellerini, algoritma kurma mantığını öğretecek; birçok yazılım teknolojisi ile tanışma imkanını verecektir. Sonrasında ise, Pythona başlamak hem kolay hem de çok önemli bir başlangıç yapmanızı ve üst düzey bir temele sahip olmanızı sağlayacaktır.

BONUS

Başlamadan önce sektörü çok daha iyi ve detaylı tanımak için Doğukan Güven Nomak’ın Yazılımcı Sohbetleri Video Serisi’ni izleyebilirsiniz.

Ayrıca keyifli bir motivasyon videosunu aşağıdan izleyebilirsiniz.

Hamid Torres

Tüm yazıları

E-bültenimize kaydolun.