Bilgisayar mühendisliğinin ne kadarı mühendislik gerektiriyor?

Senin kendi bilgine kalmış. En iyi üniversiteye de gitsen senin uğraşınla olacak şeyler. Tıp gibi yalnızca okuldaki hocalar ile öğrenilmiyor ve her geçen gün praktikler değişiyor. Bazı işe alımlarda mühendislik fakültesinin bilgisayar mühendisliği bölümünü bitirmeyenleri almıyorlar. Tamamen saçmalık. Düşük statüde başlıyorsun piyasaya. CV üretmen lazım. Ya çok çalışıp biraz freelance iş yapacaksın ya da staja gidip sonra orada çalışmaya başlayacan ki tecrübe kazanabil.

Bilgi sorun değil hocam her gün çalışırım kendimi geliştiririm. Merak ettiğim bilgisayar programcılığı ile bilgisayar mühendisliği arasındaki tek şey mühendislik kavramı mı ve programcılık iyi bir bölüm mü?
 
(Çünkü 4 yıllık bu mühendisliklerin amacı da sağlam dallarda uzmanlaşmak değil mi)?
Değil, mühendisliklerin amacı bu konularda temel eğitim vermek. Pek çok, kariyerinde kullanmayacağın dersi de göreceksin, mesela db yöneticisi olacak adam front end kodlamayı da öğrenecek, fron end developer olacak adam gömülü sistem de görecek vb. Hiçbirinde zaten uzman olmayacağın için sorun yok, temeli gösterecekler, bütün derslerini verdiğinde eline verecekleri diploma sadece senin çeşitli teknolojiler ve mühendislik disiplinleri hakkında temel sahibi olduğunun, eğitilebilir olduğunun, ilerde mühendislik yapabileceğinin göstergesi.
 
Değil, mühendisliklerin amacı bu konularda temel eğitim vermek. Pek çok, kariyerinde kullanmayacağın dersi de göreceksin, mesela dB yöneticisi olacak adam front end kodlamayı da öğrenecek, fron end developer olacak adam gömülü sistem de görecek vb. Hiçbirinde zaten uzman olmayacağın için sorun yok, temeli gösterecekler, bütün derslerini verdiğinde eline verecekleri diploma sadece senin çeşitli teknolojiler ve mühendislik disiplinleri hakkında temel sahibi olduğunun, eğitilebilir olduğunun, ileride mühendislik yapabileceğinin göstergesi.

Peki sektörde mühendislik ile düz programcılık arasında fark vardır değil mi? Araştırdığım çoğu yer zaten lisans diploması istiyor bunun dışında savunma sanayisinde vs bu 4 yılın getirdiği birikim aktif şekilde kullanılıyordur diye düşünüyorum.
 
Peki sektörde mühendislik ile düz programcılık arasında fark vardır değil mi? Araştırdığım çoğu yer zaten lisans diploması istiyor bunun dışında savunma sanayisinde vs bu 4 yılın getirdiği birikim aktif şekilde kullanılıyordur diye düşünüyorum.
Düz programcılıktan kastınız nedir, yani programcı adam düz programcılık yaparken size "git arge yap, yeni programlama dili geliştir onu kullanalım" demeyecekler. Hem düz programcı hem de bilgisayar mühendislerinin birlikte çalıştığı bir kurumda çalışmanız durumunda aynı ekibin parçası olacaksınız, belki sizden bazı şeyleri daha çabuk öğrenmeniz, hata toleransı çok daha düşük olacak şekilde ve güncel standartlara uygun kod yazmanız beklenebilir, yeni mezun olduğunuz zaman sizi öyle çılgın projelerde, sadece 3 kişinin erişebildiği gizli repolarda falan çalışmayacaksınız yani. Kurumun politikasına göre belki programcının erişemediği yöneticilik seviyelerine ulaşabilirsiniz ilerde, ekip ve proje yönetme sorumluluğunu size verirler, onun dışında yeni mezun mühendis cidden bir şey bilmez, programcı ile arasında pek bir fark yoktur, hatta programcılık lisesinde okuyan stajyer arkadaşlar bile siz ona öğrettiğiniz müddetçe işi anlıyorlar. Sadece alaylı yazılımcıya ya da programcıya proje teslim etmek (yani sorumluluk verme aşamasında güvenmek) daha uzun vakit alır, mühendise sorumluluğu daha erken verirsiniz. Bu yüzden pek çok kurum mühendislik bölümlerinden mezun ve hatta üstüne x yıl deneyimli eleman arar junior ilanlarında bile.

Savunma sanayine gelecek olursak, kesinlikle mühendislik disiplini isteniyor. Ancak savunma sanayinde çalışan birisinin her alana hakim olması gerektiğini düşünüyorsanız yanılıyorsunuz. Aselsan'ın bir Java developer ilanını buldum mesela, inceleyelim.

  • Üniversitelerin Bilgisayar Mühendisliği bölümünden mezun,
  • Yazılım mimarileri konusunda bilgi ve deneyim sahibi,
  • Java programlama dilinde en az 2 yıl deneyime sahip,
  • Karmaşık desktop frontend/backend full stack uygulamalar geliştirmiş,
  • Yaygın olarak kullanılan Java kütüphaneleri ve frameworklerinde tecrübesi olan,
  • Tercihen Eclipse IDE kullanımında ve RCP/OSGI plugin geliştirme konusunda deneyimli,
  • Java alanında yeni teknolojileri takip eden,
  • Veri yapıları, tasarım kalıpları, nesne yönelimli programlama/tasarım, temiz kodlama konularında tecrübeli,
  • İlişkisel ve NoSQL Veritabanı sistemlerinde tecrübeli,
  • Çevik yazılım yaşam döngüsü ürünleri (Bitbucket, JIRA, Confluence vb.) ile çalışma tecrübesine sahip,
  • Tercihen REST API, mikroservis mimarisi, container mimarileri (Docker, Kubernetes) hakkında bilgi ve deneyim sahibi,
  • Sistematik yeniden kullanım ve ürün odaklı çalışma yöntemlerine yatkın,
  • Tercihen CI araçlarıyla ilgili bilgi sahibi,
  • İletişime ve öğrenmeye açık, yardımlaşmaya önem veren, ekip çalışmasına yatkın, problem çözme yeteneğine ve analitik düşünce yapısına sahip,
  • Seyahat engeli bulunmayan
Okulun size kattığı 4 yıllık birikim sizce bu istenenleri karşılıyor mu? Bilgisayar mühendisliği eğitiminde Java veri yapıları dersini size anlatırken kullanılan bir dildir. Okul size temel syntax bilgisi dışında sadece Javaya mahsus bir şey öğretmez, veri yapılarını anlatırken yararlanılabilecek dillerden biridir. Okulda karmaşık bir uygulama geliştirmezsiniz (bitirme tezi bile karmaşık olmaktan çok uzaktır), okul yeni teknolojileri size öğretmez, öncelik olarak temeli öğretme gayesi içindedir, veritabanı dersinde ekseriyetle SQL relational db anlatılır, nosql e neredeyse değinilmez bile, mezun olup git nedir bilmeyen kişiler mevcuttur, jira, confluence gibi şeyleri duyan yoktur herhalde, clean code tasarım ve kodlama henüz kafada oturmamıştır, CI docker falan da öğretmez okulunuz size.

Yani 4 yıllık okulunuz size bu ilanın neredeyse hiçbir şeyini sunmuyor, 4 yılın büyük bölümü temel algoritma, matematik, otomata teorisi vb., bunun üstüne öğrenmeniz gereken veritabanı, nesneye dayalı tasarım kodlama mimari gibi kavramların temelleri, biraz seçmeli ders yani bilgisayar grafiği, yapay zeka, windows sistem programlama gibi (benim zamanımda bunlar seçmeliydi, şimdi AI zorunlu sanırım) 4 sene bitiyor gidiyor, bir birikim falan vermiyor, Aselsan ya da diğer firmalar size okulda öğretilen ama kendi işlerine yaramayacak birikimlerle ilgilenmiyor zaten, senin okulda ben bilgisayar grafiği dersi aldım, oyun kodlayabiliyorum demenin ya da mikrodenetleyici dersini çok severim demenin bu ilana (Java dev.) başvuruda hiçbir önemi yok. Ancak eğer mezunsanız ve kariyer hedefiniz db admini olmak ise, iş analisti olmak ise, operasyonel sorumlu olmak ise, front end developer olmak ise vb. vb. kariyer yolculuğunuza başlamanız için gereken temel eğitiminiz var. Bunun üzerine yukarıdaki ilandaki şeyleri öğrenmek, teknolojileri kullanmak, teorik bilgileri pekiştirmek sizin sorumluluğunuzda.
 
Düz programcılıktan kastınız nedir, yani programcı adam düz programcılık yaparken size "git arge yap, yeni programlama dili geliştir onu kullanalım" demeyecekler. Hem düz programcı hem de bilgisayar mühendislerinin birlikte çalıştığı bir kurumda çalışmanız durumunda aynı ekibin parçası olacaksınız, belki sizden bazı şeyleri daha çabuk öğrenmeniz, hata toleransı çok daha düşük olacak şekilde ve güncel standartlara uygun kod yazmanız beklenebilir, yeni mezun olduğunuz zaman sizi öyle çılgın projelerde, sadece 3 kişinin erişebildiği gizli repolarda falan çalışmayacaksınız yani. Kurumun politikasına göre belki programcının erişemediği yöneticilik seviyelerine ulaşabilirsiniz ileride, ekip ve proje yönetme sorumluluğunu size verirler, onun dışında yeni mezun mühendis cidden bir şey bilmez, programcı ile arasında pek bir fark yoktur, hatta programcılık lisesinde okuyan stajyer arkadaşlar bile siz ona öğrettiğiniz müddetçe işi anlıyorlar. Sadece alaylı yazılımcıya ya da programcıya proje teslim etmek (yani sorumluluk verme aşamasında güvenmek) daha uzun vakit alır, mühendise sorumluluğu daha erken verirsiniz. Bu yüzden pek çok kurum mühendislik bölümlerinden mezun ve hatta üstüne X yıl deneyimli eleman arar junior ilanlarında bile.

Savunma sanayine gelecek olursak, kesinlikle mühendislik disiplini isteniyor. Ancak savunma sanayinde çalışan birisinin her alana hakim olması gerektiğini düşünüyorsanız yanılıyorsunuz. ASELSAN'ın bir Java developer ilanını buldum mesela, inceleyelim.

  • Üniversitelerin bilgisayar Mühendisliği bölümünden mezun,
  • Yazılım mimarileri konusunda bilgi ve deneyim sahibi,
  • Java programlama dilinde en az 2 yıl deneyime sahip,
  • Karmaşık desktop frontend/backend Full stack uygulamalar geliştirmiş,
  • Yaygın olarak kullanılan Java kütüphaneleri ve Framework'lerinde tecrübesi olan,
  • Tercihen Eclipse IDE kullanımında ve RCP/OSGI plugin geliştirme konusunda deneyimli,
  • Java alanında yeni teknolojileri takip eden,
  • Veri yapıları, tasarım kalıpları, nesne yönelimli programlama/tasarım, temiz kodlama konularında tecrübeli,
  • İlişkisel ve NoSQL veri tabanı sistemlerinde tecrübeli,
  • Çevik yazılım yaşam döngüsü ürünleri (Bitbucket, JIRA, Confluence vb.) İle çalışma tecrübesine sahip,
  • Tercihen REST API, mikroservis mimarisi, container mimarileri (Docker, Kubernetes) hakkında bilgi ve deneyim sahibi,
  • Sistematik yeniden kullanım ve ürün odaklı çalışma yöntemlerine yatkın,
  • Tercihen CI araçlarıyla ilgili bilgi sahibi,
  • İletişime ve öğrenmeye açık, yardımlaşmaya önem veren, ekip çalışmasına yatkın, problem çözme yeteneğine ve analitik düşünce yapısına sahip,
  • Seyahat engeli bulunmayan
Okulun size kattığı 4 yıllık birikim sizce bu istenenleri karşılıyor mu? Bilgisayar mühendisliği eğitiminde Java veri yapıları dersini size anlatırken kullanılan bir dildir. Okul size temel syntax bilgisi dışında sadece Java'ya mahsus bir şey öğretmez, veri yapılarını anlatırken yararlanılabilecek dillerden biridir. Okulda karmaşık bir uygulama geliştirmezsiniz (bitirme tezi bile karmaşık olmaktan çok uzaktır), okul yeni teknolojileri size öğretmez, öncelik olarak temeli öğretme gayesi içindedir, veri tabanı dersinde ekseriyetle SQL relational dB anlatılır, nosql e neredeyse değinilmez bile, mezun olup git nedir bilmeyen kişiler mevcuttur, jira, confluence gibi şeyleri duyan yoktur herhalde, clean code tasarım ve kodlama henüz kafada oturmamıştır, CI docker falan da öğretmez okulunuz size.

Yani 4 yıllık okulunuz size bu ilanın neredeyse hiçbir şeyini sunmuyor, 4 yılın büyük bölümü temel algoritma, matematik, otomata teorisi vb. Bunun üstüne öğrenmeniz gereken veri tabanı, nesneye dayalı tasarım kodlama mimari gibi kavramların temelleri, biraz seçmeli ders yani bilgisayar grafiği, yapay zeka, Windows sistem programlama gibi (benim zamanımda bunlar seçmeliydi, şimdi AI zorunlu sanırım) 4 sene bitiyor gidiyor, bir birikim falan vermiyor, ASELSAN'ya da diğer firmalar size okulda öğretilen ama kendi işlerine yaramayacak birikimlerle ilgilenmiyor zaten, senin okulda ben bilgisayar grafiği dersi aldım, oyun kodlayabiliyorum demenin ya da mikrodenetleyici dersini çok severim demenin bu ilana (Java dev.) Başvuruda hiçbir önemi yok. Ancak eğer mezunsanız ve kariyer hedefiniz dB admini olmak ise, iş analisti olmak ise, operasyonel sorumlu olmak ise, front end developer olmak ise vb. vb. Kariyer yolculuğunuza başlamanız için gereken temel eğitiminiz var. Bunun üzerine yukarıdaki ilandaki şeyleri öğrenmek, teknolojileri kullanmak, teorik bilgileri pekiştirmek sizin sorumluluğunuzda.

Anladım, teşekkür ederim. Açıkçası bu yıl hazırlığı yeni bitirdim ama pek fazla bir şeye bakamadım (biraz Python bilgisi dışında pek bir bilgim yok) O yüzden kafam çok karışık. Kendimi nasıl bu konularda geliştireceğim sorusu mevcutken bir de sanki mühendislik bitince en üst şirketlerde en profesyonel şeyler yapmalıymışım gibi hissediyorum, o yüzden ML AI gibi konular heyecan verici gelirken, Back-End gibi şeylerse sanki amatörceymiş gibi düşünüyorum (öyle değil muhakkak ama ön yargı olarak kalmış). Hoş, zaten istesem de yurt dışındaki o "üst" şirketlere gidebilir miyim emin değilim (Hacettepe'de okuyorum ve mezunlara baktığımda çoğu "Software Engineer" ismiyle çalışıyor)
 

Geri
Yukarı