Birçok başarılı öğrenci adlıkları güzel puanlara veya kazandıkları güzel bölümlere rağmen hayal kırıklığı yaşayabilir ve mutsuz olabilirler. Böyle bir olasılık bugünlerde popüler olmasına karşın yazılım mühendisliği bölümü için de geçerli olabilir. İnternette vakit geçirmek, bilim kurgu filmleri izlemek, bilgisayar oyunları oynamak size eğlenceli geliyor ve sırf bu nedenle yazılım mühendisliği bölümü istiyorsanız, bunu bir kez daha düşünmelisiniz. Burada yazılım mühendisliği öğrencilerinin hangi zorluklara hazırlıklı olması gerektiği hakkında bazı konuları açıklamak istiyoruz.
Yüksek Matematik: Yazılım mühendisliği müfredatını incelediğinizde göreceğiniz üzere yüksek matematik ağırlıklı dersleri olan bir bölümdür. Çok bilinen bazı kavramların, örneğin yapay zekâ, yapay sinir ağları, makine öğrenmesi, derin öğrenme, veri madenciliği, veri analizi, oyun programlama, grafik programlama, kriptoloji, blok zincir uygulamaları vb. konuların uygulamasında yüksek matematik yöntemleri ve bu yöntemleri uygulayan kodlar vardır. Bu nedenle yazılım mühendisliğinde okurken hem yüksek matematiği öğrenmek hem de öğrendiklerinizi kodlama yaparak uygulamak zorunda olacaksınız. Örneğin yapay zekâ çalışırken çok boyutlu bir veri uzayında hayali bir yüzey eğrisinin en düşük değerli olduğu noktayı türeve dayalı matematik yöntemlerle hesaplamak ve bu hesaplamayı uygulayacak bir kodlama yazmak durumunda olabilirsiniz. Yazılım mühendislerini programlama bölümlerinden farklı kılan temel özelliklerden birisi budur. Bütün yazılımcılar işlerinde yüksek matematik kullanmazlar, böyle bir genelleme yanlış olur. Fakat yazılım mühendisliğinin yeni nesil uygulamalarında ve yazılım mühendisliğini okurken yüksek matematik gereklidir. Matematiği sevmiyorsanız yazılım mühendisliği okumak sizi mutsuz edebilir. Matematiği sevmiyor ama programlama yapmak istiyorsanız 2 yıllık programcılık bölümlerini seçebilirsiniz.
Donanım Tasarımı: ERÜ yazılım mühendisliği müfredatında bilgisayar sistemlerine giriş dersi, sayısal mantık dersi ve bilgisayar mimarisi ve organizasyonu dersi birbirlerini tamamlayan dersler dizisi olarak planlanmıştır. Bu durum Türkiye’deki tüm üniversiteler için genellenebilir bir durum değildir. Bu dersler aşamalı olarak donanım tasarlamaya yönelir ve derslerin sonunda öğrencinin basit bir mikrobilgisayar sistemi tasarlaması ve çalıştırması beklenir. Elektriksel aç-kapa görevi gören bir transistordan başlayarak birkaç bin transistorun nasıl basit bir bilgisayar sistemini meydana getirdiğini bu dersler öğretir. Bu nedenle ERÜ yazılım mühendisliğine aday öğrenciler, ilk iki yıl içinde beyinlerinde fiziki bir bilgisayar tasarımının oluşacağını ve bunun gayretle ve zahmetle olacağını bilmeleri gerekiyor. Dersi dinlemek yetmiyor, öğrencinin tasarımı bizzat kendisinin aşamalı olarak geliştirmesi bekleniyor. Zorluğuna rağmen bu ders dizisinin öğrenme ve keşfetme hazzını öğrencilerimize yaşatacağını umuyoruz. Biz donanım anlaşılmadan öğrencinin bazı temel yazılım kavramlarını anlamayacağını düşünüyoruz. Ayrıca uluslararası normları düzenleyen kuruluş olan IEEE’nin yazılım mühendisliği müfredatı öneri raporunda da bilgisayar mimarisine yönelik dersler zorunlu dersler olarak yer almaktadır. Bu nedenlerle yazılım mühendisliği öğrencileri yonga (chip) tasarımına, MİB (CPU) tasarımına ve basit bir mikrobilgisayar sisteminin donanım tasarımına ve bu çalışmaların gerektirdiği emek ve zaman fedakârlığına hazırlıklı olmalıdırlar.
Ömür Boyu Öğrenme: Yazılım mühendisliği özellikle kullanılan araçlar ve teknoloji bakımından değişkenliği yüksek bir meslek dalıdır. Matematik temeller ve kavramlar elbette daha kalıcıdır, ancak gelişen teknoloji ile birlikte yeni kavramlar, yeni yöntemler ve yeni teknolojiler ortaya çıkmaktadır. Yazılım mühendisliği sürekli bu teknolojik değişime uyum sağlamayı ve bunun için çalışmayı gerektirir. Yöntemler ve teknoloji çok değişmese bile kullanılan yazılım araçları çok değişkenlik gösterir. Örneğin bugün çok kullanılan programlama dili ve veya yazılım geliştirme araçları birkaç yıl sonra yerini tamamen farklı araçlara ve dillere bırakabilir. Yazılım mühendislerine verilen eğitim bu değişimlere uyum sağlamayı destekler. Örneğin nesne tabanlı programlama kavramlarını yazılım mühendisi çok iyi bilir, bu konuda yeni bir araç çıksa dahi kavramsal temeller nedeniyle yeni araç ve teknolojilere geçiş nispeten kolay olacaktır. Yine de şu hususu belirtmekte fayda var; yazılım mühendisleri sadece lisansta değil ömür boyu öğrenmeye ve bunun için çalışmaya açık ve hazırlıklı olmalıdırlar.
Sektörde Rekabet: Yazılım mühendisliği öğrencileri, piyasanın iş gücü talebine karşın sektörde yoğun bir rekabetin yaşanacağını en başından bilmeli ve dikkate almalıdır. Ülkemizde yaklaşık 200 adet bilgisayar mühendisliği ve yaklaşık 150 adet yazılım mühendisliği eğitimi veren üniversite bölümü bulunmaktadır. Diğer bölümlerden de yazılım sektöründe yer edinmeye çalışan mezunlar olacaktır. Bu nedenle öğrenci adayımız sınavları geçip diploma almanın bu rekabette yeterli olmayabileceğini dikkate almalıdır. Öğrencilik hayatını, özgeçmişini donatacak yazılım uygulamaları üreterek değerlendirmesi gerekmektedir. Ayrıca yurt dışı eğitim, öğrenci değişim ve staj programlarını kullanmalı ve bu tür fırsatları değerlendirmek için hazırlıklı olmalıdır. Sadece diplomanın değil proje uygulamaları, uluslararası eğitim/staj çalışmaları, ödüller ve etkinlikler ile dolu bir özgeçmişin gerekli olduğunu öğrencilerimiz dikkate almalıdır.
Uluslararası Çalışma Ortamı: Yazılım mühendisliği öğrencileri yabancı ülkelerde ve yabacı kültürlerde çalışmaya açık olmalıdır. Çünkü ülkemizde küçük şehirlerde yazılım üretimine yönelik iş bulma zorluğu yaşanabilir. Ayrıca henüz ülkemiz ağırlıklı olarak yüksek teknoloji/yazılım ürünleri üretip bunlarla ihracat yapabilen bir ülke değildir. Öte yandan uluslararası ortamda çalışmaya hazırlıklı yazılım mühendisleri küresel ölçekte iş fırsatlarını kovalayabilir. Dolayısıyla yazılım mühendisi adayları gerektiğinde uzak kıtalarda ve uzak ülkelerde çalışmaya hazırlıklı olmalıdırlar.
Yabancı Dilde Eğitim: Kaynaklar, eğitim-öğretim malzemeleri vb. olanakların eşit koşullar altında olması halinde en verimli eğitim ana dilde yapılan eğitimdir. Diğer taraftan özellikle kaynakların çeşitliliği ve zenginliği düşünüldüğünde yabancı dilde eğitim-öğretimin sunduğu bazı olumlu fırsatlar vardır. ERÜ yazılım mühendisliğinin eğitim-öğretim dili %100 İngilizce olarak belirlenmiştir. ERÜ yazılım mühendisliği özelinde öğrencilerimizin İngilizce dinleme ve konuşma kabiliyetlerinin ileri düzey olması beklenmektedir. Bunun için diğer bölümlerin hazırlık sınıflarından farklı olarak özel bir İngilizce hazırlık eğitimi öğrencilerimize verilecektir. Gelecek öğrencilerimizin yabancı dilde dinlemeye, konuşmaya, aktif olarak diyaloglara katılmaya, yabancı dilde kitaplardan okuyarak öğrenmeye ve sınav kâğıtlarını/proje çalışmalarını yabancı dilde sunmaya hazırlıklı olması gerekmektedir.
Sağlık ve Sosyalleşme: Yazılım mühendisliği soyut düşünceye dayalı ve özellikle kodlama/uygulama aşamasında zihni uzun süre meşgul edebilen bir meslek türüdür. Eğer kişi sosyal değilse ve fiziki hareketliliği az olan bir yaşam döngüsünde yaşıyorsa bu meslek sağlık açısından tehlikeli olabilir. Uzun süre her gün ekran başında çalışma bel, boyun fıtığına, dolaşım sistemi bozukluklarına yol açabilir. Asosyal yaşam biçimi psikolojik zayıflıklara zemin hazırlayabilir. Sağlıklı ve sürdürülebilir bir meslek hayatı için spor, dans vb. fiziki etkinliklerin düzenli ve istikrarlı olarak gerçekleştirilmesi gerekir. Bu nedenle yazılım mühendisliği öğrencilerinin mesleki hayatları dışında aktif, sosyal ve fiziki hareketliliğe dayanan düzenli etkinlikleri olmalı ve kendilerine buna uygun bir yaşam biçimi hazırlamalıdırlar. Üni-Ar araştırmasına göre ERÜ mezunları, kendi üniversitelerini yerleşke içi sosyal yaşam ve aktif olmayan öğrenci kulüpleri nedeniyle eleştirmektedirler. Öğrenci adaylarımıza bu konudaki uyarımız kendi spor ve dans gruplarını kurmaya hazırlanıp gelmeleridir.