Son zamanda RTFM kültürüne aşina olmayan bilgisayar mühendisi arkadaşlardan aldığım çok sayıda sorudan bazıları:

  • yaa ben stajda bi .net projesi yapıyorum da veritabanına bağlanamadım nası oluyo?

  • ya bizim arkadaş bişey yazmış da çalışmamış sana yollasam olurmu bi baksana.

  • [buraya msn’de 50 satır kod yapıştırılır] yaa üstteki kodun nesi yanlış? Çok normal sorular. Hiç yadırganacak bir tarafı yok.

Öncelikle sorunun saçma olduğu bu durumlarda genel olarak Doğru Düzgün Soru Sormanın Yolları yazısını önermek gerekiyor. Bence derdini anlatamayan bir mühendis (herhangi bir disiplinde) olamaz, olmamalı. Meslektaşlarınızla sağlıklı iletişim kuramıyorsanız işi gücü bırakıp iletişim yeteneklerinizi geliştirin.

Varsayalım ki sorunuzu eksiksiz ve cevap verecek kişinin en az düşünmesini gerektirecek hale getirdiniz. Derdinizi açıkça anlattınız, adım adım nasıl bu soruna vardığınızı, çözmek için hangi yolları denediğinizi ve ne sonuçlar aldığınızı sorunuza eklediniz. Çok güzel.

1. Önce insana sormayın

En son insana sorun. İnsanlar yanılırlar ve insanlar genelde kendi işleriyle güçleriyle meşguldürler. En yakın arkadaşınız dahi olsa onun vaktini çalarsınız, (ne kadar melek gibi olursa olsun) sabrını zorlarsınız, ve “ben bunu bilmiyorum ve bulabilecek kapasitem yok” imasını yaparsınız. Ne gerek var ki böyle bir imada bulunmaya? Bence gayet akıllısınız, sadece nasıl yapacağınızı bilmiyorsunuz.

Bilmemek değil öğrenmemek ayıp ama her bilmediğini de insanlara sormak ayıp.

2. Kullandığınız sistemin bilincinde olun

Hiç bilmediğiniz bir programlama dilinde/araçta/framework’te çalışıyorsanız ve sürekli insanlara soru soracak gibi oluyorsanız yanlış yapıyorsunuz. Önce gidin o dili/aracı/her neyse öğrenin. Sitesine gidin, referansını okuyun, derslerini arayın, tutorial’lara bakın, videolarını arayın, kitabını alın, paranız yetmiyorsa korsanını indirin, indirmem diyorsanız açık kaynaklısını bulun, örnek kodlar inceleyin. Buldunuz diyelim, okumadınız sonra. Gelip yine soru sorarsanız küfürü yersiniz.

Bu yüzden kullandığınız sistemi tanımak çok önemli. Emin olun oralardan yüzlerce kişi geçti. Oracle DB kullanıyorsanız, PHP kullanıyorsanız, Python kullanıyorsanız, MS Access DB kullanıyorsanız, bilmemne kullanıyorsanız bunlar üzerine yazılmış kolunuzdaki kıl sayısından fazla kaynak var. Kaynak bulamamanız için 20 tane aktif kullanıcısı olan bir teknolojiyi kullanmanız falan gerekiyor galiba.

Bilmediğiniz ve öğrenmek istemediğiniz bir teknolojiyi kullanmaya zorlanıyorsanız ve ilgili soruları gidip konunun bileni olan arkadaşınıza soruyorsanız arkadaşınız sizin bulaşıklarınızı yalayan biri değildir, yardım etmeyi reddetmek de sonuna kadar hakkıdır. Sizin değer vermediğiniz bir şeye vaktini harcayıp onu öğrenmişse bunu karşılıksız alamayacağınızı bilin.

3. Önce arama motoru

Diyelim kullandığınız dili çok iyi bildiğinizi zannediyorsunuz ama çözemediğiniz bir sorun çıktı. Diyelim Android’de nasıl notification göstereceğinizi bulamıyorsunuz. Yapmanız gereken adımlar aşağıdaki gibi:

  1. önce www.bing.com yazarak bing’i açıyoruz.

  2. gelen kutuya google yazıyoruz

  3. sonra ilk gelen sonuca tıklıyoruz

  4. gelen sayfaya aramak istediğimiz kelimeyi yazıyoruz (maksat espriyi duymayan kalmasın) Burada arama sözcüğünüz ‘android notification’ olacak, bu kadar basit.

Diyelim hata mesajı aldınız. Emin olun sizden önce bin kişi daha aynı hatayı almıştır. Hata mesajını aynen alın Google’a yapıştırın, binlerce sonuç zaten çıkacaktır. Çok sık hata alıyorsanız gidin o teknolojinin kitabını baştan okuyun, okuduysanız başka bir kitaptan-kaynaktan okuyun.

Bir çok programlama dilinin Reference/API’si vardır. Burada dile dair her şey yazıyor olacaktır. Yapmanız gereken okumak. Hoca derste öyle göstermiş de eve gelince bu çalışmamışmış, gidin okuyun…

4. Aradığımı bulamıyorum, benim sorum orijinal

Sanmıyorum yaa. Program istediğiniz gibi çalışmıyorsa debug etmek diye bir kavram var, önce onu öğrenmelisiniz. O bana zor geliyor, derseniz satır aralarına ekrana yazdırma komutları koyup programınızın gidişatını görün. Sonra bunu iş mülakatında da yapın ki sizlerle aynı şirkette güzel bir tesadüf sonucu karşılaşmayalım.

Yine de siz sorunuzun orijinal olduğunu düşünedurun başka kaynaklarda soruyu sormakta fayda var.

4.1. IRC

22 yıllık chat yöntemidir. Bilgisayar dehanızdan ötürü programını bulamayacağınızı ve kuramayacağınızı varsayalım. Freenode adında açık kaynaklı teknolojilerin tartışıldığı sohbet odalarını barındıran bir IRC ağı mevcut. webchat.freenode.net adresinden girip bir çok teknolojinin odasına ulaşabilirsiniz. Oradaki odalarda bir sürü kişi sizin (ve benim de) saçma sorularınızı anlayışla karşılamaya hazır. Gidin sorun. (Ara sıra beni #pardus, #scala, #mysql, ##java, #ubuntu, #python odalarında yakalayabilirsiniz).

Dikkat ederseniz açık kaynaklı dedik, siz gidip Microsoft ürünü kullanıyorsanız zaten ya başaracağınıza eminsinizdir (çünkü sertifikanız falan vardır hani) ya da danışmanlara akıtacak paranız vardır (yahut şirketinizin parası). Sizi bizim şirkete alalım?

4.2. E-Posta Listeleri ve Forumlar

Açık kaynaklı teknolojiler kullanıyorsanız genelde o teknolojinin bir e-posta listesi olur. (Email grubu falan da denir.) Oraya üye olup sorunuzu yazarsanız büyük ihtimalle 1 gün içinde cevap alacaksınızdır. Bazı teknolojilerin e-posta listeleri oldukça aktiftir, daha hızlı sonuç alabilirsiniz.

Bir de forumlar vardır. Gerçi geçtiğimiz 2-3 yılda forumlar neredeyse ortadan kayboldu. Ama siz Microsoft kullanıcısıysanız mutlaka sorularınızı sorabileceğiniz forumlar bulacaksınız. Aramanın gücüne inanın. Forumlardaki, e-posta listelerindeki kurallara uymazsanız küfür yersiniz.

4.3. Stack Overflow

stackoverflow.com programcıların çözemedikleri sorularını sordukları yer. Çok bildiğinizi iddia ediyorsanız cevap da verebilirsiniz. Bir nebze forum gibi ama farkı zamanla hissedeceksiniz. Gidip bütün projenizin kaynak kodunu oraya koyup insanların çözmesini beklemeyin, güzel küfürler biliyor oradaki amcalar. En başta dediğimiz gibi sorunuzu doğru düzgün sorarsanız ve etiketini doğru koyarsanız bir saat içinde cevap alacağınız neredeyse kesindir.

Bu aslında önerdiğim son yöntem olacak. Çünkü stackoverflow’da sorup 1 saat beklemeye üşeniyorsanız ben de size cevap vermeye üşeniyorumdur büyük ihtimalle. Bu yazıyı da yukarıda bahsettiğim sorularla karşılaşan herkesin elinin altında soruyu sorana göndermek üzere bulunsun diye yazdım.

5. Dil problemi.

İngilizceniz iyi değil ama üniversitede Almanca, İspanyolca, Fransızca’dan birini aldınız değil mi, maksat çeşitlilik olsun. Zaten piyasada da en az iki dil bilmeyeni işe almıyorlar… İki seçeneğiniz var:

  • İngilizce’ye ne gerek var zaten, gidin Türkçe forumlarda sorun. Mutlaka sizden daha amatör biri sorunuza cevap vermeye çalışır.

  • Madem bilgisayar mühendisi olacaktınız neden adam gibi İngilizce öğrenmediniz? Hangi yazılımın dokümantasyonu Almanca, Fransızca (ya da ne öğrendiyseniz işte) yazılıyor ki? Kim size gidin o seçmeli dil dersini alın dedi? Sonuç Paylaşmak güzel şey, ama başkasının birikimini kendi birikiminizmiş gibi kullanmaya başladığınız an kelebeklerin uçtuğu bu mükemmel dünyanın düzenini bozuyorsunuz ve siz her mantıksız soru sorduğunuzda biz yavru bir kediyi öldürüyoruz. Yavru kedicikler aşkına, üşenmeyin, biraz emek verin ve pes etmemeyi bilin. İş mülakatlarında bazen mümkün olmayan problemleri çözme şeklinize bakılır. Çok da üşeniyorsanız iş mülakatında  “bizim bi arkadaş var ona msn’den sorarım” fikrinizi kullanmaya devam edin. Problemini kendi çözmeye üşenmeyen arkadaşlar olarak mühendis falan olmanızı istemiyoruz mümkünse.

:)