Yazılımcılığın Ne Olduğunu Anlamamış Bilgisayar Mühendisi

Bu yazıyı okuduğumda, “yazılım kimlere kalmış” dedim ve bu yazıyı kaleme almaya karar verdim.

Şimdi bu yazıyı alıntılar vererek, analiz etmek istiyorum. Kendimi bunu yapmak zorunda hissediyorum, çünkü yazı tam bir kargaşa ve tutarsızlıklar abidesi.

Amacım kimseyi rencide etmek değil. Bu arkadaşımızın yazmış olduğu tezlerin mevcut ve müstakbel yazılımcılara ve yazılım sektörüne zarar verdiğini ya da verecegini düşünüyorum. Bu işi severek yapan birisi olarak, buna izin vermem düşünülemez. Bunun yanı sıra yazıyı okuyan birisi olarak, cevap verme ve yanlışlıkları düzeltme hakkımı kullanıyorum.

Yazının ana konusu mühendlislik okumadan, yazılımcı olunup, olunamayacağı şeklinde. Yazı sahibinin görüşü bu işi sadece bilgisayar ya da yazılım mühendisi olanların yapabileceği yönünde ve şöyle bir çelişki ihtiva ediyor:

Yazılım üretmek bir sanattır, aksi iddia edilemez. Sizin bu sanata 
yatkın olup olmadığınızı ortaya çıkartacak çok kolay bir testi 
aşağıda açıkladım.

Yazar ne yazık ki burada sanatı kastetmekle birlikte sanat ile zanaati karıştırmış durumda. Kurmuş olduğu cümle çelişkili, çünkü savunduğu mühendislik olgusu ile sanatın yakından ve uzaktan hiçbir ilgisi olamaz. Yazılım mühendislik işidir kanısını savunurken, yazılım sanattır diyor. Programcılık sanat mı, zanaat mı? başlıklı yazımda bu konuya değindim. Programcılık sanat değildir. Programcılığın bir kısmı mühendislik bir kısmı da zanaattir. Uygulamalar bir mühendis kafasıyla tasarlanır, bir zanaat ustası gibi koda dökülür.

Yazar bir yazılımcı olup, olamayacağımızı anlayabilmemiz için bir test hazırlamış. Testi inceleyelim:

Tek yapmanız gereken başlamak istediğiniz programlama veya uygulama 
dilinin kitabını alıp okumaya ve uygulamaya başlamak. Şayet okuduğunuzu 
anlayabiliyor ve uygulayabiliyorsanız, gayet güzel! Şayet okuduğunuzu 
anlayamıyor, küçük uygulamalar geliştirirken dahi kitabı açıp bakma 
ihtiyacı hissediyorsanız, bu durumda sizden yazılımcı olmaz.

Programcı olmaya hevesli ama bu konuda hiçbir bilgisi olmayan bir şahsın bu testi geçmesi imkansız, çünkü test çok absürd. Yeni bir alana ayak bastığınızda, o alana has dili bilmediğiniz için başlangıçta bocalamanız çok doğal. Her çalışma sahasının kendine has zorlukları olur ve bu zorluklar çalışma sahasına aşina olundukça aşılır. Eğer herkes yeni bir sahaya adım atarken böyle bir test yapmak zorunda kalsaydı, o zaman bu dünyada kalifiye bir eleman bulmak mümkün olmazdı.

İşte çok cesur ortaya atılmış bir tez daha…

Mühendis ile yazılımcı arasındaki fark, maaş konusunda keskinleşir. 

Yazar burada ne yazık ki genel değil, yerel bir bakış sergilemektedir. Türkiye çok genç bir nüfusa sahip olan bir ülke. Bunun yanı sıra yazılım sektörü Türkiyemizde çocuk ayakkabılarıyla geziniyor. Yazılımın gerçek anlamda nasıl yapılması gerektiği konusunda bilgili insan sayısı parmakla sayılacak kadar az. Çoğu bilgisayar mühendisi de bu işi bilmiyor, sonradan bu işi öğrenmiş şahıslar da.

Bilgisayar ya da yazılım mühendisi ile alaylı yazılımcı arasındaki fark kesinlikle maaş olamaz. Türkiye küçük bir piyasa olduğundan ve çok sayıda yazılımcı bu piyasada iş bulmaya çalıştığı için firmalar seçici olma ayrıcalığına sahipler. Doğal olarak arz edilen iş gücünün talep edilenden fazla olması, firmaların mühendis sıfatını taşıyan yazılımcıları tercih etmesini kolaylaştırıyor. Almanya gibi bir piyasada Türkiye’ye nazaran arz talep dengesi tam tersine olduğundan, mühendis ile alaylı yazılımcı arasında hiçbir fark yok. Fark olsa bile bu farklılık tecrübe bazındadır. Kim daha tecrübeli ise, daha çok maaş alır. Hesap bu kadar kolay. Mühendis, mühendis olduğu için daha çok para kazanır ya da kazanmalıdır demek, abesle iştigalden başka bir şey olamaz. Ayrıca bu bazı kafaların nasıl çalıştığının da çok iyi bir ispatıdır. Bir iş gücünü kıymetli kılan, iş konusunda ne kadar kalifiye olduğudur. Üniversite bitirerek hiçbir kimse kalifiye elemanım diye ortalıkta gezinemez. İnsan iş başında, öğrendiklerini uygulayarak pekişir ve kalifiye bir eleman haline gelir. Bu açıdan bakıldığında bir bilgisayar mühendisi ile kendini çok iyi yetiştirmiş bir alaylı yazılımcı arasında hiçbir fark yoktur. Nice fizik ve kimya mühendisleri tanıyorum. Yıllarca programcı olarak çalışmışlar ve benim diyen birçok bilgisayar ya da yazılım mühendisini ceplerinden çıkartırlar.

Yazarın bir sonraki tezine bir göz atalım:

Mühendisler, kurumsal yapılı şirketlerde daima yazılımcıların 
patronu olarak çalışır (başlangıçta böyle olmayabilir, 
ama yazılımcının 5 yıldır beklediği terfiyi mühendis en çok 
2 yılda alır.

Ben yazılımcı olsam ve bu şekilde hakkım yense, böyle bir firmada beş dakika bile durmazdım. Çalışanlarına sarf ettikleri emeğe göre değil de, sahip oldukları bir takim mühendislik sıfatlarına göre öncelik tanıyan firmalar, bu hallerini piyasada eleman bulamayacak hale geldiklerinde çok çabuk değiştirirler. Yazarın tezinden de anlaşıldığı gibi Türkiye’de yazılım sektörü yok kadar küçüktür ve bu durumu kendi avantajları yönünde kullanan kurumsal firmalar, şimdilik alaylı programcıların haklarını yemektedirler. Yarın, bir gün piyasa büyüdüğünde ve programcılara olan talep arttığında, kim daha çabuk terfi alıyormuş, göreceğiz. Kim daha çok çalışıyor ve tecrübe sahibi ise, terfiyi o almalı. Mühendisi alaylının önünde gören zihniyet, iş gücüne ihtiyaç duyduğunda, o alaylının önünde eğilir. Bu kaypaklık zaten mühendisler önceliklidir zihniyetinin ne kadar kokuşmuş olduğunun ve dikkate ve ciddiye alınmaması gerektiğinin ibaresidir.

Devam edelim:

Bazen kurumsal şirketler de "uzman" alabilir, ama bu durumda 
"mühendisin" yanında takılan bir eleman gibi olursunuz, tavsiye etmem.

Yazar ne yazık ki mühendis dediği şahısları cebinden çıkaran alaylılarla çalışma fırsatı bulamamış. Alaylı konumu itibari ile zaten mühendisin bildiğinin iki katını, çalıştığının iki katını, öğrendiğinin iki katını öğrenme eğilimi gösterir, çünkü kendisini mühendis ünvanı olmadan ispatlamak zorundadır. Bu şartlar altında boynuz kulağı çok çabuk geçer.

İngilizce olmadan sıradan “programcı” olmanın ötesine geçemezsiniz.

Yazara bu konuda haklıdır. Türkçe kaynakların artması ile ingilizce bilmenin de önemini yitireceğini düşünmekle birlikte, ingilizce bilmenin yazılımda şimdilik bir gereklilik olduğunu düşünüyorum.

Üniversite okumadan, "yazılım uzmanı" olmaktan öteye geçemezsiniz...
Bu işin en doğru yolu mühendis olmaktır.

Eğer kendim de bir bilgisayar mühendisliği okumuş bir yazılımcı olmasaydım, bu üniversitede ne öğretildiğini gerçekten çok merak ederdim. Ben size üniversitede ne öğretildiğini kısaca özetleyeyim: biraz matematik, biraz algoritma, biraz ondan, biraz bundan ve dört sene sonra diplomasını alıp, mühendis oldum diye böbürlenen, ama gerçek yazılımın nasıl yapıldığından ışık yılları uzaklıkta şahıslar. Bu mühendislik olayını büyütmenin gerçekten bir anlamı yok. Makine ve elektronik mühendisleri bile biz bilgisayar mühendislerinden mezun olduklarında çok daha donanımlı mühendisler. Bunun yanı sıra en doğru yolu kavramı göreceli bir kavramdır. Yolların hepsi Roma’ya çıkar diye bir söz vardır. İyi bir yazılımcı olmak için bilgisayar ya da yazılım mühendisi olma zorunluluğu var diye bir şey olamaz.

Şu anda bir işveren olarak da "yazılım uzmanı" hiçbir arkadaşımızı 
işe almadım, hep "yazılım veya bilgisayar mühendisi" işe aldım. 
Çünkü bizim ürettiğimiz yazılımlarda, analiz ve matematiksel 
yetenekler gerekiyor.

Eğer uzay mekiği ya da bilgisayar oyunları için program yazmıyorsanız, yazdığınız kodun %99’unda toplama, çıkarma gibi basit matematiksel işlemler yaparsınız. En son yaptığım matematiksek işlem x++ idi.

Programcılığın matematikle çok ilgisi yok. Soyutlayabilme yeteneğiniz varsa, programcı olmak için en önemli yeteneğe sahipsiniz demektir. Geriye kalan her şeyi kitaplardan ve bu işin ustalarına bakarak, öğrenebilirsiniz.

Bu işi kendi kendine veya kursta öğrenen hiç kimse de kalkıp, 
"Yahu ben cebir, analiz, algoritma vb. de öğreneyim" demiyor.

Mühendislerin çoğu ilerde mühendis ünvanım ile daha iyi bir yere gelir, daha fazla para kazanırım diye mühendis olurlar. Alaylı programcıların çoğu bu işe gerçekten gönül verdikleri için programcı olurlar. Bu işe gönül veren bir insan Java gibi mainstream olan diller haricindeki dilleri de öğrenir, çünkü kendini geliştirme yolunda her türlü bilgiyi sünger gibi emer. Kim Daha İyi Programcı? başlıklı yazımda bu konuya değindim. Verdiğim eğitimlerde bazı alaylı olan katılımcıların mühendislere nazaran daha geniş bir teknik altyapıya sahip olduklarına, kendi uzmanlık alanları haricindeki alanlarla da ilgilendiklerine ve yenilikleri yakından takip ettiklerine şahit oldum. Bunun sebebi bu işe gerçekten gönül vermiş olmaları ve severek yapıyor olmalarıdır. Ben bu tür adamları işe alırdım, çünkü projeyi uçuracak olanlar bu tür yazılımcılardır. Eğer bir yazılım mühendisi de bu tür özelliklere sahip ise, o zaman onun da başımızın üzerinde yeri var.

Hindistan’da insanları sınıflandırmak ve toplumu ayrıştırmak için kutu sistemi oluşturulmuş. Bir kutuya ait insanların başka bir kutuya geçmeleri mümkün değil. Yazar da yazılımcılar için böyle bir kutu sistemi oluşturmaya çalışmaktadır. Bunun kimseye bir faydası olmadığı ortadadır, çünkü oluşturulan bu kutu sistemi maddi olarak daha fazlasını hak eden alaylıların kötü şartlarda sömürülmelerine sebep vermektedir.

Bir işin üniversite eğitimini almış olmak şüphesiz iyi bir teknik altyapının oluşturulmasında faydalıdır. Lakin üniversitelerin ne kadar kolay ve uyduruk bir şekilde bitirilebileceğini hepimiz biliyoruz. Hele hele Türkiye gibi ezberciliğe dayanan bir eğitim sisteminin olduğu bir ülkede alınan üniversite eğitimini bir ayrıcalık olarak satmaya kalkmak, bu işin hakkını vererek çalışmaya çalışanlara yapılmış büyük haksızlıktır. Gerçek öğrenim süreci üniversite bittikten sonra başlar. Alaylı olsun, mühendis olsun, iyi bir programcı ile vasat bir programcının arasındaki farklılık da burada belirir. Kim her daim yeni bir şeyler öğrenme eğilimi gösterirse, öne geçer. Yazılım tutku işidir. O tutkuya sahip olmayanı mühendis ünvanı bile kurtaramaz. Benlik gütmeyelim.


EOF (End Of Fun)
Özcan Acar

Share Button
0.00 avg. rating (0% score) - 0 votes

51 Comments

  • ugur

    22 Ekim 2017

    @Can Sinan Artuç
    Mühendislik egosuyla gelmişsin buraya, bir java şampiyonuna iş öğretmeye kalkıyorsun adam sorarlar sen kimsin diye? (anlayacağı dilden konuşmak lazım!)

Bir Cevap Yazın