Bilgisayar Mühendisliği Nedir ?

Son yıllarda bilgi teknolojileri konusunda bir ünvan karmaşası var.

  • Bir kısım insanlar, bilgi teknolojileri konusunda eğitim almamış olmakla beraber çalışma hayatı içerisinde pişerek bir seviyeye geliyorlar. bunlara "alaylı" da denmekte.
  • Bir kısım insanlar Microsoft veya oracle gibi firmaların kurslarına gidip sertifika alarak yetkinliklerini ortaya koyuyorlar.
  • Bir kısım ise, üniversitede bilgisayar mühendisliği eğitimi alıp, bilgisayar mühendisi olarak çalışma hayatına adım atıyorlar..
Odağımızı bilgisayar mühendisleri üzerinde koruyarak, tüm bu sınıf insanların çalışma hayatındaki yerlerini tayin etmeye çalışacağız..



Bilgisayar mühendisinin ne iş yaptığını anlayabilmek için, bilim adamı ve mühendis arasındaki farka gözatmamız gerekir.

Bilim adamı ve mühendis arasındaki fark:

Bilim adami, dogada var olan bilginin pesindedir. Muhendis ise, bu bilginin insan yasamini kolaylastirici bir sekilde kullanilmasinin pesindedir. Yani bilim adami bilgi, muhendis uygulamanin pesindedir. Ayrica muhendisin para ve zaman gibi iki sınırlayıcısı da vardır. Bilim adami ise mukemmelin pesindedir.


Oyleyse bilgisayar muhendisi, bilgisayar biliminin bilgilerini karsilastigi problemlere uygulayan kisidir.
Nedir bu bilgiler? Bilgisayar mühendisliği bölümlerinde okutulan; Derleyiciler, veri yapilari, algoritmalar, isletim sistemleri, bilgisayar organizasyonu gibi derslerin icerikleri!


Eger bilgisayar mühendisliği bölümlerinde belli bir uygulama/teknoloji eksenli bilgiler ogretilirse bu muhendislik olmaz ! Sadece o uygulama uzerinde uzmanlasma olur.


Bilgisayarların ilk çıktığı zamanlarda, bilgisayar bilimi ile uygulamalar arasındaki bağ oldukça aşikardı. Cunku uygulamalar nispeten basitti. Fakat zamanla uygulamalar karmasiklastikca kendi iclerinde bir yapilari olustu. Bu yapilar o teknolojinin gelistiricileri tarafindan ortaya kondular..

Mesela windows veya Linux ortamlarinin kendilerine has ne kadar (teknoloji) bileşenleri var. Mesela dosya sistemleri (Windows:NTFS/Linux:ext3), Kullanıcı arayüzleri (Linux:KDE,bash), Ağ kaynakları kullanımı/yönetimi (Çalışma grupları (workgroups), etki alanları (domains), etkin dizin (active directory) hizmetleri) gibi.. Bu teknolojileri bilmek de yeterli degil, bunlara has komutlari ve yönetim araçlarını da kullanabilmek gerek..

Yani bilgisayar bilgisi soyle gruplanabilir..

  1. Komutlar
  2. Teknoloji
  3. Bilgisayar bilimine ait bilgiler..
Seviye Örnek 1

Örnek 2

Örnek 3

Örnek 4

Komutlar cp,mv,ls ipconfig,route,tracert cc ex.c -o yazbisey

Java, Dephi, kodla ve onar

Teknoloji ext3 dosya sistemi, i-node TCP/IP, etki alanı

cc ve diğer parametreleri ne işe yarar

JEE, struts, uygulama sunucu, veritabanı

Bilgisayar bilimine ait bilgiler

Dosya sistemi nedir? Nasıl çalışır? i-node, FAT vb.

Veri iletişimi temelleri, OSI katmanları, TCP/IP

derleyici nedir, lex/yacc ile derleyici yapımı

Yazılım mühendisliği, SRS, süreç modelleri, OOP
Bu seviyelere göre, alaylı dediğimiz grup daha çok ilk seviyede ve -eğer kendileri merak edip araştırma yapmışlarsa- 2. seviyede bilgilere sahiptirler. Bu gruptakiler çalıştıkları ortamı en iyi bilen gruptur ve rutin işler için hazır çözümleri zaten vardır.

Sertifikalı grubu, ilk seviye ve ilgili firmanın resmi sertifika eğitiminden geçtikleri için ikinci seviye bilgileri mevcuttur. Fakat bizzat çalışma hayatındaki problemleri yaşamadıkları için -başlangıçta- alaylı grubu kadar iş yerlerine faydalı olamazlar. Çalıştıkları kuruma faydalı olabilmek için biraz alışma süresi gerekir.

Bilgisayar mühendisleri, 3. seviyedeki bilgilere sahiptirler. Teknoloji ve komutları, o bilginin uygulama örnekleri diye öğrenirler. Yani amaçları teknoloji ve komutlardan çok kavramları öğrenmektir. Yeni bir derleyici tasarımı gibi, teknoloji üretmek için ideal insanlardır. Temelleri güçlü olduğu için teknoloji ve komutları bu temel bilgiler üzerine inşa etmesi beklenir. Bunların da başladıkları iş yerlerinde alışmaları için bir süre gerekir. Sertifikalılardan daha uzun bir süre! Fakat çalışma hayatını iyi değerlendirdiklerinde, işin uzmanı olabilecek derinliğe sahip olurlar.

Yazılım geliştiriciler üç seviyede birden çalışabilirler. Mesela Java'da program yazan birisi, hem Java komutlarını, hem JEE mimarisini hem de nesneye yönetlik programlama (OOP) bilgilerini uyguluyor olabilir.

Bu seviyelere ait yaşanmış 3 örnek vermek istiyorum...

1. Seviye
Problem: Linux üzerinde filan dizini kopyalamak istiyorum
Çözüm:cp komutu dosya kopyalamak için kullanılır. Eğer -r parametresini kullanırsan dizinleri de kopyalar

2. seviye
Problem: Filan dosyayı oluşturdum fakat rm komutuyla silemiyorum. Sanırım yanlışlıkla içinde özel bir karakter kullandım
Çözüm: Eğer dosyanın i-node numarasını "ls -i" komutuyla bulursan ve bunu find komutunu parametre olarak verirsen, dosyayı silebilirsin

3. seviye
Problem: Yeni aldığım 120 GB'lık USB diskime 4.5GB'lık DVD imajını kopyalayamıyorum!
Çözüm: Her dosya sistemi için, adresleyebileeği maksimum alan ve tek dosyanın sahip olabileceği maksimum büyüklük vardır. USB diskinin dosya sistemi FAT32. (Internette ufak bir araştırmadan sonra) Bunun üzerinde oluşturulabilecek maksimum dosya boyutu 4GB-2 Byte
Piyasada çalışan arkadaşların çoğu branş dışı insanlar. Mesela çalıştığım işyerlerinden birisinde 20 personelin sadece 3 tanesi bilgisayar mühendisiydi. Bu arkadaslara bilgisayar muhendisligi altyapsini kazandirmak icin Bilgisayar uzmanligi kitabi (www.cengaver.net) cikarildi. Bu sayede uzmanlasma seviyelerini arttirabilirler.. Fakat Kitapta ust 2 seviyeye ait bilgiler de var..Hatta hikayeler bile var!




Soru: Bir (mesela) elektronik mühendisi de bilgisayar mühendisinin işini yapabilir mi ?


Bir lise öğrencisi ile ilkokul ogrencisine basit bir soru verilirse, aralarindaki fark gorulmez. Ama daha zor bir soru verilince aralarindaki fark ortaya cikar. Bilgisayar muhendisi ile sonradan yetisme bir programci benzer gorunse de, buyuk capli yazilim muhendisligi projelerinde fark ortaya cikar. Büyük, farklıdır.

Sonradan yetisme programci buyuk olasilikla yazilim gelistirme metodolojilerinden, SRS (Software Requirements Specifications), analiz ve tasarim çalışmalarından haberdar olmayacak, proje yonetimi yapamayacaktir. "Kodla ve onar" yaklasimiyla ise girisecektir.. Oysaki bilgisayar muhendisi bunlara dikkat eder ve projeyi, istenen işlevsellik, guvenilirlik, para ve zaman limitleri içerisinde bitirebilir.

Bu konuda, steve McConnel'in kitaplari (Code complete, Rapid Application Development) her yazılım geliştirici için faydalı, 2 ve 3. seviyeden bilgiler içeriyor.

Yorumlar

  1. OOP tarzinda bir tanimlama olmus hocam sizden beklenildigi gibi. Ozellikle 3 farkli seviyenin addresslenmesinde ki (sertifikali, programci ve muhendisin rolleri ve yetkinligi) Superclass ve subclasslar gibi dusunebilecegimizi goruyorum cizdiginiz resimden.

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

create Virtual Machines in VMware with ansible

Yüksek Hizmet Sürekliliği (High Availability)