ikisi de hayali ihracat ürünü olan ve firmalar tarafından (cisco, ms, redhat gibi) uydurulmuş network mühendisi veya sistem mühendisi kavramlarıyla ilgisi olmayan ve kirletilmemesi gereken; herkesin bir tarafa çekmeye çalıştığı meslek erbabıdır.
türk halkı tarafından bilgisayar tamirciliği olarak anlaşılan bir ekran kartını takamadığın veya bir bilgisayarın sorununu çözemediğin zaman mahallenin osusruktan bilgisayar teknisyeninden daha bir değersiz olduğu düşünülen, büyüklüğü anlaşılamamış canım mesleğim.
aşağıdaki diyalogları duymanıza sebebiyet veren meslektir.
- abi şimdi size hackerlık ta öğretiyorlar dii mi?
- bilgisayar mühendisi değil misin yap oğlum şu hard diski
- power point te bir sunu hazırlancak. kim yapar? hede höde sen yaparsin dii mi ? ne de olsa bilsiyar mühendisisin
- şimdi bu bilgisayar cd yi okumuyor neden okumuyor olablilir?
- siz şimdi yazılım üretiyorsunuz ya... yani yazı mı yazıyorsunuz?
- (ne yapıtğınızı anlatmışsınızdır) siz şimdi ne iş yapıyorsunuz tam olarak yani ? tamir falan yapyıyor musunuz?
.....
asker anıları:
- aranızda bilgisayar mühendisi var mı?
- eee şey ben!
- gel evladım sana bir işimiz düştü.
--- komutanın odasına girilir
- oğlum ben bu bilgisayarı kapatamadım kapat bakalım şunu!
- hönk! emredersiniz komutanım!
- başlat -> bilgisayarı kapat -> kapandı
- kapandı efendim
- afferim oğlum. bundan sonra hergün seni çağırabilirim
- emredersiniz komutanım
halkımıza yanlış lanse edilmiş bir meslektir...
geçen abimin şirketine gittiğimde sekreter bağyanın bir tanesi elinde mouse toplu ile bana geldi ve şunları söyledi:
-ıı şey benim mouse sürçüoda bunun topunu nasıl temizleriz?
eğitimine başlar başlamaz beyninin çalışma mekanizması tamamen analize yoğunlaşmış kişi. bu hasımlar çevrede olup biten her olaya üçüncü göz tavrıyla yaklaşırlar, olası tüm problemleri öncelikle kafalarında çözmeden asla faaliyete geçmezler dolayısıyla faka basma ihtimalleri çok azdır, onlar için hayatta herşey sorundur ve çözüm mükemmel olmalıdır, mükemmel çözüme ulaşmak için de çok düşünürler çok yorulurlar ama sonuç tadaa- > good work...
zor olup olmadığı bir yana, mezun olan insana çok birşey verdiği söylenemez, kendini 4 yıl kişisel gelişime adayabilen bir insan bir bilgisayar mühendisliği öğrencisinden fersah fersah fazla mühendis vasfına sahip olabilir. bilgisayar mühendisliği eğitiminde bireyin kazancı, belli başlı konular hakkında genel kültür ve giriş seviyesinde bilgiden öteye gidemez, bunlardan fazlasını elde edebilmek mühendis adayının yapacağı projelerle, ağırlık vereceği alanlara ilişkin araştırmalarıyla ve kendini geliştirmesiyle ancak mümkündür.
okumaya değecek bir bölüm değildir, en yüksek puanlı mühendislik bölümü olma nedeni "bilgisayar mühendisi, woow" içsel tepkisinden kaynaklanmaktadır, etrafta bir dolu işini iyi yapan alaylı programcı, donanımcı vs. varken bilgisayar mühendisliği piyasada çok da prestijli bir konuma sahip değildir (giriş seviyesinde), lakin iş olanakları fazladır, maaşlar idare eder düzeydedir.
gerçekten hakkını vererek okuyan öğrencinin, okumayan birinin kasarak öğreneceği şeyleri yapabilmesinin yanında okumayan kişilerin kasarak öğrenmeye çalıştıkları şeyleri tasarlar veya geliştirir.
(bkz: bilmem anlatabildim mi)
ülkemizde bilgisayar mühendisliği ile programcılık kavramlarının karıştırılmasından ötürü ezilmeye çalışılan meslek.o alaylı programcılar oturup algoritma yapabilir mi 4 sene eğitim almış bir bilgisayar mühendisi kadar ya da bilgisayarın işlevini nasıl yerine getirdiğini bilebilir mi?eğer yukarıda belirtilen mantıkla düşünülürse elektronik mühendisleri de işi bıraksın, alaylı elektrikçiler bu mesleği yapsın.endüstri mühendisleri hiç okumasın çünkü onların iş hayatında kullandıkları bilgi okulda öğretilenlerden çok çok farklı.işletmecileri saymıyorum zaten,boşversinler girsinler bi dükkana çırak olarak orda öğrensinler.ne işleri var öyle makro ekonomi falan filan.
size bir kaç endüstri mühendisi tanıdığımın itiraflarını aktarıyorum, yorumsuz:
em1: abi dört sene okuduk, bir bok öğrenmedik.
em2: endüstri mühendisliği diye öğrettikleri asansöre ayna koymakmış. insanlar için. sıkılmasınlar diye.
em3: geçenlerde bir arkadaşla beraber aynı ortama düştük. o kadar iyi geliştirmiş ki kendini. değme endüstri mühendislerine taş çıkartır. boşuna okumuşuz biz burada. sümeroloji okusak, hem genel kültürümüz artarmış hem de kendini geliştirme kursuna katılıp biraz kasıp müthiş endüstri mühendisi olurmuşuz.
vesselam yorumum: bir paragrafta ne iş yaptığını anlatamayan adamın mesleğine güvenmeyin derim. mesleksiz mühendis olmaz.
edit: sümerologlardan affımı dilerim. yaptıkları işe saygım büyük.
üniversitelerde en yüksek puanlı mühendislik olmasından mütevellit kazanamayanların bok atma felsefesi benimsedikleri güzide meslek. etrafta bir dolu iş yapan alaylı (bu da moda oldu) programcı/donanımcı biraz kafası bassa, sınava girse ezkaza bir bilgisayar mühendisliğini tuttursa amuda kalkıp kaydını mı yaptırır yoksa "ulan ne kascam ben kendimi kişisel gelişimime adarım, fersah fersah katlarım" mı der merak ederim.
odtü bilgisayar mühendisliği hocalarından göktürk üçoluk'un bilgisayar mühendisliği hakkında sıkça sorulan sorular yazısından alıntıdır (http://www.ceng.metu.edu.tr/~ucoluk/bm/)
yazılım mühendisliği, eldeki kaynak kısıtlarını gözeterek, yüksek kalitede yazılım üretmenin gerekleri olan sağlıklı mühendislik usullerinin ve iyi yönetim pratiğinin oluşturulması ve bunların uygulanmasıdır. yazılım kalitesinin ne olduğunun somut biçimde betimlenmesi de bu disiplinin doğrudan ilgi alanındadır.
bilgisayar mühendisliği bir yazılım üretim sürecinde gözetilmesi gereken usulleri belirler. bu dört süreç şunlardır:
sipariş sahibi ile yapılacak görüşmeler sonucunda ihtiyacın belirlenmesi.
tasarımın yapılması.
yazılımın yazılması.
yazılım ürününün test ve bakım.
bu dört evreyi genel hatları ile bilgisayar mühendisinin işlevi bakımından şöyle özetleyebiliriz:
sipariş sahibi ile yapılacak görüşmeler sonucunda ihtiyacın belirlenmesi:
bir olurluk-fiyat analizi ile başlayan bu süreçte müşterinin ihtiyacının ne olduğu ve bütçesinin çerçevesinde nasıl yazılım çözümleri üretilebileceği irdelenir. bu süreç çok yoğun müşteri ile ilişki gerektirmektedir. pek çok müşteri, bilgisayarlar konusunda en temel bilgiden bile yoksundur. bundan ötürü yazılım mühendisini çok kolaylıkla yanlış noktalara yöneltir. örneğin bir mal sevkiyatının otomasyonunda şöyle bir diyalog, çok olasıdır:
y.m.: peki, bu depodan günde ortalama kaç sipariş sevk edilir?
müşteri: hiç belli olmaz ki, hep değişir!
y.m.: en fazla kaç olur?
müşteri: 5 de olduğu olur, bazen 500 de olur.
y.m.: peki burada kaç eleman yükleme yapıyor?
müşteri: 2.
y.m.: 500 siparişi 2 adam nasıl yüklüyor peki?
müşteri: beyim, o zaten kırk yılda bir olur, o zaman da siparişler bir iki gün gecikir haliylen!
yazılım mühendisi için belli ki çok kritik olan ortalama sipariş adedi bilgisini, gördüğünüz üzere, doğrudan öğrenmek olanaklı olmadı. yazılım mühendisi bunu yeteği ile buldu, çıkardı. her zaman da şans böyle yaver gitmeyecektir.
dolayısıyle bir yazılım mühendisinin:
zeki olması,
sosyal iletişim yeteneğinin çok yüksek olması,
titiz olması
gerekir. bunlardan birisindeki bir eksiklik sonradan gecikmeler, milyarlık zararlar, davalar, kötü ün olarak geri döner. yeri gelmişken şunu da belirtelim:
genel kanının aksine yazılım mühendisi gününü (gecesini) bilgisayar karşısında geçiren, çoğunlukla karikatürize edildiği üzere sosyal iletişim özürlüsü, garip bir dille konuştuğu için ne dediği bir türlü anlaşılamayan bir kişi hiç değildir.
bu durumdaki kişi yukarıda anılan nedenlerden ötürü kaybetmeye mahkumdur, genel profil de hiç böyle değildir zaten. bu bakımlardan yazılım mühendisliğinin pek benzeri endüstri mühendisliğidir. hatta denebilir ki yazılım mühendisinin iletişimde olması gerekebileceği kesim bir endüstri mühendisininkinden daha yaygındır ve muhatap olacağı müşterinin kendi terimlerine (yazılım mühendisinin) vakıf olması ise daha az olasılıktadır.
bu aşamanın sonunda üretilen karşılıklı bağıtlanan (üzerinde anlaşmaya varılıp imzalan) ihtiyaca cevap verecek ürünün (yapacakları ve yapmayacakları ile) tarif edildiği bir dökümandır.
tasarımın yapılması:
bu aşama mühendisliğin teknik (ve anlaşılmaz) boyutunun devreye girdiği aşamadır. gerekli bilgileri müşteriden almış olan yazılım mühendisi (olasılık ekibi ile) kapanıp talep edilen ve üzerinde anlaşılmış sistemin tasarımını yapacaktır. nasıl inşaat mühendisliğinin proje çizim yöntemi, elektronik mühendisliğinin elektronik devre çizim yöntemi, makina mühendisliğinin teknik resim çizim yöntemi varsa bilgisayar mühendisliğinin de kendine özgü bir tasarımı belgeleme (denotation) yöntemi vardır. ve nasıl bir makina mühendisi elektronik devre şemasından birşey anlamaz ise diğer tüm mühendislikler de bilgisayar mühendisliğinin bu belge ve çizimlerinden birşey anlamaz. bu belgelerde işin hangi işlevsel modüllere, nasıl bölüneceği, modüllerin birbirleri ile ilişkileri, veri depoları, veri akışları, veri dönüşümleri, veri türleri gösterilir. nasıl üç odalı, bir mutfaklı ve iki tuvaletli bir daireyi iki inşaat mühendisinin (veya mimarın) farklı farklı tasarlaması olanaklı ise yazılımın tasarımı da farklı farklı ve buna bağlı olarak da başarılı/başarısız olabilir. teknik deneyim ve ustalığın kendisini göstereceği en önemli aşamalardan birisidir tasarım. bu tasarım evresinde de kimse sipariş edilen yazılımı 'yazmak' (biz buna kodlamak diyoruz) amacı ile bilgisayar başına oturmayacaktır. bu, daha planı yapmadan inşaata girişmeye benzerdi ve aynen böyle bir inşaat nasıl çökmeye mahkum ise, tasarım evresi profesyonel usullere uygun yapılmamış bir yazılım da feci biçimde çökmeye mahkumdur.
bu evrede, günümüzde artan biçimde, yazılım mühendisleri bu tasarımları belgelemek için özel bilgisayar prgramlarından yararlanmaktadırlar. piyasada bulunan yazılım mühendisliği paketleri yazılım mühendisinin tasarımını yapması ve belgelemesinde yardımcı araç görevi yapmaktadır. aynen bir elektronik mühendisinin yarattığı devreyi çizmesine yardımcı olan devre çizim programları veya bir inşaat mühendisinin bina planının çizdiği halk arasında autocad programı olarak bilinen programlardır bunlar. gerçekte bilgisayar mühendisi (diğer mühendisliklerde de olduğu üzere) bu programlar olmaksızın da tasarımını yapabilir.
tasarım evresinin sonunda üretilen bir 'tasarım dökümanı' dır. ve belirtildiği üzere ancak ancak konunun profesyonellerince anlaşılabilecek özelliktedir.
yazılımın yazılması:
sıkı durun, beklentinizin aksine olduğunu tahmin ettiğimiz, çarpıcı bir gerçek geliyor:
gerçek profesyonellikte yazılımın fiilen yazılması yazılım mühendislerince yapılmaz.
bu aynen planı çizilmiş bir inşaatın inşaat mühendislerince harç karılarak, kalıp çakılarak, kazma kürekle inşaa edilmesine, veya tasarımı yapılıp şeması çizilmiş yeni televizyonun üretim hattında bir elektronik mühendisinin lehim yapmasına benzer. bu aşama aslında 'programcı' olarak adlandırılan, kendi başına tasarım yapacak bilgisi olmayan ancak yapılmış bir tasarım dökümanına bakarak yazılımı yazabilecek elemanlarca gerçekleştirilir. bu 'programcıların' 'kodlamaları' da aynen bir inşaat sahasındaki şantiye mühendisinin inşaatın yapılmasını her aşamada denetim altında tutması gibi bir yazılım mühendisi tarafında sıkı biçimde denetlenir. hatasızlığı kontrol edilir. yeri gelmişken bir gerçeğin altını çizip, genel bir yanlış kanıyı düzeltelim:
yazılım mühendisliği yoğun bilgisayar kullanımı gerektiren, kişinin hayatını program yazarak geçirdiği bir meslek değildir.
ülkemizdeki durum:
ülkemiz yazılım üretimi konusunda ne yazık ki daha tam profesyonelleşememiştir. eksiklik, gerekli kadroların ve iş gücünün oluşmasıdadır. yazılım mühendisi sayımızda azlık olduğu gibi, bu disiplinin ara elemanı durumunda olan 'programcı' sayısı ihtiyacın çok çok altındadır. pek az üniversitede 2 yıllık 'programcılık' eğitimi verilmektedir. kaldı ki 'programcılık' üniversite çatısı altında olmaktan çok 'meslek yüksek okulu' çatısı altında yer alması gereken bir meslek eğitimidir. (profesyonel) 'programcı' boşluğu ne yazık ki ülkemizin bir gerçeği olarak iki kaynaktan doldurulmaktadır:
kendini hasbel kader programcılık alanında (kısmen) yetiştirmiş, halk deyimi ile 'alaylı' farklı disiplerin insanları. bu kişiler genellikle ufak programlar yazmışlar, hatta bir denetim mekanizması da olmadığından bunları satabilmişlerdir de. bununla edindikleri öz güven kendilerine 'kendinden menkul' programcı sıfatı yakıştırmalarına neden olmuştur. bu kategorideki kişiler evvelki bölümde anlatılan 'tasarım dökümanlarını' çözümlemek konusunda eğitim almamışlardır. ayrıca, yılların deneyimi ile elde edilmiş, yazılım 'kodlama' nın kurallarından da pek haberli değildirler. her boyutta 'alaylı' iş görürler.
diğer grup, ne yazık ki yazılım mühendislerinin kendileridir. (1) gruptan kişilerle acı deneyimler yaşamış ihtiyaç sahiplerinden imkanı olanları (büyük yazılım şirketleri, parasal kısıtı az olan bankalar, holdingler,…) yazılım mühendislerine dönüp, 'kodlama' evresinin de onların tarafından gerçekleştirilmesini istemektedirler. bu durum belki yazılım mühendisinin piyasa ederini ülkemizde artırmakta ancak öte yandan onların (yüksek ücretler karşılığında) yeteneklerine göre düşük kalitede bir iş yapmalarına ve sıkıntı duymalarına neden olmaktadır. bu, ülkemiz yazılım mühendisleri arasında yaygın bir yakınma konusudur. patlayan bilgisayarlaşma talebinin bir sonucu olarak önümüzdeki on yıl içerisinde ülkemizde bu sorunun çözülmesi ve dengelerin daha sağlıklı olarak oluşması beklenmektedir.
yazılım ürününün test ve bakım:
bir yazılım üretim süreci çeşitli aşamalarda test evreleri içerir. bu gerek 'kodlanan' modüllerin işlevlerini yerine getirip getirmedikleri, gerekse de tasarım parametrelerinin uç değerlerindeki tavırları ve dayanıklılıklarına ilişkindir. ayrıca birleşince tüm yazılım sistemini oluşturacak olan bu modüllerin birleştirilme işlemi de hatalar içerebilmektedir. dolayısıyle tüm sistem bütensellik bakımından da testlere tabi tutulur. bütün bu test işlemleri deneyim,ciddiyet ve tititzlik gerektirir. bu evrede yazılım mühendisleri ve deneyimli 'programcılardan' oluşmuş olan bir ekip yer alır. bu ekibin 'yazılımı kodlayan' ekipten tümüyle farklı olması ve yalnızca 'ihtiyacın tarif edildiği' dökümanı ve 'tasarım dökümanını' kriter olarak alması esastır. bu aşama üretilen yazılımın test edilmesi amacı ile bilgisayar başında geçen bir evredir.
bakım, ürünün tesliminden ve kabulünün yapılmasında sonraki zaman dilimlerinde keşfedilecek yazılım bozukluklarının (hep hiç olmaması dilenir, ancak hiç bir zaman hata sıfır olmaz) onarılması ve/veya gereksinimlerdeki değişim veya ek gereksinimlerin doğması dolayısıyle yazılımda yapılacak değişiklikleri içerir. bu aşama da yazılım mühendisinin denetimindedir.
ek: anlaşılmamış olabilir, açıklayayım. bu ders programı, itü'de bilgisayar mühendisliği lisans öğrenimi süresince alınacak olan dersleri gösteriyor. içeriklerine tek tek bakarsanız geniş bir yelpazede yoğun bir program görürsünüz.
bilgisayar mühendisliği word excel kullanmak değildir, eclipse ile java programları yapmak, visual studio ile dot net tabanlı, cici arayüzlü yazılımlar üretmek veya zend ile php kodlamak da değildir. programcı değildir, bilgisayar mühendisi.
ilk olarak, mühendisliktir. zerre kullanmayacak olduğunu düşündüğünüz kimya (termo, malzeme), fizik, matematik (boy boy mat dersleri) alırsınız (aka. fkm). hepsi ileride "aa bu şurda vardı" diye hatrınıza birer ikişer gelir. bölüm derslerinde ise -programda görüldüğü gibi- teorik seviyeden, pratiğe doğru bir ilerleme var. matematik modellerden, çok boyutlu düşünmeye, mantıksal önermelerden, fiziksel uygulamalarına bir alt yapı hazırlanıyor. sonrasında elektronikle, düşük akımlarla çalışan devrelerde nasıl bu uygulamaların gerçekleneceği görülüyor. fizik, bilgisayar içerisindeki parçalara kadar gider aslında; direnç kullanmadığınız, kondansatörle dengelemesini yapmadığınız bir transistör, kartı yakabilir kim bilir. yazılım boyutunda ise derleyici tasarlamaktan, en düşük seviyesindeki kodlamaya (asm) kadar temele inersiniz. çeşitli soyutlama(hariçleme) aşamalarını kavrayıp, işletim sistemlerine, hatta en yüksekte dot net, java gibi modern üst seviye dillerin kullanımına kadar geniş bir yelpazede bilgisayar ve kodlama bilgilerine hakim olduklarını görürüz. ha bunu layıkıyla yapan olur olmaz, o ayrı mesele. ama ders çalışıp, "üniversite mezunu" olan bir bilgisayar mühendisliği öğrencisi ile "bilgisayar mühendisi" sıfatını layıkıyle taşıyan bireyi aynı kefeye koymak ve bölümü "gereksizlik" olarak görmek sanırım yapılacak en büyük ahmaklıktır.
yazılım mühendisliği ile bilgisayar mühendisliği ayrı ayrı 2 bölüm olursa, sanırım herkes rahatlayacak ve bu tartışmalar "yazılım mühendisine ne gerek var?" şekline girecek, kim bilir. software developing olayını makine başına oturup kod yazmak zanneden zihniyetin bir adım ötesine geçmeyi sağlayacak anahtar bilim, yazılım mühendisliğidir (bilgisayar mühendisliği değil aslında). o ayrı bir konu.
ayrıca bir rivayete göre, itü'de; elektrik elektronik fakültesinden ayrı; bilgisayar fakültesi kurulacak(mış). kontrol, bilişim, bilgisayar, yazılım mühendisliği gibi lisans ve yüksek lisans bölümlerinin faaliyet göstereceği bir yer olarak ayrı bir fakülteyi görmek sanırım türkiye'de ilk itü'ye nasip olacak. kısfmet diyoruz.