Kimler Bilgisayar Mühendisi Olmalıdır?
Prof. Dr. Ahmet Oğuz AKYÜZ
ODTÜ Bilg. Müh. Bölümü Öğretim Üyesi
“Bilgisayar mühendisliği çağımızın en gözde meslekleri arasında yer almakta ve üniversite sınavına giren birçok öğrencinin rüyasını süslemektedir. Peki, bilgisayar mühendisleri gerçekte ne iş yapar, bu mesleğe uygun karakter özellikleri nasıl tanımlanabilir, bu mesleğin zorlukları ve keyifli yanları nelerdir, ülkemizde ve dünyada bilgisayar mühendisliğinin günümüzdeki ve gelecekteki durumu hakkında ne söylenebilir? Yazımızda özellikle üniversite sınavına girecek olan gençlere yardımcı olabileceği düşüncesiyle bu konularda bilgiler aktarmayı amaçlamaktayız.”
Yazımıza çarpıcı olması açısından bir örnekle başlayalım. Bize verilen iki tam sayının en büyük ortak bölenini (EBOB) nasıl buluruz? Örneğin 20 ve 15 sayılarının en büyük ortak böleni 5’dir çünkü 5 sayısı verilen iki sayıyı da tam olarak bölen en büyük tamsayıdır. Bunu deneme-yanılma yöntemi ile bulabiliriz. Peki, bize verilen sayılar çok daha büyük ise ne yapabiliriz? Örneğin 10332 ve 4305 sayılarının EBOB’u nedir? Bu problemi deneme-yanılma yöntemi ile çözmek oldukça güç olacaktır. Bunun yerine bir algoritma kullanmayı deneyebiliriz. Bir algoritma bir problemin çözümü için sırasıyla yapılması gereken işlemlerin bir bütünüdür.
Bilgisayar mühendisleri hayatları boyunca birçok problemin çözümü için algoritmalar geliştirirler. EBOB problemi için geliştirilen ilk algoritma ise Euclid tarafından yaklaşık olarak milattan önce 300 yıllarında geliştirilmiştir!
Euclid algoritmasına göre iki sayının OBEB’i, bu sayılardan büyük olanı iki sayının farkı ile değiştirildiği durumda aynı kalır. Daha matematiksel bir ifade ile bu sayılara büyükten küçüğe A ve B dersek ve OBEB’lerine de K dersek, K aynı zamanda A – B ve B’nin OBEB’idir. Her seferinde büyük olan sayıyı iki sayının farkı ile değiştirirsek elde ettiğimiz sayıların OBEB’i aynı kalacaktır. Sayılardan birisi 0 olduğu zaman kalan sayısı ise bize OBEB’i verecektir. Şimdi okuyucularımızı yazının devamına geçmeden önce bu algoritmayı 10332 ve 4305 sayılarının OBEB’ini bulmak için kullanmaya davet ediyoruz.
Eğer bu denemeyi yaptıysanız verilen sayılar büyüdükçe bu işin oldukça zorlaşacağını tahmin edebilirsiniz. Bu aşamada bir bilgisayarın yardımını almak fena olmaz. İşte bilgisayar mühendisleri önce bir algoritma geliştirip sonra da bu algoritmayı bir bilgisayar üzerinde hayata geçirmek için programlar yazarlar. Bunu yaparken çeşitli programlama dilleri kullanırlar (dünyada 1000’in üzerinde programlama dili vardır ve teknolojik gelişme ve ihti- yaçlar doğrultusunda yeni diller ortaya çıkmaktadır). Örneğin Haskell dilinde EBOB algoritması şu şekilde ifade edilebilir:
gcd a 0 = a
gcd a b = if a > b then gcd (a – b) b else gcd (b – a) a
Algoritma bir programlama dili ile doğru bir şekilde ifade edildikten (diğer bir deyişle kodlandıktan) sonra bilgisayar üzerinde çalışacak şekilde derlenir. Bu derleme sonucunda ortaya çıkan ürüne çalıştırılabilir program ya da kısaca uygulama diyoruz. Artık bu uygulama kullanılarak herhangi iki sayının OBEB’i çok kısa bir sürede hesaplanabilir.
Bir bilgisayar mühendisi hayatı boyunca buna benzer birçok problemin çözümü için algoritmalar geliştirir ve bu algoritmaları çeşitli programlama dilleri kullanarak hayata geçirir. Bu problemlere bazı güncel örnekler verebiliriz:
• Facebook gibi bir sosyal medya platformu arkadaş önerilerini nasıl yapar?
• WhatsApp gibi bir uygulama çekilen bir fotoğrafı başka kişiler ile nasıl paylaşır?
• Bir bilgisayar programı nasıl satranç ve Go gibi oyunlar oynar?
• Bir bilgisayar oyununda gerçekçi grafikler nasıl elde edilir? Bu oyunlardaki karakterler nasıl hareket eder?
• Bir navigasyon (yol bulma) sistemi bize iki nokta arasındaki en kısa yolu nasıl hesaplar? Bunu yaparken anlık trafik yoğunluğunu nasıl dikkate alır?
Eğer bu gibi problemler sizin de ilginizi çekiyorsa ve bunların nasıl çözülebileceğini merak ediyorsanız bilgisayar mühendisliği tam da size göre bir meslek olabilir.
Bilgisayar mühendisleri aynı zamanda bilgisayarların tasarlanıp üretilmesine de çok önemli bir role sahiptir. Bilgisayarlar içerisinde birçok parça barındıran oldukça karmaşık sistemlerdir. Ancak bunlar çağımızın ihtiyaçlarına uygun olarak sürekli geliştirilmekte ve yeni özellikler kazandırılmaktadır. Bilgisayar mühendisleri bu tasarımların yapılmasında başrolü oynarlar.
Bilgisayarlar günümüzde hayatın her alanına girmiştir. Örneğin cebimizde taşıdığımız cep telefonları küçük ancak oldukça güçlü bilgisayarlardır. Evimizde kullandığımız televizyonlar hatta fırın, buzdolabı, bulaşık makinası gibi beyaz eşyalar gömülü bilgisayarlar tarafından kontrol edilmektedir. Yeni üretilen bütün arabalar gelişmiş bir bilgisayarlı kontrol sistemine sahiptir hatta sürücüye ihtiyaç duymadan kendi kendisini sürebilen arabalar bile mevcuttur. Bilgisayarların hayatın her alanına girmiş olması bilgisayar mühendislerinin de çok çeşitli konularda çalışabileceği anlamına gelmekte ve bu sebeple bilgisayar mühendisliği günümüzün ve geleceğin en önemli meslekleri arasında gösterilmektedir. Bilgisayar mühendislerinin çalışma konularına dair bazı örnekler aşağıda verilmiştir:
• Yapay zekâ ve akıllı sistemler
• Bilgisayar grafikleri
• Resim, görüntü işleme ve örüntü bulma
• Robotik
• Biyoinformatik
• Veri tabanları ve veri madenciliği
• Ağ ve internet teknolojileri
• Bilgisayar mimarisi ve bilgisayar donanımları
Peki, iyi bir bilgisayar mühendisinde olması gereken özellikler nelerdir? Öncelikle bilgisayar mühendisi olmak isteyen kişilerin bilgisayarlara karşı ilgi duyması ve bilgisayar başında vakit geçirmeyi sevmesi çok önemlidir. Fakat önceden bilgisayar programları yazmış olmak şart değildir. Algoritma tasarlamak ve program yazmak zaten üniversite eğitiminiz sırasında kaza- nılacak deneyimler olacaktır. İyi bir bilgisayar mühendisinin sabırlı olması ve problemler karşısında çabuk pes etmemesi gerekir. Bilgisayar teknolojisi sürekli gelişmekte olduğu için iyi bir bilgisayar mühendisinin öğrenmeyi sevmesi ve kendisini sürekli geliştirmeye açık olması gerekir. İyi bir bilgisayar mühendisi için öğrenme üniversite yılları ile sınırlı kalmayıp hayat boyu süren bir deneyim haline gelecektir. Bu bağlamda bilgisayar mühendislerinin iyi bir İngilizce ’ye sahip olmaları çok daha fazla kaynağı ulaşılabilir kılacağı için oldukça önemli bir özellik olacaktır. Bilgisayar mühendisliği her ne kadar sosyal bir meslek olarak bilinmese de birçok büyük bilgisayar programı tek bir kişi tarafından değil büyük bir ekip ile yapılmaktadır. Bu yüzden bilgisayar mühendislerinin sosyal yanlarının olması da ilerideki iş yaşamlarında faydalı olacaktır.
Bilgisayar mühendisi olacak kişilerin özellikle matematiği sevmesi ve bu konuda başarılı olması, aynı zamanda fizik, kimya, biyoloji gibi fen bilgisi derslerine ilgi duyması faydalı ola- caktır. Bilim ve Teknik gibi dergilerin arkalarında çıkan zekâ sorularına ilgi duymak ve bunları çözmeye çalışmak bilgisayar mühendisliğinde karşı ilgi duyulduğunun bir işareti olabilir.
Üniversite sınavına giren gençlerde olabilecek yanlış bir algı da başka bir mühendislik alanını seçip (elektronik, endüstri, inşaat gibi) birkaç bilgisayar dersi alıp programlama dili öğrenerek bilgisayar mühendisi olabilecekleri yanılgısıdır. Her mühendislik dalı dört yıllık yoğun bir eğitim ve öğretim gerektirdiği için öğrenciler farklı meslekler konusunda bilgilenip gerçekten hangisini yapmak istiyorlarsa üniversite tercihlerini ona göre yapmalıdır.
Ülkemizin önde gelen üniversitelerinde İngilizce eğitim veren birçok bilgisayar mühendisliği bölümü yurt dışında tanınmakta ve buralardan mezun olan öğrenciler lisans eğitimlerini tamamladıktan sonra yurt dışında iş, yüksek lisans ve doktora imkânları bulabilmektedirler. Fakat bu fırsatı kaçırmamak için öğrenciler lisans eğitimleri sırasında yüksek bir not ortalaması (4 üzerinden en az 3 gibi) tutturmaya gayret etmeli, not ortalamasının önemli olmadığı söylentilerine kulak asmamalıdır.
Eğitimlerini ciddiye alarak sürdüren ve başarılı bir biçimde mezun olan bilgisayar mühendislerinin iş bulma konusunda hiçbir sıkıntısı yoktur. Aksine henüz öğrenci iken “çok erken iş bulma problemi” ile sıkça karşılaşılmaktadır. Burada kastedilen henüz 2., 3. ya da 4. sınıf öğrencisi iken yarı zamanlı iş bulup okul hayatına yeterince zaman ayıramama ve bu sebeple derslerinden geri kalma problemidir. Bilgisayar mühendisliğinde okuyan öğrenciler bu konuda dikkatli olmalı, öğrenciliği sırasında bir yerde çalışacak ise de bunun okul hayatını olumsuz etkileyecek kadar çok zaman almamasına dikkat etmelidir.
Birçok Türk bilgisayar mühendisi dünyaca ünlü Google, Microsoft, Intel gibi firmalarda çalışmakta ve bu firmaların geliştirdiği ürünlere önemli katkılar vermektedir. Yurt dışında Türk bilgisayar mühendislerinin zeki, ciddi, çalışkan ve yetenekli olduklarına dair bir algı vardır. Bunun haricinde özellikle günümüzde yaygınlaşan çeşitli girişimcilik destekleri sayesinde mezun olur olmaz ya da biraz tecrübe kazandıktan sonra kendi işlerini kuran ve gerek yurt içinde gerekse yurt dışında önemli ürünler geliştiren bilgisayar mühendislerimiz vardır.
Sonuç olarak bilgisayar mühendisliği hem ülkemizde hem de dünyada önü çok açık zevkli bir meslektir. Ancak adaylar öncelikle kendi ilgi alanlarını ve meslekleri tanımaya gayret etmeli sadece puanı yüksek diye bölüm tercihi yapmamalıdır. Günümüzde üniversitelerin düzenledikleri tanıtım günlerine katılmak bu konuda bilgi edinmek isteyen adaylar için kaçırılmaması gereken bir fırsattır.