Nasıl Yazılımcı Olalım? – II: Hangi Bölümü Okuyalım?
Bir önceki yazıya, kaldığımız yerden devam edelim ve “yazılımcı/programcı olmak için bilgisayar mühendisliği okumak gerekli midir?” sorusunun cevabını araştıralım.
Bence üniversite kişiyi, kendini eğitebilir, kendi yolunu bulabilir bir noktaya getirmesi açısından önemlidir. Bir konuda yoğun bilgi ve metot aktarımı dışında ve sistemli çalışma, araştırma disiplini kazandırması, analitik düşünme becerilerini geliştirmesi, belli konuları etraflıca düşünebilme ve tartışabilme yeteneği kazandırması vb. açılardan üniversite okumak önemlidir. Bu konuda “hangi üniversite” sorusu malesef bu ülke için hala çok önemli. Üniversitelerimizin durumunu ve akademisyenlerimizin halini düşününce tabi olarak bu soru öne çıkıyor. Malesef gözlemim o ki ülkemizdeki akademik kurumlar ve akademisyenler, sınıflarındaki insanları heyecanlandırmaktan, onlara liderlik yapmaktan, bilgi kazandırırken beceri ve vizyon da kazandırmaktan uzaklar. Bu durum da en iyi okullarda bile gençleri dersten uzaklaştırıyor. Bunun çok iyi farkındayım. Şimdi bu konuyu kenara koyup “hangi bölüm” konusuna gelelim.
Bence herkes sevdiği ve yetenekli olduğu, adını duyunca heyecanlandığı bölümü okusun. Ama Cem Yılmaz’ın dediği gibi filmlerdekileri görüp itfaiyeci olmaya karar verenler gibi de olmayalım, tercihlerimizin gerçekliğini, bize ne kadar uyduğunu değerlendirelim. Bu konuda yazılımcı/programcı olmanın en temel yolu tabi olarak Bilgisayar Mühendiliği okumaktır. Bunu çok da tartışılacak bir tarafı olduğunu düşünmüyorum. Yani doktor olmak istiyorsan tıp, dişçi olmak istiyorsan diş hekimliği, hariciyeci olmak istiyorsan uluslararası ilişkiler okumak ne kadar anlamlıysa, yazılımcı olmak için BM okumak da o kadar normal bence.
Lakin BM okumak yazılımcı olmanın tek yolu degil. Bunun için bence pek çok farklı yol var. Açıkçası, BM ile ilgili etrafta pek çok yalan-yanlış malumat dolaşıyor. Bunu tartışmak bu yazının konusu değil ama burada örneğin konu ile ilgili güzel bir yazı var.
Ayrıca geç de olsa detayına girmeden yazılımcı olmaktan kastın büyük çoğunlukla yazılım geliştirici yani developer ya da programcı olmak manasına geldiğini düşündüğümü ifade edeyim. Bunun yanında analist, tester, network veya database yöneticiliğini de bu kapsamda ele alıyorum.
Bence matematik-fizik gibi bölümlerde okuyanlar, okul sırasında alacakları ek derslerle kendilerini yazılımcı olarak konumlandırabilirler. Benzer şey Elektrik-Elektronik, Endüstri gibi mühendislikler için de geçerli. Özellikle de günümüzde farklı bölümlerden ders almak, çift anadal ya da minor yapmak kolaylaştığı için, gayretli, disiplinli kişilerin BM bölümlerine giremeseler bile bu yolu tutmaları halinde başarılı yazılımcı adayı olabileceklerini düşünüyorum. Özellikle Endüstri M. mezunlarının yazılım projelerinin iş-business tarafında bulunmamaları için hiç bir sebep görmedigim gibi BM dahil diğer pek çok bölüme göre bu pozisyonlarda daha başarılı olacaklarını düşünüyorum. Bu bölümlerin ortak tarafı son derce yoğun matematiksel soyutlamalarla eğitim görüyor olmaları ve zaten ders programlarında belli bir miktar bilişim derslerine sahip olmaları. Matematiksel yoğunluk açısından düşünüldüğünde makine ya da inşaat gibi bölümlerde okuyanlar da benzer imkanlara sahipler bence fakat sanırım ders programları daha uzak. Bu şekilde yazılımcı olarak çalışan bir sürü isnan bir bu ülkede ve dünyada.
Bu gibi bölümlerden mezun olup, BM ve benzer bölümlerde master yapmak da bence iyi bir fikir. Temel matematiksel bilgi ve düşünme yeteneklerine sahip bir kişi yaklaşık 8-10 ders ile BM formasyonunu rahatlıkla kazanabilir. Bu da bir mastera karşılık gelir zaten. Operating Systems, Algorithms and Data Strutures, Database Managament Systems, Programming Languages, Networking, Compilers vb. dersleri master seviyesinde almak, bu sırada pratik olarak bazı programlama dillerinde kendini geliştirmek bence iyi bir plan olur. Tabi masteri, askerliği geciktirmek için yapılan bir masraf olarak görmememiz lazım.
Örneğin ben İTÜ’de Elektronik ve Haberleşme Mühendisliği okudum. Bu bölümde aldığım sağlam matematik dersleri, yüksek matematik olsun, lineer cebir, olasılık vb. dersler olsun hatta nümerik analiz vb. dersler bana matematiksel soyutlamaları öğretti. Bölümüm gereği, elektronik bağlamında aldığım devre analizi ve sentezi, logic tasarım vb. dersler ya da bir diyotun ya da transistörün fiziksel çalışması ve bunlarla ilgili farklı matematiksel modellerin anlatıldığı dersler, matematiğin gerçek dünyada nasıl kullanılabileceği konusunda bana sayısız örnekler sundu. (Tabi İTÜ’nün, anlaşılmasına- özümsenmesine önem vermeden bilgi yığma odaklı sisteminden çok müzdarip oldum. Liseden gelmiş bir genten daha 3. döneminde Maxwell denklemlerini anlamasını beklemek ki sonuçta bu geçmiş senelerde çıkan soruların cevaplarını ezberlemeye dönüşüyor, sanırım bu ülkedeki üniversitelere has bir şey. Nihayetinde iyi ya da kötü, dünya için değil ama bu ülke için iyi bir eğitim aldığımı düşünüyorum. Zaten bu ülkede çok az kimse neyi ne kadar bildiğinle ilgileniyor.)
Sonrasında gittiğim ABD’de masterda BMde algoritmalardan programlama dillerine, veri tabanından dağıtık sistemlere kadar temel dersleri aldım. Sonrasında da çalışırken devam ettiğim Yazılım Mühndisliğinde ihtiyaç analizinden nesne-merkezli tasarıma, proje yönetimine kadar süreç odaklı dersler aldım ve bilgi ve beceri olarak gelişmeme müthiş katkıda bulundu.
Ciddi kaliteli yazılımcı iş gücü açığının olduğu ülkemizde ve dünyada master yaparak yazılımcı olmak bence iyi bir fikir ve değerlendirilmeli.
İki senelik meslek yüksek okullarından mezun olanların mezuniyet sonrası geçişle BM diploması almaları hem bilgi ve yetkinlikleri hem de piyasada bulunmaları açısından bence önemli. Çünkü bu ülkede, özellikle de bizim sektörde bir “dört senelik bölüm” fetişizmi hüküm sürüyor. Bu bölümlerden mezun arkadaşların pek çok yere yaptıkları başvurular daha IK’dan geri dönüyor. Meslek yüksek okullarından mezun, kendini yetiştirmiş ve meraklı gençlerin yazılım sektöründe, İngilizcelerinin olması durumunda, yapamayacakları bir iş olduğunu düşünmüyorum. Ama yukarıda bahsettiğim takıntımızdan dolayı mühendislik derecesini almaları yerinde olacaktır.
Üniversitelerde değişik adlar altında olup da bilişim dünyasına yönelik farklı ağırlıkta eğitim veren bölümler de bence yazılımcı olmak isteyenler için fırsattır. Örneğin Bilkent’deki “Bilgisayar ve Bilişim Sistemleri Teknolojisi” son derece pratik bir eğitim sistemine sahip. “Yönetim Bilişim Sistemleri” (MIS) adı altındaki bölümler, BMe göre daha hafif bir bilişim eğitimi veriyorlar ama buradaki arkadaşların yazılımcılık taraflarını geliştirmek için avantajları çok bence. Nitekim bu bölümlerden mezun olup developer-programcı olarak çalışan olduğu gibi, analist, tester vb. sorumluluklarla çalışanlar muhtemelen daha fazladır. Bu tip bölümler mezunlarının daha iş odaklı ortamlarda bulunmalarına imkan tanıyor. Bu yüzden örneğin BI (business intelligence) ya da veri analizi (data analysis) gibi konularda çalışmaları, bir BM mezununa göre çok daha rahat oluyor. Benzer şekilde ilgili öğretmenlikler de ilgili ve tutkulu ama hasbel kader bu bölümlere puanı yetmiş arkadaşlarımız için fırsattır. BMde master yapma, konu ile ilgili daha yetkin olmak içın yine bir alternatiftir diye düşünüyorum.
Ülkemizde Yazılım Mühendisliği bölümleri de var. Ama malesef gerek yazılım mühendisliği pratiklerinin bu ülkede uygulanmaması gerek ise bu ülkede verilen YM eğitiminin gerçeklikten uzaklıği gibi sebeplerden dolayı, bu bölümlerden mezun olanların işe girmede BMden mezun olanlardan bir farkı olacağını düşünmüyorum. Yani kimse YM mezunlarını bu ülkede use case yazsın, ya da modelleme yapsın diye işe almayacaktır. Ben YM danışmanlığı ve eğitmenliğinden para kazanan birisi olarak bu bölümleri önemsiyorum ama malesef faydaları konusunda çok da umutlu değilim. Hatta YM eğitiminin, MBA gibi yüksek lisans seviyesinde verilmesinin daha doğru olacağını düşünüyorum. Piyasada ciddi bir tecrübe edinmiş kişilerin, yazılım geliştirme süreçleriyle ilgili bir formasyona sahip olmaları bu bölümü liseden hemen sonra okumaktan çok daha faydalı olacaktır.
Nihayetinde, ülkemizin iyi yetişmiş, teorik bilgisi sağlam, piyasada doğru tecrübelerle bezenmiş, yetkin yazılımcılara ihtiyacı var. Bu gibi kişilerin hem ülkemizde hem de yabancı ülkelerde önleri çok açık.
Toplam görüntülenme sayısı: 16218
Mehmet Tanlak
21 Eylül 2014 @ 14:48
Akın hocam merabalar,
Yazdıklarınızın büyük bir bölümüne katılıyorum.Yazılım Mühendisliği okuyan biri olarak ; yazılım tarafında çalışacak kişilerin bu bölümü okuması daha mantıklı bence.Ama dediğiniz gibi ülkemizde daha yeni yeni çıktığı için ve yazılımın mühendislik tarafına pek önem verilmediği için BM bölümüne göre daha geride.Ama bence YM bölümü ilerleyen yıllarda daha çok üniversitede açılacak ve daha önemli hale gelecektir..Çünkü BM bölümünü okuyan kişiler direk yazılıma yöneliyor ve okuldaki gösterilen elektroniksel dersler boşa gidiyor.Ama yazılım temelli mühendislik bölümünü okuyup işe atılmak daha avantajlı olacaktır.
İyi çalışmalar. Saygılar.
Akin
21 Eylül 2014 @ 15:31
Yorumunuz icin tesekkur ederim. Yazilim muhendisligi sureclerini uygulamamiz, dunya yazilim piyasasinda bulunmamiz acisindan zorunluluk. Universitelerde bu bolumlerin yayginlasmasi da guzel ama benim gordugum, piyasadaki pratiklerin sizin gibi idealist yazilimcilari eritmesi, enerjileri yoketmesi ve kendi uygulamalarina yaklastirmasi. Insallah daha saglikli yazilim uretir hale gelebiliriz.
binnur kurt
21 Eylül 2014 @ 16:27
Son dönemde özellikle vakıf üniversitelerinde Yazılım Mühendisliği bölümleri ile karşılaşıyoruz. Akademik kadrodakilerin doktorasını bu alanda yapmış olması beklenmelidir. Ama pek de öyle olmadığını görüyoruz. Aynı durum Bilgisayar Mühendisliği bölümleri için de geçerli. Bilgisayar Mühendisliği bölümlerinde farklı dallarda (Fizik, Matematik, Kimya gibi) doktora yapmış ya da doçentliğini almış akademisyenlerin nasıl ders verebildiklerini merak etmişimdir. Tersi durumla hiç karşılaşmadım. Fizik ya da Kimya bölümünde giriş derslerine bile giremem her halde. YÖK buna nasıl izin veriyor, o da ayrı bir konu.
Programcı olmak için Bilgisayar/Yazılım Mühendisi olmaya gerek yoktur. Fizik, Matematik, Kimya gibi Mühendislik formasyonu almış soyut düşünme becerisi gelişmiş herkes programcı olabilir. Özellikle AR-GE gerektiren işlerde Bilgisayar Mühendislerine ihtiyaç var, başka türlü olmuyor. bazen yüksek lisans bazen de doktora seviyesinde derinlemesine bilgiye ihtiyaç duyulan projeler oluyor. Tecrübe önemlidir ama bilginin yerini alamaz. Boynuz kulağı geçebilir ama işlevleri farklıdır. Boynuzdan kulak, kulaktan boynuz işlevi beklenmemelidir. Bilgisayar Mühendislerine de iş analistlerine de programcılara da ihtiyaç var. Bilişim ve mühendislik problemleri [sadece] Javascript, HTML/CSS, JPA, JSF, Java, .Net bilmekle çözülemiyor. Keşke öyle olsaydı…
Akin
21 Eylül 2014 @ 17:08
Yorumlarin icin tesekkur ederim Binnur. Sen akadmeiye cokd aha yakinsin, tecrubelerin cok. Bence sen de bunlari paylasmalisin.
Sen daha net vurgulamissin, BM muhendisliklerinde okuyan genclerin pek cogundan senin dedigin durumdan da kaynaklanan pek cok memnuniyetsizlik duyuyorum.