@selamibasaran
Bu arada bu sayfada yazılanları okuyup cidden yazılıma yönelmek isteyenler için de eklemiş olayım. İlla bu mesleği yapmak istiyorsanız (Software Developer - Software Engineer), mühendislik ya da ilgili bir bölüm mezunu olmasanız bile lütfen öncelikle yabancı bir üniversitenin (Duke-Stanford-Oxford-ETH Zurich-UC Berkeley-MIT vs gibi) ya da yerlilerden ODTÜ-Koç vs gibi bir üniversitenin Curriculum (müfredat) saylarını inceleyin. Bazı üniversiteler gerek youtube kanallarında, gerek çeşitli platformlarda ücretli-ücretsiz bu dersleri tekil ya da toplu olarak yayınlayabiliyor. Öncelikle bu müfredatlardaki dersleri kısmen de olsa tamamlamak size hem mesleki açıdan bir fikir verecektir, hem de yazılımsal altyapının temellerini atacaktır. Daha sonrasında EDX gibi ciddi eğitim platformlarından yabancı üniversitelerin veya akademilerin elektronik diplomalı, tamamen uzaktan Computer Science programları mevcut. Bunlar elbette biraz tuzlu olmakla birlikte o kadar mükemmel seviye de eğitimler ki, diplomaların direkt olarak uluslararası geçerliliği mevcut (Syracuse, University of London gibi). Ayrıca Türk Üniversitelerinin örgün eğitiminden hem kat kat daha ucuz, hem de tamamen online. Hatta dünyanın en iyi üniversitelerinden online Micro Master ve Master Degree'ler bile mevcut.
Özetle Software Engineer-Software Developer olup, bir de üzerine ABD'de iyi maaşlarla iş bulup çalışabilmek istiyorsanız bu yollardan ilerlemek çok faydalı olacaktır. Eğer matematiksel altyapınız kötüyse, en azından sayısal bir bölüm mezunu değilseniz, lise zamanlarında notlarınız kötüyse, ÖSYS sınavlarında matematikten en az 3'te 2'sini doğru yapamamış bir öğrenci olduysanız, belli bir yaştan sonra da bunları telafi etmek çok zor olacağından bu mesleğe hiç girmemenizi öneririm. Bu meslekte hele ki ABD'de iyi paralar kazanabilmek için matematik altyapısı, algoritma kurabilme kabiliyeti, analitik zeka, hafıza vs gibi kavramlar gerçekten çok önemli. ABD'de neredeyse tüm kurumsal iş yerleri sizi zamana karşı stres altında bırakan algoritma mülakatlarına sokacak, aynı zamanda bar raiser gibi mülakatlarla da genel altyapınızı ölçüp, şirketin seviyesini arttırıp arttıramayacağınıza bakacaktır.
Buraya kadar okeyseniz, yazılım geliştirciliği-mühendisliği altyapınız tamamdır. İş Tufan bey'in de dediği noktaya geliyor, yani alt başlıkta uzmanlaşma. Burada yeni başlayanlar daha şanslı denebilir, çünkü herhangi bir teknoloji için 0'dan başlamak kendini güncel tutmaya çalışmaktan her zaman daha kolaydır. Burada hangi alt başlıkta uzmanlaşacağınız sizin yeteneklerinize ve hevesinize kalmış.
İlk olarak Support-Frontend-Backend-Mobil-DevOPS-System-Network-Data Science-Database Management bu üst yönelimlerden birisi seçilmeli. Popülariteleri için ABD'deki iş ilanlarını ve ortalama maaşları inceleyebilirsiniz. Hepsi gayet popüler diyebiliriz. Fakat son birkaç yıldır (özellikle pandemiyle birlikte) artan dijitalleşme sonrası birbiriyle entegre ve yüksek trafikli devasa sistemlerin yönetimi açısından Docker-Kubernetes-Jenkins-Git-Chef-New Relic gibi tool'lar oldukça gelişti. Dolayısıyla DevOPS Engineer dediğimiz kesimin önemi bir hayli arttı, maaşları da yükseldi. System ve Network Engineer dediğimiz, sistem ve ağ entegrasyonlarını kontrol edip yöneten arkadaşlar da benzer durumda. DBA'ler de artık çok daha komplike ve devasa, hassas databaseleri yönettiğinden ve özellikle mikro servis mimarisinin yayılmasıyla birlikte tek bir şirkette bile birbiriyle entegre sayısız DB katmanı oluştuğundan, kendi başlarına bir ekosistemden sorumlu hale geldiler. O yüzden onlar da çok revaçta denebilir. Yine benzer şekilde bu şirketlerin db'lerinde oluşan Data havuzu yani ham bilginin ve bunların işlenmesinin-raporlanmasının önemi arttığından Data Scientist dediğimiz veri bilimcileri de ABD piyasasında çok kıymetli. İlişkisel veri tabanları, SQL syntax, SQL mimarisi, Python yazılım dili, Big Data Management, Hadoop-Spark gibi tool'lar vs ilginizi çekiyorsa bunları da tercih edebilirsiniz.
Yok ben bu taraflar revaçta diye hiç bulaşmayayım, derdim klasik yazılımcılık. Oturup kod yazayım diyorsanız da, o da artık eskisi gibi değil. Fullstack Developer'lığın dünyada pek bir kıymeti kalmadı. Artık Mobil için Mobile Development ekipleri (iOS için ayrı Android için ayrı), iş akışı ve altyapı kodları için backend ekipleri (Java, C#, Go, Node.js, C++ gibi diller ve sayısız birçok tool kullanan), Web veya Mobile farketmeksizin (responsive design) görsel component'leri ve ön yüzün backend ile entegrasyonunu geliştiren-düzenleyen frontend ekipleri (React.js, Vue.js, Angular.js, Node.js, Pure Javascript, HTML, CSS teknolojileri başta olmak üzere yazan) mevcut. Backend tarafı daha çetin diyebilirim. Hem akademik, hem mesleki tecrübe beklenen, en ufak hatanın bile çok pahalıya patlayabildiği, kendi içerisinde bile domain uzmanlığı gerektirebilen (Core Banking, Insurance, E-Commerce gibi) tam bir kurtlar sofrası. Ayrıca gerektiğinde kendi içerisinde hem DBA, hem frontend, hem system, hem network hem data science vs gibi çeşitli yelpazeden uzmanlıkları dönemsel olarak gerektirebiliyor. Kullandığınız yazılım dilinin syntax'ı güncellemelerle tamamen değişebiliyor. Yeri geliyor bir projede 3 farklı db, 5 farklı yazılım dili, sayısız tool ve mimari altyapı tasarlamak-kullanmak gerekebiliyor. Yani kısaca yazılımın amiral gemisi, diğer her konu backend'in etrafında şekillenir diyebiliriz. Temelden gelmeyenlerin bu taraftan uzak durmasını öneririm. Frontend ve Mobile taraflar ise çok daha soft, kullanılan araçlar-teknolojiler az çok belli, sorumluluk çok daha az, maaşlar kıdeme göre hemen hemen aynı. Backend'in bunlara göre tek artısı, ortada yeni açılan bir üst seviye pozisyon ve bir kıdem atlama/terfi durumu varsa (team lead-tech lead-software architect-director-CTO vs) bunda öncelik çoğunlukla backend uzmanlarınındır. Yani bir 7-10 yıl sürünür, sonra yönetsel pozisyonlarla ekmeğini yemeye başlarsınız. Sırta yüklenen sorumluluk 10 kat artar tabi orası ayrı. Okullu değil alaylı dediğimiz yazılımcıların büyük çoğunluğu bu taraftan uzak durur ve mobile-frontend ekiplerde baş gösterirler.
Son olarak tercihinizden bağımsız olarak, Tufan Bey'in de söylediği gibi, uzmanlık farketmeksizin iş yaptığınız/kullandığınız sürece takip edilmesi gereken birçok yazılım dili veya tool/teknoloji ile karşılaşırsınız. Bunlar için de online eğitim platformları her zaman başı çeker. Ben kendi adıma spesifik konuların eğitimleri için Udemy, PluralSight ve Linda kullanıyorum. Özellikle Udemy, derya deniz ve eğitimler oldukça ucuz. Eğitim bağımsız, herhangi bir konuda takıldığımda da Google'a başvurmak yeterli oluyor. İnternette hemen her konuda sayısız kaynak var. Bunca yıldır yazılımcıyım, Youtube, Stackoverflow, Medium, Microsoft.com(ya da kullandığınız dilin Open Source dökümantasyon siteleri) gibi platformlar kullanarak cevabını bulamadığım bir problemle ancak 5-10 kez karşılaşmışımdır. Onlarda da beyin fırtınası yapmak ve sizden çok daha tecrübeli insanlara sormak; o da yeterli gelmezse alternatif çözümler bulmak her zaman işe yarayacaktır.
Biraz uzun bir yazı oldu ama fikir vermesi açısından detaylı yazmak istedim. Umarım faydası dokunur.