Yazılım mühendisiyim, fikir vereyim
Diller pazardan limon alır gibi seçilmez, şirket projeye göre ihtiyaçlar neyi gerektiriyorsa ona göre altyapı, dil ve teknolojiyi seçer. Bazen proje gelir Java ile yazılır, başka proje C++'la yazılır. Bir yazılım mühendisinin işi
sadece programlama değildir, öyle olsa 2 yıllık programcılık bölümü olmazdı ama kod yazar tabiki, şimdi anlatacağım.
Örneğin gömülü sistemlerde, sistem programlamada, oyun programlamada ve savunma sanayide ağırlıklı C/C++ kullanılır. Bir askeri savaş simülasyonu C++/Qt ile geliştirilir, oyun motorları aynı şekilde. Ya da Windows gibi bir işletim sistemi.
Java ve .NET daha çok kurumsal ve ticari uygulamalarda kullanılır. Ağırlıklı olarak web ve masaüstü çözümler için tercih edilirler. Bunun nedeni arkasındaki şirket desteği ve bir kurumsal uygulamanın ihtiyacı olan birçok paradigmayı hazır sunmalarıdır. Java, Android geliştirme içinde çok sık kullanılıyor ama son zamanlarda Java ile kuzen olan Kotlin dili tercih ediliyor o tarafta. Bu da Google'dan kaynaklı. Java ile kurumsal tarafta en çok kullanılan framework Spring Framework'dür.
Şimdi gelelim soruna. C++'la web uygulaması yazılır mı? Evet. Java'yla gömülü sistem programlanır mı? Evet. C#'la mobil uygulama yazılır mı? Evet. Ama tercih edilmez güzel kardeşim. Bunların güçlü olduğu ve kendilerini kanıtladıkları alanlar var. Projede hangisinin, nasıl kullanılacağını Yazılım Mimarı ve teknik lider belirler, tabi çalıştırdıkları yazılımcıların teknik bilgisini de göz önüne alarak.
Yazılım mühendisliği ise programlamayı da kapsayan ama ondan çok daha geniş bir kavramdır. Burada yazmakla bitmez. Projede kullanılan SDLC, geliştirme metodolojisi, SRS,BRD dökümanları, onlarca çeşit diyagramlar, tasarım desenleri, mimari örüntüler vs vs
Yani programlama dili ve kodlama kısmı büyük tablonun sadece bir parçasıdır Kodlamasına başlamadan önce aylarca analizi yapılan yazılım projeleri var biliyor musun? Örneğin bir savaş uçağının teknik analiz ve gereksinim dökümanlarını çıkarmak 2-3 yıl vakit alıyor. Bizim E-Devlet uygulamasının analiz dökümanları 6-7 ayda hazırlandı. Sen hiç SOLID, XP, Scrum gibi kavramları duydun mu?
Projeye göre dil ve platform seçimi ise birçok parametreye göre yapılır. Önce sistem mühendisleri ve yazılım mimarları bunun analizini çıkarır. Öncelik performans mı? İşin içinde donanım var mı? Ulaşılabilirlik, bakım maliyeti, bilanço ne olacak? Bizim elemanlarımız bu dili biliyor mu veya ne kadar sürede öğrenir uygularlar? Zamanında yetiştirebilir miyiz? Yani birçok şeye göre seçilir, örneğin bazen mantıksız da olsa mecburiyetten kalkıp X diliyle Y işini yapabilirler.
Bu yüzden diller araçtır, amaç ise ürünü ortaya çıkarmaktır. Ürün de yazılımdır.
O yüzden sen o dil bu dil diye çok kafanı takma. Bir dili öğren ama iyi öğren. Her konuda fikrin olsun ama bir konuda uzmanlığın olsun. Onu da artık web, mobil, oyun, sistem hangi alanda gitmek istiyorsan ona göre seç ve bu dil karşılaştırmalarıyla vakit kaybetme. İşin kodlama kısmı sadece buzdağının görünen kısmıdır, eğer sen mühendisliğiyle ilgilenmek istiyorsan çok daha geniş bakmalısın olaya. Başarılar.