Nasıl Yazılımcı Olunur? Programcılık Eğitimi Üzerine…

Herkese merhaba,

Uzun süredir yazılım sektöründe çalışan, bu sektörün problemlerini içinden bilen, çevresindeki problemleri gözlemleyen biri olarak bu yazıyı öyle çok standart cümleler kurmadan farklı bir bakış açısıyla bir yere karalama ihtiyacı hissettim. Aslında bu yazıyı bir kitap yazacak olsam önsözü olarak kullanmak isteyebilirim.

Türkiye’de mevcut eğitim altyapısının çok kötü olması, eğitim veren özel kurumların verdiği boş hayallerle piyasaya çıkan, kandırılan zavallı gençliğin durumu beni bu yazıyı çok ağır bir dille yazmaya itiyor fakat konu bu olmadığı için kendimi tutacağım. İş görüşmelerimde yaşadığım hüsran, artık bu firmaların sokağından geçmiş adamları görüşmelere çağırmamaya başlamama sebep olmuş durumda. Kendimize, memleketimize, etrafımıza nasıl oluyor da bu kadar zarar veriyoruz, herkesin düşünmesi gerekiyor.

Benim hikayem ’95 yılında başladı. Öncesinde bilgisayarda çok oyun oynuyor, gerek amigados, gerek msdos ile kimsenin yapamadığı kurnazlıkları yapabiliyor ufak tefek batch, script’ler yazıyordum. Bilgisayarla aram çok iyi olduğu için bu tip bir iş aradım ve html/photoshop kullanacağım bir işe girdim. O vakitler, İnternet hizmeti, Türkiye’de pek yaygın değil, okuyabilecek online kaynak bulmak, şimdiki gibi pek kolay değil. Çok iyi hatırlıyorum Wrox’un ASP kitabını Amazon’dan sipariş edişimizi, 1-1.5 ay bekleyip kavuşmamı ve kitaba resmen yumulup içini dışını okumamı. 15 yıl olmuş diye düşünürken bu yazının gidişatını da; öğrenmek, bilgiye açlık şeklinde yönlendirmek istediğimi farkediyorum.

Öncelikle etrafıma göre farkettiğim, bilgiye olan açlığım. Bana hep önce bilgi geldi daha sonra bundan para kazandım. Şuna özellikle inanıyorum, insan olarak diğer hayvanlardan farkımız, bu kadar sürede zor doğa şartlarına karşı hayatta kalabilmemiz, öğrenebilme ve adaptasyon yeteneğimize bağlı. Bence insanın öğrenme süreci ömür boyu bitmemeli. Bu yüzden bir ofiste oturup sürekli onu sat, bunu al şeklinde ticaret yapan insan ile yazılımcı farkı çok büyük. O zevki aldıktan sonra daha çok istiyor insan, onu da yapayım bunu da bileyim…

Bir işle sadece uğraşmak için uğraşmamak gerekiyor. Eğer uğraştığın, uğraşmaktan zevk aldığın için uğraştığın şey işinse, o zaman bu süreçte yaptığın deneme yanılmalar, fanteziler, o oyuncaklarla oynamalar, ayar çekmeler, kurcalamalar sana bilgi, tecrübe olarak geri dönüyor. Bu dönüş, eğer alabiliyorsan, sürekli surette bakış açını değiştiryor. Bir süre sonra başka bir “oyuncakla” oynamaya başladığında beklentilerin, o oyuncağın sana verebildikleri, karşılaştırmaların, ulaştığın sonuçların detaylarındaki farkındalığın sana tecrübeni katlayarak katkı sağlıyor. Bu süreçteki bakış açısı değişiklikleri ise daha sonraki süreçlerde teknoloji seçimi, proje seçimi, pattern seçimi, dil seçimi gibi konularda yolunu aydınlatıyor. Örneğin ASP yazıyorken eğer boş durmayıp, Eifell, ADA, Fortran, Pascal, Delphi, C++, Java okuduysan, kısıtlı imkanlarınla bunları bilgisayarına kurup evde sağını solunu kurcaladıysan, ufak tefek programcıklar yazıp problemleriyle uğraştıysan veya ASP yazıyorken bu sana yetmeyip VB ile DLL derleyip onları kullanmaya başladıysan, daha sonra bunu Delphi’de nasıl yaparım da daha performanslı OOP ile daha komplex işleri ASP ile birleştiririm diye düşünüp, işinin gereği bu olmasa da, senden beklenen bu olmasa da zevk için uğraştıysan o zaman bir sonraki süreçte Microsoft, C# diye birşey çıkarttığı zaman şaşırmıyor, “Bu gavur icadı da nerden geldi şimdi, ne güzel yazıyorduk ASP ile” demiyor, onu o kadar hızlı benimsiyorsun ki gelir gelmez Beta’sı ile çalışmaya başlıyor hatta hatalarına sinirlenip “Artık 2001 yılındayız, bunu da düşünmeleri lazımdı” diye Microsoft’a saydırabiliyorsun.

Kısaca merak etmek; araştırmayı, araştırmak; tecrübeyi, tecrübe; bakış açısını, bakış açısı; seçimleri getiriyor. Seçimlerin sonucunda güzel işler çıkartabilince veya iyi tecrübeye sahip olunca bu da para getiriyor. Bu başta yanlış yöne de sapsan sonunda doğru yönü bulabilmeni sağlıyor. Baştan çok yanlış girersen sadece yol uzuyor ama sonuç aynı.

Gelelim seçimlere giden yolda kısa yolları, ara sokakları nasıl seçeceğimize. Eh bu kadar paragrafı boşuna neden yazalım? Kelime oyunu yapmak, zaten bariz olan şeyleri çevirip çevirip satmak pek keyifli değil. Yazılımcının birkaç özelliği olmazsa olmaz. Yıllardır yaptığım iş görüşmelerinde, incelediğim özgeçmişlerde karşılaştığım eksiklerle ilgili ayrı bir yazı daha yazacağım.

Bunlardan ilki İngilizce bilgisi;
Teknolojiyi hep yabancıların ürettiğini öncelikle kabul ediyoruz. Bunu kabul etmek zor gelse de kendi zekamızı herkesin üzerinde tutsak da bu sefer rakibini takip etmiyorsan nelerle karşılaşacağını bilemeyeceğin için mutlaka yine teknolojinin ortak dili İngilizce’yi bilmemiz gerekiyor (sadece SAP üzerine çalışacaksak Almanca da olabilir). İngilizce’yi özellikle çok iyi bilmek gerekiyor. Sadece “I Go, You Go, We Go” şeklinde kursun 3. kurundan terk İngilizce yeterli olmuyor. Özellikle sürekli yabancı dizileri, filmleri altyazıları kapatıp izlemek, yabancı şarkı sözü çıkartıp sözlükten anlamlarına bakmak bunu da hobi haline getirmek süreci hızlandırıyor. Sandwich yöntemi ile dil öğreten kurumlar var İstanbul’da. Bunları da etrafımda eğitim alanlar arkadaşlar başarılı buluyor, fakat çok çalıştırıyorlar baştan söyleyeyim. Eğer benim gibi, ilkokul, ortaokulda sağlam bir İngilizce eğitimi ile başlayıp yabancı dilde okuduysanız çok avantajlısınız.

Web üzerinde birçok kaynak var, kurnazsan Türkçe’ye çevirip çevirip yazıp, o nedir bu nedir gibi sitelerde piyasada yer edinmeye çalışıyorsun. Yayıncılar satmayacak korkusuyla hazırladığın her kitaba “Buna bir de genel Ofis bilgisi eklesek o zaman satar” şeklinde yaklaşıyor. Siz hiç gördünüz mü “C# ile Web Kontrolü Yazmak” başlıklı orijinal Türk malı kitap? Neden bütün gördüğünüz Türkçe kitaplar “Herşeyiyle C#”, “Herkes için Java”? Sizce yabancı dili yetersiz programcı ne kadar ilerleyebilir? Teknolojiyi ne kadar yakından takip edebilir?

İkincisi Mühendislik Eğitimi;
Üniversite; benim bakış açımla, Türkiye’deki duruşu ile çok sabit, çok yavaş, çok durağan. Aynı devlet daireleri gibi dinamizmden uzak. Hele iş hayatına daha okurken girince, Üniversite’ye devam hevesini kaybediyor insan. Sanki orası duruyor, hayat dışarda 10x hızla devam ediyormuş, kapıdan içeri girince sen hızlı-bulanık hareketler yapıyorsun da insanlar ağır hareket ediyormuş gibi geliyor. Fakat hiçbir zaman çalışma hayatına erken başlamanın avantajını anlatacak tam cümleleri bulamam. Arkadaşlarım üniversiteyi 4 yılda bitirip sağa sola çaresizce bakındıklarında benim oturmuş düzenim, hayatla ilgili çoktan kurulmuş bir planım, 3 yıllık iş tecrübem vardı. Mühendislik eğitimi ise “kurnaz” ile “sistematik” yazılımcı arasındaki farkı belirliyor. Birçok yazılımcı ile çalıştım. Yönetici olunca iki adama da ihtiyacınız var ama bakış açısı şu şekilde; birinciye günlük işleri çabuk şekilde yaptırmak istiyorsunuz, ikinciye altyapı işlerini, daha büyük, daha geniş vizyon gerektiren, keyifli projeleri yaptırıp, beraber çalışmak istiyorsunuz. Siz hangi yazılımcının yerinde olmak istersiniz? Herhangi bir mühendislik eğitimini sindirerek almak bu sektörde yolunuzu açacaktır. Herşeyden önce iyi bir mühendis olmak hayatınızı kolaylaştıracaktır, size vizyon katacaktır.

Sakın bir kısım eğitim kurumlarının size faydalı olacağını düşünüp, başka bir kariyeri bırakıp yazılımcılık işine bu şekilde girmeye çalışmayın. Özellikle İstanbul’da sadece C ve Sistemciler Derneği benim bildiğim kadarıyla iyi eğitim veriyor. Burası bildiğim kadarıyla bir dernek. Yani kar amacı gütmüyor. Diğer firmalara gittiğinizde verdiğiniz para, harcadığınız vakit, onların size verdikleri umutlar, hepsi boş. Özellikle bu konuda isim yapmış büyük eğitim firmalarından bahsediyorum. Sürükle bırak yapmayı öğrenerek yazılımcı olunsaydı herkes olurdu. Bu kurumlar size sadece bunu öğretiyor. Biz gerçek hayatta bunları işimizde kullanmıyoruz malesef. Buraya kadar okuduysanız, üstteki özelliklere sahip değilseniz, ders/kurs almayı hiç düşünmeyin. Başaramazsınız demiyorum, riskiniz çok artıyor.

Okumak;
”Okumadan geçirdiğim, öğrenmeden geçirdiğim her gün hayatımdan kayıp. Bugün de araştırıp bunu öğrendim.” diyebiliyor ve bundan zevk alıyorsanız bu işler size göre. Doğru kaynağı okumak önemli. Genelde Türkçe kaynaklar eksik, ortalama 1 yıl geriden takip eder oluyor. Biz pek paylaşımcı bir millet değiliz, bunun yanısıra herkesin işi gücü var, çeviri yapanlar veya yazmak isteyenler önce kendileri tecrübe kazanıp arkasından yazıyorlar. Ayrıca okumaya da pek önem vermiyoruz o yüzden yazarın da değeri yok, okuyan da pek değer kazanmıyor. Yabancı kaynakları tavsiye ediyorum.

Usta – Çırak ilişkisi;
Hangi üniversiteden mezun olursa olsun kimse patron çıkmıyor. Özellikle Türkiye’de belli 2-3 üniversite bu gazı veriyor. Hatta bu gazı alıp senelerce bunun doğruluğuna inanmaya devam eden, hasbel kader bir yere gelip kendisinin o üniversite mezunu olduğu için o pozisyona geldiğini düşünen insanlar sektörde karşınıza çıkacak. Evet eğitim önemli. Evet o üniversitelere de girmek için çok çalışmak gerekiyor. Fakat iyi bir mühendis olduktan sonra ilk 2-3 sene junior developer olarak harçlığına bile çalışsanız, usta-çırak ilişkiniz, Master-Padawan ilişkiniz, size işinizle ilgili asıl ivmeyi verecektir. Bu noktada “Ben şuradan, buradan mezunum” diye hava atmamak ustanızın dediklerini iyi dinlemek gerekiyor. Ben ilk 5.5 sene yanlız çalıştım. O 5.5 yılda kendi araştırıp öğrendiklerimin üzerine neredeyse bir o kadar sadece 1 yılda iyi bir ekibin içinde eklendi. Tabi burada gavurun “snowball effect” dediği sürekli öğrenerek bir yere geldiğinizde o noktada öğrenmenin daha da hızlandığı gerçeğini gözardı etmemek gerekiyor. Ha sadece bir yerde işe girip, “Ustamdan öğrendiğim kadarı bana yeter” diyenler orada, o pozisyonda çakılı kalırlar.

Kendini bilmek, Kalite ve Sertifikasyon;
Kişi kendini bilmek gibi irfan olamaz. Kim denetliyor bu yazılımcıları? Kim söyleyebiliyor, sen iyisin, sen kötüsün, böyle iş olur veya böyle iş yapılmaz diye? Malesef söylüyorum hiç kimse. Microsoft sertifikasyon sınavı yapıyor, braindump indirip, ezberleyip girip sertifikaları alıyorsun. Kim önemsiyor? Kim bakmıyor bile? Birçok kitap yazarı, birçok blog yazarı olan, paylaşım yapan programcı, ne yazdığını bilmiyor, çeviri yapıyor yalan yanlış. İşin doğru altyapısını yeni başlayana kim verecek? Ben kendimi neye göre kime göre konumlandıracağım? Piyasada maaşlar neye göre belirleniyor? Benim bunların arasında yerim neresi?

Öncelikle sertifikasyon, sadece yurtdışında çalışacak arkadaşlara önerdiğim birşey. Yurtdışı firma sizi aradığında sertifika numaralarınızı soruyor (özgeçmişinizde yazmıyorsa). Neden? Çünkü zaten İngilizceniz havadan sudan konuşmaya, karşı firmanın sizin bilginizi veya kişiliğinizi yeterince ölçmeye yeterli olmuyor veya telefonda zor oluyor. Neden? Çünkü yabancılar bizim kadar sınavlarda hile yapmıyor, bir kısım insan gerçekten o sınavlarda kendini deniyor. Ben Türkiye’de iş görüşmelerinde bakmıyorum sertifiklara. Kendi aldığım sertifikalar da sadece Yurtdışı görüşmelerimde yaradı. Ha çalışıyorken şirketiniz destekliyorsa alın bir zararı yok.

Biraz tecrübeli arkadaşlar için yazıyorum, şöyle bir düşünün, ortadan girdiğiniz projelerde yazılan koda küfrettiğiniz çok oldu değil mi? Kim peki o kodu yazan? Yazdıran? Yazılım kalite standartları ile ilgili kalitesiz eğitim alan yazılımcıların eğitim almadığı ortada. Bir projeyi yetiştirmek adına yazılan “çakma” kodun bedelini ne daha sonradan projeye dahil olan yazılımcı, ne o işin öyle yapılacağını düşünerek o projede işi öğrenen junior, ne kodu yazan firma ne de projeyi satın alıp daha sonra kötü kod ve tasarımdan oluşan hata veya engelleri aşarak bakım yapmak için bir sürü para döken firma ödüyor. Asıl bedeli ödeyen Türkiye ekonomisi. Hepimiz bu bedeli ödüyoruz.

Neden hepimiz ödüyoruz anlatayım; Bir projedesiniz, başında usta olmadan junior programcılarla iş yapıyorsunuz ve projeyi düzensiz, altyapısı olabildiğince planlı, tecrübesizlikleri örtmek için mesailere kalarak yetiştiriyorsunuz. İşi zamanında teslim alan firma o an için memnun. Şirketiniz, projeyi yetiştirdiğiniz, ucuza çalıştırdığınız adamları, gece gündüz kırbaçlayıp suyunu çıkarttığınız için yönetim kabiliyetinizi sorgulamıyor. Gece gündüz çalışıp sonunda “Vay be ne kastık, artık kesin şirkette yerim sağlam, tecrübem de arttı” diyen yazılımcı da iş bitirmenin verdiği tatmine sahip. Peki kim bu durumdan muzdarip, kaybeden? Arka arkaya yamalar yaparak proje geliştirmeye alışan yazılımcıların, o projede tecrübe kazansalar da birçok hata ve problemle uğraşıp dile, platforma hakim olsalar da iş yapış şekilleri ve kalite anlayışları oturmuyor. Daha sonra bu insanlar yazılım yöneticisi oluyor ve şimdi bu yazıyı okuyan işe yeni başlayacak arkadaşları onlar yönlendirecek.

Devam ediyorum; Bu şekilde iş yapmaya yazılımcıları sömürmeye alışan firmanın piyasada iş bitirerek isim yaptığı için güvenilirliği sürekli artıyor. Piyasa algısı bu şekilde değiştiğinde diğer bir firma da yazılımı bu “çakma iş yapan” firmadan ısmarlıyor çünkü referanslar web sitesinde iyi gözüküyor. Aynı şekilde ucuza iş bitirilebildiğini gördükleri için tecrübeli programcılardan fiyat kırıyorlar sürekli. Bu da yazılımcı sirkülasyonunu getiriyor. Tecrübelenen yazılımcıları kaçıran firmanın kalite standartlarını ayakta tutması iyice zorlaşıyor. Bu şekilde yazılım projesi ısmarlayıp iş teslim almaya alışan firmalarda da bir Q.A. “Quality Assurance” yani kalite kontrol uzmanı, bir yazılım test uzmanı bulunmuyor, bulunma ihtiyacı hissedilmiyor. (Yazılım test uzmanlığı, Türkiye’de pek bilmediğimiz çok ciddi başka bir mühendislik işi. Gelen yazılımın orasını burasını kurcalayıp çalışıyor mu diye bakmaktan bahsetmiyorum) Neden bu tip insanlar iş bulamıyor? Çünkü projeyi teslim alan taraf bilgisiz. Bir proje şampiyonu (PMI terimi) bile tutmaya çalışmıyorlar o dönem için. Üniversitesinde bilim yapılmaya çalışılmayan bir ülkenin şirketlerinden ne bekliyoruz?

Aman ne ala memleket. Neden tecrübenin, sistematiğin, bilimin, mühendisliğin önemi bilinmiyor? Kimse yazılımcının, yazılım süreçleri yönetiminin nasıl olması gerektiğini bilmezken biz piyasada farkımızı nasıl anlatıp da hakettiğimiz işe sahip olacağız? İleride şirket kurduğumuz zaman biz de mi böyle olacağız?

Çok moralinizi bozmayın. Negatif bir tablo çıkarttım karşınıza, moralinizi bozdum fakat burası Türkiye. Bu kadar kaosun içinden böyle bir düzen çıkıyor olması çok enteresan olduğu kadar bazen heyecan verici, bazen üzücü. Kendisi pesimist bir insan olarak bunları yazmak, benim biraz da sizi hazırlamaya çalışma şeklim. Bu işlerin pozitif tarafları yok mu? Var tabi, o da başka bir başlık

Toparlayacak olursam; Üstteki şartları yerine getirirken nelere dikkat etmeniz gerektiğini yazmaya çalıştım. Konunun dışına çıktım, sektörün problemlerine daldım, birçok kişiye de laf attım, aslında biraz da içimi döktüm. Hala değinmediğim birçok eksik nokta da var. Yazılımcı olmak yolunda bunlarla karşılaşırsanız “Serkan Berksoy” yazmıştı bir yerlerde dersiniz.

3 thoughts on “Nasıl Yazılımcı Olunur? Programcılık Eğitimi Üzerine…

  1. Serkan Berksoy,bende bir meslekdasin, fakat senin kadar tecrübesi olmayan bir kadesinim. Yazini okudum ve cok begendim. Bakildiginda tam olarak gercekleri kaleme almissin.Yeni baslayan bir arkadasin kesinlikle okumasi gereken bir yazi. Elimden geldigince bu yaziyi paylasmaya calisacagim. Tesekkurler…

  2. Serkan abi ben 15 yaşındayım ve bir şekilde kendime bir temel atmaya çalışıyorum aylardır kendimi geliştirebileceğim yerler arıyorum ama ya yaşım küçük diye ya da başka sebeplerdenhiç bir yere daha kabul görmedim. Ben senin dediğin özelliklere sahip olduğumu düşünüyorum ama daha hiç bi şeyi bilmeden senin dediğin gibi kendimi geliştiremem. Kurslara başlıyacaktım ama bu yazıyı okuduktan sonra tereddüte düştüm sen çok yardım sever iyi biriolduğum böyle güzel ve emek isteyen yazıları bizle paylaştığından belli oluyor. Lütfen benle de bir şekilde bağlantıya geç ve yardım et lütfen ne yapmam gerekiyor hiç bilmiyorum 😦 Tesekkürler… (yazı için ellerine sağlık!)

  3. Merhaba Serkan Bey,Şu anda sizin c# 4.0 tam hakimiyet kitabınızı okuyorum. Ben de tecrübeli bir yazılımcıyım. Sizin yazdıklarınızı yaşadığım için mesleğimden soğudum yıllarca. Ara verdim mesleğe.Başka mesleklere geçmeye çalıştım o da olmadı.Şu anda da çalışmıyorum. Türkiye'de yazılım sektörünün hali içler acısı.Kaç projeye ortadan daldım ben de sapıtmış vaziyetteyim.Çünkü dediğiniz kalitesiz yazılımcı kalitesiz iş sarmış piyasayı.Mecburen kabul ediyorsunuz(=Ekmek parası). Bu da sizdeki meslek aşkını öldürüyor. Bir örnek vereyim tüm değişkenlere kendi adını veren bir megalomanın yarım bıraktığı işi bile gördüm :)Bitmeyen projeler ve önceden müşteriye verilen sözler yüzünden kariyeriniz baltalanıyor.İzninizle önce kitabınız hakkında yorum yapmak isterim.Bence pek güzel görünmüyor. Terzi kendi söküğünü dikemez olmuş :)Bence blogspot görünümünden wordpress gibi daha güzel görünümlü bir siteye geçmelisiniz.Kitabınız hakkında ise 9/10 puanı hak ediyorsunuz. Çok detay ve saçmalıktan kaçınmışsınız. Pratikte nerelerde kullandığınızı belirtmeniz ve design patternler gibi aslında önemli şeylerden bahsetmeniz çok önemli artılar. Benim öğrenciliğimden bu yana (ki üzerinden yaklaşık 10 yıl geçti) yazılım alanında "Türkçe" olarak başarılı bulduğum 2 kitaptan biri. (Diğeri de Kaan Aslanın C Kitabı idi).Direkt "saçma sapan" Türkçe çeviri yapmadığınız için kitap okunabilir bir kitap olmuş. MVC,WCF ve diğer teknolojilerle ilgili kitabınız var mı bilmiyorum ama bence bu kitabınıza kardeşler gerek :)Yazınızla ilgili yorumum da yazınıza sonuna kadar katılıyor olduğumdur. Maalesef buz dağının sadece üstünü gören insanlar altında ne kadar büyük bir kütlenin varlığından haberdar değil.Yeni kitaplarınızı sabırsızlıkla bekliyorum.Sizinle iletişime kalmak isterim. İşlerinizde başarılar.İyi çalışmalar

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s