Rehber Kod yazarken yardım istemek

Selam. Kod yazarken bir yerlerde hata aldığımızda ya da bir şeyi nasıl yapacağımızı bilmediğimizde, kimden nasıl yardım isteyebiliriz? Hep beraber adım adım tartışalım.

1) Hatayı anlayın ve analiz edin​

Sizin kodunuzda, sizin aldığınız hatayı kendiniz anlamazsanız biz neden anlayalım? Öncelikle olayın akışını kavramanız, problemin nereden kaynaklandığını bulmanız ya da yakın bir tahminde bulunmanız gerekiyor.

- Debug (Hata Ayıklama)​

İlk önce kodunuzda hata ayıklamalısınız. Bunun en kolay, en bariz yolu console.log komutudur. Örneğin bir for döngüsünde problem yaşıyorsunuz. Kontrol döngüye giremiyor olabilir, döngüden çıkamıyor olabilir ya da döngü içinde kafası karışıyor olabilir. Bu durumda stratejik noktalara birer console.log yazdırırsınız. Tam döngüye girdiğinde console.log("Döngünün içinde"), çıktıktan sonra console.log("çıktı"), içerdeyken de duruma göre console.log("xx") yazdırmayı deneyeceksiniz. Hangisini yazdırmadığını görerek problemin alanını daraltacaksınız. Böylece problem "for döngüsü çalışmıyor" yerine "kod for döngüsüne girmiyor" a düşecek. Böylece döngüyü düzeltmekle uğraşmak yerine, bir adım yukarı giderek asıl problemin çözümüne odaklanacaksınız.

console.log örnektir. alert, console.writeLine, print gibi dilden dile ve platforma göre değişen alternatifleri olabilir.
Debug için başka alternatifler de var elbette. Fakat en kolayına odaklanıyorum. Büyük olasılıkla, hele ki başlangıçta olan birinin derdine çözüm olan bir yöntemdir bu.

- Kod tekrarları​

Aynı kodu başka bir yerde yazdınız, oradaki çalışıyor ama bu çalışmıyor. Demek ki burada bir problem var. Orayla bura arasında ne fark var? Aynı dosyalar mı import ediliyor, aynı değişkenler tanımlanmış mı, aynı noktaya varıyorlar mı? Orada çalışan kodun burada çalışmamasının tek sebebi farklı bir şeylerin olmasıdır. O farkı bulun.

- Hata mesajlarını okuyun

Kullandığınız IDE veya editor, eğer bariz bir hata yaptıysanız mutlaka hata mesajı verir. Onları okuyun. Bazen missing } hatasını forumlarda soranlar oluyor. Bilgisayar sana açık ve net bir şekilde X. Satıra bir tane " } " koy diyor. Yani nereye koyacağına kadar söylüyor daha ne yapsın? Bu hata mesajlarına dikkat edin. Mümkün olduğunca anlamaya ve çözmeye çalışın.

Tabii bu mesajları anlamak her zaman öyle kolay değil. İngilizce. Programlamaya hangi dil ile başlanır sorusunda İngilizce derken dalga geçmiyor bu forumdaki insanlar. Özellikle Visual Studio'nun Türkçe hata mesajları beni benden alıyor. Cümleyi dikkatle incelemek zorunda kalıyorum anlamak için. IDE ve editorlerinizi İngilizce kullanmaya çalışın. Hata mesajlarını İngilizce olarak alın ve yorumlayın.
Sonuç olarak bu hata mesajları da hatalarınızı kimseye muhtaç olmadan çözmenizde yüksek oranda yardımcı olacaktır.

2) Araştırın​

Ben 3 yıldır kod yazıyorum. 3 yıldan beri internette araştırıp bulamadığım en fazla 3 tane problemim olmuştur. Onlar da eminim ki ben yanlış araştırdığım içindir.

- Anafikre odaklanın​

Diyelim ki en basitinden bir "yapılacaklar listesi" uygulaması hazırladınız. Görevleri bir array üzerinde tutuyorsunuz. Listeye öge ekleme kodlarını falan yazdınız. Fakat öge kaldırmayı nasıl yapacağınızı bilmiyorsunuz. İnternette "yapılacaklar listesinden görev kaldırma" diyerek çok spesifik bir alana odaklanıyorsunuz. Belki yüzlerce yapılacaklar listesi vardır evet ama sizin programınızın dinamiğinden farklıdır. Sizin burada araştırmanız gereken şey "X dilinde Array'den öge kaldırmak" olmalı. Kodunuzun hizmet ettiği alana değil, anafikrine odaklanmalısınız. Kullandığınız kod yapıları hakkında soru sormalısınız. Tabii bu araştırmaların da İngilizce olmasının cevaba ulaşmayı nasıl etkileyeceğinden bahsetmeme gerek yoktur diye düşünüyorum.

- Kaynaklar​

Artık bilmeyen yoktur fakat malum sitelerin adını yazalım. Stack Overflow. Buraya yazılmamış bir problem yaşadıysanız tebrikler. Eşsiz bir iş yapıyor olabilirsiniz.
Dokümanların önemini unutmamak gerek. Her şeyi bilmek zorunda değilsiniz fakar bu tarz dokümantasyonlar her şeyi nasıl kullanabileceğinizi kısaca öğretir / hatırlatır.
Microsoft'un kendi teknolojileri için ( VS, C#, VS Basic vesaire) siteleri var. Web geliştirenler için MDN, ve W3 Schools var.
Bir de DevDocs diye müthiş bir şey var. Birçok dilin, Framework'ün ve teknolojinin dokümantasyonu bir yerde.

Bunları yeni öğrenenlere kaynak olsun diye yazmadım. Spesifik alanlarda geliştirme yaparken en çok karşılaşılan ve çözüme ulaştırma olasılığı çok yüksek olan sitelerin isimlerini anmak istedim sadece.

3) Yardım istemek​

Şimdi, diyelim ki hatayı analiz ettiniz, çözemediniz. Hata mesajı yok ya da anlamadınız. Araştırdınız ama çözüme de ulaşamadınız. İşte zaman forumlarda konu açma zamanı. Bunun da incelikleri ve adabı var.

- Detay verin​

"Xx yaparken kod hata veriyor" sorusuna verilebilecek tek cevap "Hadi ya, inşallah bir dahakine vermez." demektir. Ne hatası veriyor açıklayın. Çalışmıyor mu, çalışıp duruyor mu, hiç tepki vermiyor mu, kapanıyor mu? Problemi açık ve net tarif edin.

- Yaşadığınız probleme dair mümkün olduğunca çok detay verin. Hangi platform, hangi dil, hangi Framework, hangi modüller her şeyi söyleyin.

- Hata mesajlarını paylaşın. Siz anlamadıysanız bile illa birisi anlar.

- Kodların ekran görüntüsünü atmak yerine kodu paylaşın ki insanlar kopyalayıp deneyebilsin. Kodları kod blogu içinde paylaşmayı unutmayın ki okuması ve incelenmesi kolay olsun.

- Eğer analiz etme kısmında problemi doğru bir şekilde daralttığınızdan eminseniz sadece hatalı olan kısmın kodunu paylaşın. Değilseniz ve tüm kodu paylaşıyorsanız da hatanın nerede olabileceğini belirtin.

- Neleri denediğinizi belirtin​

Soruyu sorarken şimdiye kadar denediğiniz ve çözüm vermeyen her şeyi yazın. Kodu nasıl değiştirdiniz, hangi dosyaları import etmeyi denediniz, neyi nasıl düzenlediniz? Hepsini belirtin. Böylece kimse zaten denediğiniz şeyleri önererek ne size ne de kendisine vakit kaybettirmez.
Not: "Her şeyi denedim yine de olmuyor." geçerli bir cümle değil. Her şeyin ne olduğunu açıklayın.

- Fikir isterken de ayrıntıya girin​

"Yapılacaklar listesi programı nasıl yapılıır?" sorusu geçerli bir soru değildir. Hangi platformda hangi dille çalışıp tam olarak ne yapmak istediğiniz açıkladıktan sonra nereden başlayacağınıza dair fikir isteyin. Tekrar ediyorum, detay vermek önemli.

- Bir zahmet teşekkür edin ve kibar olun​

Afedersiniz ama mağara adamı olmayın arkadaşlar. Size yardım eden insanlar mecbur değil, iyilik olsun diye yapıyorlar bunu. Rica ediyorum soru sorarken biraz kibar olmayı deneyin ve sorun çözüldükten sonra bir teşekkür edin, hiç olmazsa hallolduğuna dair bir işaret verin. Bu forum için teşekkür etmek yerine beğenmek ve çözüm olarak işaretlemek daha makul bir seçenek. Bir saat boyunca "hocam şimdi de böyle oldu, hocam onu yaptım bu oldu" dediğiniz sorulara sabırla cevap veren insanları uğraştığına pişman etmeyin.

Kod yazarken en önemli şey topluluk. Bu topluluk sayesinde öğrenir ve bu topluluk sayesinde gelişirsiniz. Yazılım/teknoloji topluluğuna her anlamda borçlu olduğunuzu unutmayın.

Okuduğunuz için teşekkür ederim. Böyle konuları aslında uzun süre zarfında yazıp aklıma geldikçe eklemeler yapmak daha mantıklı fakat aceleci davranıp paylaşıyorum hemen. O yüzden mutlaka atladığım ve aklıma gelmeyen eksik noktalar vardır. Aşağıda konuşuruz onları da.
 
Son düzenleme:
Rehber için teşekkürler. En önemli eksiklerden birisi de arkadaşların bazen uğraşıp yapamadığı kısımda yardım isteyecekleri yerde direkt olarak şunu şunu yapan bütün kodu istemeleri. Yani yardım eden çıksa bile kendilerinin o şekilde bir şey öğrenmesi epey zor.
 
Evet ya, çok önemli bir noktaya değinmişsiniz. Yani özellikle öğrenme niyetinde olan arkadaşların böyle kolaya kaçmaması gerek. Gerekirse on kere soru sormalı ama yine de kendileri yazmaya çalışmalılar diye düşünüyorum.
 
Bence XY problemine de değinmek lazım:
Bu olayın adı olduğunu bilmiyordum ama bahsini geçirdiğin için teşekkürler. Bu da çok önemli bir nokta aslında.
Okumayacaklar için özetlemek gerekirse, ne istediğini açık olarak belirtmek gerekiyor ki insanlar farklı bir sorununuz olduğunu düşünüp farklı konuda yardımcı olmaya çalışmasın.
Kodu CODE olarak paylaşsınlar bir de.
Ekledim bunu, erkenden hatırlattığın için teşekkürler.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…