Her kesimden mutlaka duyulan bir şeydir; “çağın mesleği”, “geleceğin işi”, “iyi para var o işte”, “rahat iş” vs. vs ..

Herkesin bildiği ama anlamadığı bir iştir yazılım mühendisliği. Çoğu kişi işi yanlış anlar, bazıları ise hiç anlamaz. Peki nedir bu iş? Ne yapar şu yazılım mühendisleri?

Ülkemizde son 3–4 yıldır popülerleşmiş olan yazılım mühendisliği ilk olarak 1968 yılında NATO toplantısında dile getirilen bir kavramdır. Teknolojinin gelişmesiyle birliklte baş gösteren yazılım krizleri zamanla önlenemez bir hal alıp kontrol sağlayabilmek için mühendislik disiplinleri arasına eklenmiştir. Zamanla metadojiler ve OOP kavramları geliştirilmiş ve kısa süre içerisinde (44 yıl..) Türkiye’de devlet üniversitelerinde (Fırat Üniversitesi -2012-) yerini almıştır.

İş sektörü olarak düşünmeden önce mühendislik kavramının ne olduğunu bilmemiz gerekir. Mühendislik;

Vikipedia’ya göre kısaca; “Modern anlamda mühendis, bilim insanlarının ürettiği teorik bilgiyi tekniker ve teknisyenlerin uygulayabileceği pratik bilgiye dönüştüren kişidir. Arthur Mellen Wellington(demiryolları inşaat mühendisi)’a göre mühendislik, “Beceriksiz birinin iki dolara kötü yaptığı bir şeyi bir dolara iyi yapma sanatıdır.”

Daha da kısası; tekniker işi yapan, mühendis işi bilen kişidir.

Kendi alanımdan örnek vermek gerekirse neredeyse hiç bir yazılım mühendisi (gerekmediği sürece) oturup da baştan sonra komple kod yazmaz. Bu en çok bilinen yanılgılardan biridir. O, programcıların işidir. Fakat yazılım mühendisi programcının yazdığı kodu baştan sona (en azından yorumlayabilecek kadar) bilmelidir ki her hangi bir yerde bir değişiklik gerekirse kontrol edip devreye girebilsin. Hataları düzeltebilsin.

Şahsen bu konunun üzerinde özellikle durmak istiyorum çünkü insanlar (ve hatta bu sektördeki kişiler bile) Bilgisayar Programcısı ile Yazılım Mühendisi arasındaki farkı bilmiyor. Programcı tarif edilen modülü belirtilen şartlara uyarak kodlayan kişi, mühendis ise şartları belirleyen kişidir. Mühendis yazılımın hangi parçası hangi planlara göre oluşturulacak bunu belirler. Yani sürecin nasıl işleyeceğini, neye göre düzenleneceğini ve ne zaman, ne kadar maliyetle biteceğini hesaplayan kişidir. İşin içine biraz daha terim sokmak gerekirse; geliştirilecek projede hangi tasarım kalıpları kullanılacak? Hangi metadolojilere göre iş akışı ilerleyecek? Hangi safalarda hangi önlemler alımalı ki maliyet olabildiğine düşsün? Bunları ön gören kişidir yazılım mühendisi.

Bölümden mezun olan çoğu mühendis (eğer eğitim aşamasında bir yerde çalışmamışsa) ilk olarak Developer olarak çalışır. Developer kelime anlamından da tahmin edebileceğiniz üzere Geliştirici demektir. Programcı ile aynı düzeydedir diyebiliriz. Zamanla kendini geliştirdikçe üst kademelere çıkar ve bir projeyi baştan sona organize edebilecek yetiye sahip olduğunda Proje Yöneticisi “Software Project Manager” konumuna gelir. Bu kademe ise baştan sonra proje yönetim sürecini işleyebilen, bilen ve yöneten kişiler içindir. Dile kolay gelebilir ama kaliteli bir proje yöneticisi olmak bilgi birikimi kadar iyi bir insan ilişkilerine de sahip olmayı gerektirir çünkü işi yapan makina değil insanlardır. İş sektörüne atıldığınızda fark ediyorsunuz ki bir projeyi bitirmek için departman farklılıkları sadece kağıt üzerinde kalıyor. Yeri ve zamanı geldiğinde fikrini dile getirebilen insanlar olursa başarılı bir iş çıkıyor ve kaliteli bir ürün ortaya koyuyorsunuz. Bunu ön görmek için çok çabaya gerek yok, hayatın her yerinde bu böyledir.

Ama bu alanda çalışacak öğrenci arkadaşlarıma tavsiyem; okurken bir yerde çalışın ve kendinizi geliştirmek istiyorsanız önceliğiniz start-up bir firma olsun. Ufak yerde her işi yapar ve yaptığınızı da öğrenmiş olursunuz. İşten korkmayın ki çalıştığınız yerden ayrılsanız dahi öğrencisiniz, yeter ki mezun olunca dolu dolu olun ve deneyimli bir şekilde bitirmiş olun okulu. Neyse, konudan sapmayalım bu başka bir yazının konusu olsun.

Pek tabi kendi içerisinde dallara ayrılmakta bu sektör. Test Uzmanı, Analist, Proje Yöneticisi, Geliştirme Uzmanı bunlardan bir kaçı. Hepsinin kendine göre yaptıkları iş alanı farklı fakat temelde hepsi aynı disiplin eğitiminden gelmekte ve bunun bilincinde. Firmalar işe alırken de direkt “Yazılım Mühendisi” olarak almıyor, açık olan departmana göre ilan veriyor.

Türkiye’de bu sektör ne kadar adabıyla işliyor derseniz durum pek de iç açıcı değil. İş sektörü genel olarak ülkemizde çok fazla gelişmediğinden (en azından ben bu yazıyı yazarken) haliyle mezunları da pişecek bir fırsat kolay kolay yakalayamıyor. Örneğin ilan verirken belirli dilleri bilmesi beklenen özellikte ama başvuranların kaçı, ne kadarı bu özellikleri gerçekten taşıyarak başvuruyor derseniz, kim bilir? Sonuçta iş veren kimsenin gönül güzelliğine göre maaş vermiyor, verime ve kazanca dayalı bir sektör bu. Bu arada Türkiye’nin geliştiği sektör çoğunlukla askeri sanayi ve bunun merkezi çoğunlukla Ankara. ASELSAN vb firmalar özelikle son yıllarda yazılım sektörüne oldukça yoğunluk vermiş durumda.

Yazılım ile gelişen bir sektör de aynı zamanda Mekatronik Mühendisliği. Manisa Celal Bayar Üniversitesi’nde fakültemizde bölümü mevcut olduğundan ders alt yapılarını biliyorum ve yazılıma dayalı eğitim aldıklarından teknoloji bazında dolu bir eğitim alıyorlar. Ülkemiz genel olarak bir endüstriyel bir ülke olduğundan bu sektörde yoğun çalışmaları mevcut.

Şimdilik söyleyeceklerim bu kadar, daha da fazlasını zamanı günü gelince öğrendiğim ve edindiğim bilgilerle anlatmayı isterim. Teknoloji her daim insanlık için gelişiyor ve büyüyor. Önümüzdeki zamanlarda daha neler çıkacak, gelişecek bunu bilemeyiz.

Hak edenin hak ettiğini hak ettiği şekilde kazandığı günlerde görüşmek üzere.

Au revoir !