Kodlayıcı, Programcı ve Mühendis

En çok tartışılan konulardan biri Kodlayıcı (Coder) veya Programcı olmaktır. Kodlayıcılar kodlama konusunda çok başarılı olduklarını söylerler (gerçekten de öyle olabilirler), programcıları küçümseyenleri bile vardır. Ben ise işin daha farklı bir boyutunu ele alacağım.

Çoğu kodlayıcı mühendisleri, mühendisliği de küçümsemektedir. Bu küçümseme mühendislerin iyi kod yazamadığı iddiasına dayanmaktadır.

Bu konuda ilginç yazılar ararken karşıma çıkan bir yazıda önemli tespitlerle karşılaştım. Yazar bir "aptalın" bile kod yazabileceğini söylüyor. Ve bu söyleminde haklıdır. Bahsettiği gibi UML sayesinde bilgisayarlar bile kodu üretmektedir. Mühendisin en önemli farkı burada ortaya çıkmaktadır.

Mühendis kodlama işini yapmak zorunda değildir. Ama bu işten hoşlanıp yapanlar vardır. Mühendisin temel işi problem çözmektir. Teorik bilgileri pratiğe dökmektir. Tasarım yapmak, modellemek mühendisin işidir. Kodlamayı mühendis yapmayabilir. Modelleri hazırlar (UML mesela) daha sonra bir bilgisayarın bile bu modellerden kodu üretmesini sağlayabilir (Model Driven Architecture). Bu noktada kodlayıcı ile mühendisi karşılaştırmak, hatta mühendisi iyi kod yazamıyor diye küçümsemek bilgi eksikliğinden kaynaklanmaktadır. Türkiye'deki mühendislere bakış açısından kaynaklanmaktadır (Bilgisayar mühendisleri programcıların işlerinde çalıştırılmaktadır).

Özetle kodlayıcıları takdir ederim, gerçekten iyi algoritmalar yazan kişileri de takdir ederim. Ama bir mühendis olarak yapmam gereken problem çözmektir, tasarım yapmaktır. Benden çok süper kod yazmam beklenmemelidir. Yazacağım kod yazılım mühendisliği pratiklerine uygun olacaktır. Aldığım eğitim bunu gerektirir.

Değinmek istediğim bir başka konuda bir forumda şans eseri karşılaştığım bilişimci olmak isteyenler tavsiyelerini içeren yazılar. Bu yazılarda yeterli bilgi olmadan sadece ekonomi dergilerinde yazan cümlelerle nasıl fazla para kazanırım düşüncesiyle sertifika programlarıyla "mühendis" olmaya çalışanlardan resmen para emmeye çalışan kişilerin düşüncesidir. Türkiye'de mühendislik ünvanını dört yıllık üniversiteler dışında kimse veremez. Microsoft'un veya diğer kısa süreli kurslarda alınan sertifikalar sizi mühendis yapmaz.
Bu forumu okuyunca "Bilgisayarcı" olmak teriminden ne kadar nefret ettiğimin farkına vardım.

Mesela aşağıdaki cümlelere bakalım:
" Şimdi öss ye girseniz kazansanız sistem müh. = 4 yıl demek hazırlık fln 5 yıl.. aynı şekilde yazılım okumak isterseniz yine 5 sene demek aşağı yukarı bunları aynı anda okumak imkansız gibi bişi oldugundan çift üni yani = 10 sene demek 19 da okul bitir 29 da üni ee askerlik fln noldu öldünüz gittiniz yane tecrübe yok bişi yok bide kafayı çalıştıran bir genci düşünelim..

Lise biter kafası rahat olur gider bir kursa yazılır sistem mühendisliğine 9 ay diyelim.. 9 ay bitince yazılır yazılım mühendisliği / uzmanlıgına 6 ayda bu = 15 ay = 1 yıl 3 ay demek ortalama 1,5 sene diyelim elinizde ne var ?
mirosoft sistem mühendisliği sertifikası + microsoft yazılım uzmanlıgı/mühendisliği sertifikası+ kursun ize sağladıgı iş olanakları+edindiğiniz harika çevre ve yıllık düzenlenen mezunlar buluşması vs.."

Ben Lisans+Yüksek Lisans toplam 7 senemi "Mühendis" olmak için "harcamış" biriyim. Yukarıdakileri yazan arkadaş işi ne güzel özetlemiş. Ne gerek var bu kadar okumaya, gidin bir kursa, 9 ayda mühendis olun, kartvizitinizde mühendis yazsın, ama nedense hiç bir problemi çöz(e)meyin.

Mühendisliğin bu kadar ucuz bir meslek olmaması gerekiyor.

Cümleler biraz karışık oldu, kusura bakmayın. Bazen insanın tepesi atabiliyor :D

2 yorum:

Adsız dedi ki...

%99 katılıyorum, sadece sanırım "algoritma yazmak" ile anlatmak istediğiniz şey benim anladığımdan biraz farklı. Algoritma yazmak ile var olan bir algoritmayı koda dökmek farklı şeyler olmalı.

Var olmayan bir algoritmayı yazmak (ya da daha doğru bir deyişle oluşturmak) ise esasen zaten yazınızda "problem çözmek" deyişiyle ifade etmek istediğiniz çözüm üretmek eylemi kapsamına girmelidir bence.

Bu görüşümü bir adım daha ilerleteyim. Benim gördüğüm duyduğum ve bildiğim, mühendisler hazır algoritmaları (veya şimdiye kadar yapılmış edilmiş bulunmuş çözümleri ve yöntemleri) kullanarak ve uygun şekilde bir araya getirerek ya da uyarlayarak gerçek dünya problemlerine çözümler üreten kişiler. Yüksek mühendisler ise bunu bir adım ötesine geçerek hali hazırda var olmayan çözümleri de üretebilen, veya daha önce hiç kimsenin o şekilde kullanmadığı bir aracı farklı bir şekilde kullanmaya cesaret edebilen kişiler olarak tanımlanabilir. Dolayısıyla yüksek mühendisin yeni bir algoritma üretmesi de beklenebilir.

Tabii ben bunları yazdım diye sadece mühendis olan veya liseden mezun olmuş bir arkadaşın (MCSE sertifikası olmasa bile) bir algoritma üretmesi mümkündür. Hatta çok da güzel söz konusudbir algoritma üretebilir ve algoritmasının güzelliğini yaptığı testlerle ve dünya üzerindeki eşdeğerleri ile kıyaslayarak gösterebilir. İşte bu durumda o arkadaşa saygı duyulur. Peki bunu bu şekilde yapmak kolay mıdır hayır tabii ki değildir. İşte siz ve biz bu yüzden 7 sene veya 10 sene lisans,yüksek lisans, doktora diye uğraşıyoruz.

MCSE'deki E harfinin fazla olduğuna da aynen katılıyorum, fakat birşeyler üretmenin tek yolunun da akademik kariyer olmadığını unutmamalıyız...

Aslında sizin eleştirdiğiniz bakış açısı, bir avamca ifade edilmiş olsa da Türkiye'nin gerçekleri ile (ne yazıkki) örtüşen bir bakış açısıdır...

T. E. Kalaycı dedi ki...

Evet haklısınız, "algoritma yazmak" ifadesindeki yazmak kelimesini yazarken gerçek anlamını kastetmiştim. "Algoritma üretmek" ise bambaşka bir şey.

Problem çözmek ise algoritma üretmeyi de içermektedir. Ancak çok daha geniş bir kavramdır.

Daha somut örneklerinde olduğu gibi bilgisayar (ve ilgili) mühendisliği de teorik bilgileri kullanarak problemlere pratik çözümler üretmek için vardır. Bu durumda "gerçek anlamda" mühendislik için bilimsel (gerçek anlamda araştırma-geliştirme) teorik üretimlerin olması gerekmektedir.

Bu yazıdaki eleştiriler aslında tamamen hatalı sertifika ve onlara yönlendirme çalışmalarınadır. Yoksa ben de bir serbest yazılım savunucusu olarak bilgisayar mühendisi (veya ilgili bir mühendislik) olunmadan başarılı üretimler yapılabileceğine inanıyorum.