Monthly Archives: June 2012

Finallerin Ardından

Sonunda istanbul üniversitesinde finaller bitti. Ne yazık ki rektörlükte olan görevlendirmem yüzünden finallere vakit ayıramadım. Aslında nesne yönelimli programlama dersinin demolarını yapmayı veya işletim sistemleri dersinin demolarına girebilmeyi çok istiyordum.

Bu yazıda, finalleri değerlendirmek istiyorum. Genel görüntü tam da beklendiği gibi. Prensip olarak devamsızlıktan kimseyi sınıfta bırakmıyorum ama aralarda rast gele yaptığım yoklamalarda katılan kişi sayısı ile geçen kişi sayısı arasında bağlantı çok kuvvetli. Aslında derse çalışanlar ile geçenler arasındaki bağlantı demek daha doğru. Örneğin aşağıdaki soruyu, nesne yönelimli programlama dersinin finalinde sordum:


Aşağıdaki şekilde bir dizinin tanımladığını düşünelim:

private int[] list = { 10, 20, 30, 40, 50 };

Ayrıca aşağıdaki şekilde bir fonksiyon tanımımız olsun:

public void mystery(int[] array) {
    int tmp = array[array.length - 1];
    for (int i = 1; i < array.length; i++) {
        array[i] = array[i - 1];
    }
    array[0] = tmp;
}

Buna göre aşağıdaki çağırma işleminin sonucunda olmasını beklediklerinizi yazınız.

mystery(list);

Aslında yukarıdaki bu sorunun, JAVA veya nesne yönelimli programalam ile hiç ilgisi yok denilebilir. Benim gözümde daha çok bir döngü sorusu ve döngüyü okumayı bilen birisi kolayca yapabilir. Üzücü olan, bu dersi alan kişilerin bir sene kadar programlama dersi görüp (C dilinde) üzerine de bir dönem boyunca JAVA okuduktan sonra bu soruya cevap verememesi.

Dersi 193 kişi alıyor ve soruya doğru cevap veren sadece 34 kişi var. Bu durumda sorun sadece bu derste değil, daha önceki derslerde de değil, bölümde veya küresel ısınmada da değil ama daha çok öğrencilerin çalışmamasında denilebilir. Zaten yoklamalara göre derse en fazla 50-60 kişinin katıldığı ve bunların da bir kısmının ödev, proje yapmadığı, üstüne üstlük koskoca bir dönem boyunca gelip bana JAVA ile ilgili bir soru soran kişi sayısının beşi geçmediği bir sınıfta (ki çalışan insanın soruları olur) çok da farklı olması beklenemezdi.

Bu 193 kişiden derse devam eden ödev proje gönderen ve böyle basit bir soruyu cevaplayan 30 kişilik grup var. Ancak sınavları yaklaşık 7-8 saat önce sabahın 3’üne doğru açıklamış olmama rağmen şimdiden itiraz eden kişi sayısı 20’ye yaklaştı. Bu itiraz eden kişilerin arasında bir iki kişi hariç çoğu derse bile gelmeyen kişiler. Sorsanız hepsinin de geçerli bir sebebi var, elbette derse girmiş olmak, çalışmış olmak, bütün ödev ve projeleri yapmış olmak, sınavdaki soruları yapmış olmak dışında…

Bu öğrenciler ne bekliyor gerçekten bilemiyorum.

Şimdilerde formlarda doldurulan bir meslek hanesi bulunuyor. Bu haneye öğrenci yazılmaya başladıktan sonra işler bozuldu sanırım.

 

 

Bir Mülakatın Ardından

Bir iki hafta önce yaptığımız bir personel alım mülakatından çıkardığım dersleri ve soruları kısaca paylaşmak istiyorum. Umulur ki birilerinin işine yarar.

Ne yazık ki Türkiyede kendisine developer diyen kişilerin çoğunun temel kavramlarla ilgili sorunu olduğunu gördük. Belki bilgisayar mühendisliğindeki öğrencilere kızıyoruz ama piyasada bilgisayar mühendisi olmadığı halde developer olan pek çok kişi var ve bu kişilerin çoğunun durumu daha da vahim.

Bilişim sektörü gerçekten aç bir sektör. Hızla büyüyor ve ciddi anlamda eleman ihtiyacı var. Ancak bu ihtiyaç doldurulurken hiçbir kriter dinlenmiyor. Biraz konuya meraklı herkes sektöre hızlıca girip kendisine beğendiği bir ünvanı verebiliyor. Örneğin bir insanın kendisine veri tabanı yöneticisi (dba) demesinin hiçbir şartı yok. İsmi hoşuna gitti diye böyle bir ünvanı kullanıp kart bastırıp bu konudaki işlere başvurabiliyor. Hatta duyulan ihtiyaçtan dolayı bu kişiler iş dahi bulup buralarda çalışabiliyor. Neticede google sayesinde program kişiler ortaya çıkıyor. Kendisi oturup bir projeyi baştan sona yazmaktan ve yönetmekten aciz, onlarca kişi bir proje ekibi oluşturup oradan buradan duydukları, googleda aratıp buldukları kodları birleştirerek bir proje yazmaya çalışıyorlar. Hatta microsoft gibi firmalar bu yazılımcıları desteklemekte ve cesaretlendirmekte. Sanki proje yazmak, hiçbir bilgi gerektirmiyormuş gibi bir yaklaşımla yazılım geliştirme araçlarını gittikçe daha fazla “aptallar için” kullanılabilir hale getirmekte. Bu bir açıdan güzel elbette, artık daha kolay kod oluşturabiliyoruz ancak projenin içinde, projeyi geliştiren kişinin hiç ellemediği, ellemeye kalksa da anlayamayacağı bir sürü kodla birlikte, projenin sahibi ve dolayısıyla yazılımı gelştiren kişinin de sahibi microsoft olmuş oluyor.

Sanırım problem yine eğitim sistemimizde bitiyor. Geçenlerde öğrendiğim kadarıyla ilk okulda artık öğrencilere ödev olarak arama motorlarından bir konu arayıp buldukları sonuçları copy/paste marifetiyle ödev diye getirmeleri isteniyormuş. Yani bir öğrenci, verilen ödevi aratıp, hiç anlamadan, hatta hiç okumadan ödev niyetiyle artık teslim edebiliyor. Çocukluğunda konunun özüne dokunmayan insan, iş hayatında da buna ihtiyaç duymuyor. Üniversitelerde sürekli kopya ile mücadele ediyoruz, çoğu öğrenci bu konuda bizi de suçluyor ama anlaşılmayan ve ne yazık ki karşımıza iş hayatında acı bir şekilde çıkan gerçekler, insanların yaptığı işi hiç anlamadan yapması yönünde.

Örneğin bir insana “demokrasi nedir?” gibi bir soru sorsanız, bu kişi bir kaç arama ile size çok güzel bir cevap verebilir. Bu cevap bu kişinin demokrasinin ne olduğunu anladığını göstermez. Hatta bu konuyu özümsediğini anlatmaz.

Bir bilgiyi bilmekle kullanabilmek farklı seviyelerdir.

Günümüzde artık insanların ne bildiğinin önemi kalmadı. Bunu ölçmenin bir anlamı da yok. Artık insanların bilgiyi kullanabilip kullanamadığı daha önemli oluyor. Mülakatta sorduğum bir iki soruyu buradan paylaşmak istiyorum.

Örneğin bir java developer işine yapılan başvurularda bir kişi hariç javadaki “this” kelimesinin ne işe yaradığını bilen olmadı.

Bir constructor recursive olabilir mi sorusuna da yine bir kişi hariç doğru cevap gelmedi.

İşin acı tarafı bu kişiler yıllardır bu sektörde kod geliştirdiğini iddia ediyorlar.

Csharp geliştiricisi olarak başvuran ve yıllarca tecrübesi olduğunu iddia eden kişilere c# dilinde multiple inheritance yapılması halinde iki parent classta da aynı isme ve parametrelere sahip method olursa ne olur, çağırdığımızda hangisi çalışır diye sordum ve yine cevap alamadım.

Mülakat kapsamında çok çeşitli personel alımı söz konusuydu. Diğer bazı cevap alamadığım soruları liste halinde yazabilirim:

Developer pozisyonu için aklımda kalan bir iki soru:

  • Recursive fonksiyonlar, güvenlik açısından neden problemlidir?
  • Bir sınıfın bir constructor metodundan diğer bir constructor method’u nasıl çağırılır.
  • Final method nedir?
  • Interface nedir ve nerelerde kullanılır?
  • Abstraction nedir? Wrapping class veya wrapping function nedir?
  • Java bean ve EJB nedir? Nerelerde kullanılır?
  • Object serialization nedir? Nerelerde kullanılır?
  • SOAP ve XML-RPC arasındaki farklar nelerdir?
  • Object ve class arasında ne fark vardır?
  • Delegate fonksiyonlar nelerdir (veya function pointer)

DB Admin pozisyonu için

  • 3 Phase commit nedir?
  • Normalizasyon ve denormalizasyon nedir?
  • 5NF ile 4NF arasında ne fark vardır?
  • Trigger nedir nerelerde kullanılır?
  • Stored procedure kullanımının avantaj ve dez avantajları.
  • Bir alanda oluşturlan indekslerin avantajı nedir? Kullanılan teknolojide (MSSQL veya Oracle) hangi indeksleme kullanılmaktadır ve diğer indekslemelere göre avantajları ve dezavantajları nelerdir?

System Admin için

  • Linux işletim sisteminde bir diskin mount sorunu olursa nasıl müdahale edersiniz?
  • Bir sistem servisinde, CPU kullanımı veya RAM kullanımının anormal miktarda yüksek olduğunu görürseniz nasıl müdahale edersiniz?
  • Bir active directory kurulumunda, kullanıcı bilgilerinin bir bilgisayardan diğerine taşınması nasıl yapılır?
  • Sam veri tabanı nedir? Windows nerede tutar?
  • Apache veya IIS üzerinde SSL sertifikası nasıl kurulur? Tek IP adresi bulunan bir sunucuda en fazlak kaç farklı SSL sertifikası tutulabilir?

Ayrıca belirtmeliyim ki, system admin başvurusunda bulunan kişileirn hiçbirisi shell scripting bilmiyordu. Kısaca bu konuda ilgili arkadaşlara windows veya unix, fark etmeksizin yöneteceğiniz sistemin üzerinde mutlaka shell scripting yazabilecek seviyeye gelmenizi tavsiye ederim.

Üzülerek belirtmeliyim ki yukarıdaki soruların neredeyse tamamına cevap alamadığımız için, daha önemli konulara geçemedik.

Uzun lafın kısası, bir kere daha gördük ki, piyasamızda çok sayıda kişi, ya yanlış sektörde ya kendisini yetiştirmiyor, ya da yanlış işi yapıyor. Belki şu berberlere getirilen ve artık her berberin dükkanına kalfa veya usta diye sertifika asmasını zorunlu kılan, bu yüzden içeriği tartışmalı da olsa bir eğitim almayı ve sınavı zorunlu kılan uygulama bilişim sektörüne de getirilebilir. En azından insanların bazı konuları çalışması için fırsat doğar ve sadece copy / paste ile buldukları kodları yapıştırarak kendilerini developer zannetmekten vaz geçerler. Üzülerek belirtmeliyim ki kendisini yetiştirmek isteyen bir kişinin, piyasada iyi bir eğitim almasının ne kadar zor olduğunu da biliyorum. Çoğu teknoloji eğitimi olan kursların eğitim içeriğinde sadece kendi teknolojilerine bağımlı insanlar yetiştirmeye yönelik, çoğu hazır kod ve eklenti kullanan ve işin özünden çok uzak konular var. Ancak bu teknoloji eğitimleri de başka bir yazının konusu.