Yazılıma Nereden başlamalıyım?

Yazılıma Nereden başlamalıyım?

Merhaba arkadaşlar,

Uzun bir aradan sonra yeni yazımla karşınızdayım. Genel olarak birçok arkadaşımız yazılıma nereden başlayacağını, nasıl ilerleyeceğini, hangi alanı seçeceğini ve bu sektörde nasıl tutunacağını bilmediği için rehber niteliğinde bir makale hazırlamaya karar verdim. Her şeyden önce yazılımla alakalı birkaç terimi açıkladıktan sonra konumuza geçelim.

Yazılım : En kısa haliyle elektronik aygıtların belirli bir işi yapması için yazılmış kod dizisi diyebiliriz.

Algoritma : Belirli bir işin doğru bir şekilde gerçekleşmesi için yapılması gereken adım sırası olarak tanımlayabiliriz.

Bu sektör ile alakalı bölümlerde okuyan, sektöre girmiş yada henüz girmemiş arkadaşlarımızın, abilerimizin aklında hangi alanı seçeceği konusunda şüpheler var. Bugün olabildiğince aklınızdaki soruları gidermeye çalışacağım.

Bilişim sektöründe Web geliştirme, mobil uygulama geliştirme, siber güvenlik, veri bilimi, genel olarak yapay zeka , IoT vb birçok alan bulunmakta. Bu alanlar arasında seçim yapmak istiyorsunuz fakat zorlanıyorsanız size naçizane tavsiyem şu olacaktır : Youtube üzerinden bu alanlar hakkında videolar izleyin veya bu alanlar hakkında makale okuyun. Bu şekilde ilgilendiğiniz alan hakkında bilgi sahibi olabilirsiniz.

Alanınızı seçtikten sonra tam olarak nereden başlayacağız, bilmiyoruz. Kafamız biraz karışık. Yol haritasına ihtiyacımız var. Daha hızlı ilerlememiz açısından İngilizce ile olan ilişkimizi biraz daha güçlendirmemiz gerekiyor. Günümüzde İngilizce makaleler, videolar ve çeşitli eğitim dokümanları Türkçe makalelere kıyasla çok daha fazla ve burada İngilizce’nin önemini net bir biçimde anlıyoruz.

İngilizcemizi geliştirdikten sonra sıra algoritmaya geldi. Alan fark etmeksizin Hackerrank, LeetCode, Codewars gibi sitelerden olabildiğince algoritma soruları çözmeye çalışın. Problem çözme yeteneğinizi yeteri kadar geliştiremezseniz ileride karşınıza çıkacak sorunlarda tıkanabilirsiniz. Bu yüzden problemlere karşı bakış açınızın da değişmesi için bolca problem çözmeye çalışın.

Seçtiğiniz alan ile ilgili bir dilde uzmanlaşmaya çalışın. Elbette uzmanlaşmak kısa zamanda olacak bir durum değil lakin çok dil bilmektense bir dili çok iyi bilmenizi, diğer diller hakkında da en azından bilgi sahibi olmanızı kesinlikle tavsiye edebilirim. Bir işe başvuracağınız zaman “ X teknolojisi hakkında ne biliyorsun? “ diye sorulduğunda bir cevap verebilmek size bir artı olarak geri dönecektir. Kaynak konusunda sıkıntı çekerseniz Youtube, Udemy vb. platformlardan videolar izleyebilir, alanınız ile ilgilenen kişilerin makalelerini okuyarak bilgi sahibi olabilirsiniz. Bu kısma aşağıda özellikle değineceğim.

Bir Github hesabı açmanızı kesinlikle tavsiye ediyorum. Bir yazılım geliştiricisi için github hesabı özgeçmiş niteliği taşımaktadır. Kendi alanınız ile alakalı yaptığınız projeleri buraya yükleyebilirsiniz. Bu alanda çalışan kişileri takip edip projelerini inceleyerek kendinizi geliştirebilirsiniz. Açık kaynaklı projelere katkıda bulunabilirsiniz. Yaptığınız küçük büyük projeler ile doldurmaya çalışmanızı tavsiye ederim.

Bilgi sahibi olduğum alanlar hakkında sizi bilgilendirmek istiyorum.

1) Web Geliştirme

Web geliştirme alanını seçtiğinizde karşınıza iki alt alan çıkacaktır.

1.1) Backend Developer

Kullanıcıların görmediği arka yüz (Server-side) geliştiren kişidir. Yapılacak projenin altyapısını oluşturan , veri tabanı yönetimini planlayan, sistemin verimli ve hızlı çalışmasını sağlayan kişidir. Buz dağının görünmeyen tarafı diyebiliriz. Bu alanda ilerlemek isteyen arkadaşlarımızın server tabanlı bir programlama dili öğrenmesi gerekmekte. Aşağıda bahsedilen teknolojiler hakkındaki kaynakları inceleyebilirsiniz.

a) .NET

Takip ettiğim ve beğendiğim birkaç kaynak:


b) Java

İncelediğim ve içeriklerini beğendiğim birkaç kaynak:


c) NodeJS

Bu teknolojide ilerlemeden önce javascript bilginiz olması gerekmektedir. Daha öncesinde incelediğim birkaç kaynak:


d) PHP

Lise zamanları php ile uğraşmamdan dolayı incelediğim ve anlatımlarını beğendiğim birkaç kaynak:

1.2) Frontend Developer

=======================

Bir sitenin kullanıcılarla etkileşime geçebildiği , kullanıcı arayüzünü tasarlayan kişidir. Buz dağının görünen tarafıdır. Bu alanda ilerlemek isteyen arkadaşlarımızın Html, Css, Javascript dillerini ve bu diller ile alakalı teknolojilerde iyi olması gerekmekte. Aşağıda bahsedilen teknolojiler hakkındaki kaynakları inceleyebilirsiniz.

a) Angular


b) Vue


c) React


2) Mobil Uygulama Geliştirme

Mobil uygulama alanı seçtiğinizde ise karşınıza iki seçenek çıkacaktır: Native mi yoksa Hybrid mi?

Native

Uygulama yazılırken platformun sağladığı dil ve platform SDK ile geliştirme yapılabiliniyor. Örnek verirsek Android için bir uygulama yazacaksanız programlama dili olarak java, SDK olarak da Android SDK seçmeniz gerekmektedir.

a) Java & Kotlin → Android


b) Swift → IOS

Hybrid

Native uygulamalardan en temel farkı bir işletim sistemine bağlı kalmaması. Bir uygulama geliştirdiğinizde hem IOS hem Android sürümünü çıkarabiliyorsunuz. Aşağıda bahsedilen teknolojiler hakkındaki kaynakları inceleyebilirsiniz.

a) Dart & Flutter


b) React Native


3) Devops

DevOps, tasarım başlangıcından, geliştirme süreçlerine kadar tüm programlama işlemlerinin yürütüldüğü ekip çalışmasını belirtmektedir. Bu alanda ilerlemek isteyenlerin virtualization, CI/CD, container teknolojisi ve deployment süreçleri hakkında bilgi sahibi olması gerekiyor.

a) Docker


b) Kubernetes


4) Yapay Zeka & Veri Bilimi

Makineleri insan beyniymiş gibi çalışacak şekilde programlayan, makine öğrenme algoritmalarını tasarlayan kişilerdir. Makineleri mantıklı ve verimli bir şekilde hareketler gerçekleştirmek amacıyla programlar geliştirirler.


5) Siber Güvenlik

Bilgisayarları, sunucuları, mobil cihazları, elektronik sistemleri, ağları ve verileri kötü amaçlı saldırılardan korumak ve oradaki güvenliği arttırmakla sorumlu olan kişilerdir. Bu alanda çalışmak isteyenlerin TCP/IP internet protokolleri, Linux komutları, Python gibi programlama dilleri, işletim sistemlerinin mantığı ve analiz gibi konularda bilgi sahibi olması beklenir. Ayrıca TryHackMe sitesi üzerinden gerçek dünya senaryoları ile egzersiz yapabilirsiniz.


Computer Science

Burayı listeden ayrı yazmak istiyorum çünkü her yazılım geliştiricisinin bilmesi gereken konulardan bahsedeceğiz. Aşağıda bahsi geçecek teknolojiler hakkında bilgi sahibi olmanız sizi ileriye taşıyacaktır. Aşağıda ilgili teknolojiler hakkında kaynak bulabilirsiniz.

Bu makalemde yazılıma nasıl başlayacağınız, nasıl ilerleyeceğiniz ve alan seçiminiz konusunda aklınızdaki şüpheleri umarım gidermişimdir. Kendinize iyi bakın. Görüşmek üzere.