13 puan yazan kciter1 2024-07-29 | 7 yorum | WhatsApp'ta paylaş
  • Hata ayıklama, fiilen geliştiricinin vazgeçilmez yetkinliklerinden biridir
  • Hata ayıklamada önemli olan, nasıl yaklaşılacağına dair zihniyettir
  • Hata ayıklama, verilen durum ve veriler temelinde sorunun nedenini bulma sürecidir
    • Yazar bunu sezgi olarak ifade ediyor
    • Sezgi, bildiğim bilgiyi problemle ilişkilendirmektir
    • Deneyim, bilginin sezgiye dönüşmesinde bir kısayol görevi görür
  • Geliştiriciler, beklenmeyen davranışın nedenini bulmak için içgüdüsel olarak olasılıkları daraltma eylemine yönelir
  • Yazar, ilkelerle hareket ederek birer birer daraltmanın verimli olduğunu düşünüyor
  • Sorunu bulmak için dört aşamayı tanıtıyor
    • Birincisi, şüphe etmek
      • Kod, loglar, hata mesajları, izleme verileri, gereksinimler, donanım vb. her şey, sorunu çözmek için bilgi toplama araçlarıdır
      • Bir kontrol listesi hazırlamak faydalı olur
    • İkincisi, sınıflandırmak
      • Toplanan bilgiler arasında bilinenler ile pek bilinmeyenler ayrılmalı
      • Bilgi toplama aşamasında anında elenen bilgiler, küçük sezginin sonucudur
      • Yazar bunları dört kategoriye ayırıyor: mantıksal kusur, bağımlı teknoloji kusuru, temel teknoloji kusuru, fiziksel kusur
    • Üçüncüsü, öğrenmek
      • Toplanan bilgiler temelinde bilgi boşlukları bulunmalı ve öğrenilmeli
    • Dördüncüsü, ilişkilendirmek
      • Bilgilerden hareketle sorun hakkında hipotez kurulmalı ve test edilmeli
      • Bu süreçte yeni içgörüler ortaya çıkarsa, tekrar bu dört aşamaya dönülen bir geri besleme döngüsü kullanılmalı
  • Yukarıda tanıtılan içerik, daha önce bahsedilen sezgiyi pratik etmek için faydalı bir yöntemdir
  • Kendi hata ayıklama ilkeleriniz yoksa bu yazıyı temel alarak oluşturabilirsiniz ya da sıfırdan yenisini geliştirebilirsiniz. İyi ipuçları paylaşırsanız daha da iyi olur

7 yorum

 
cosine20 2024-07-30

Yazar, bazı ilkeler belirleyip bunları tek tek daraltarak ilerlemenin verimli olduğunu düşünüyor

Buna fazlasıyla katılıyorum. Ayrıca hata ayıklamaya dair genel yaklaşımı iyi derleyip önerdiğini düşünüyorum.

Gerçekte hata ayıklama sürecinde çok çeşitli nedenler ve arka plan bilgileri karmaşık biçimde iç içe geçtiği için, bu yapı içinde gerekli ipuçlarını bulmak adına odağı daraltma sürecinin gerçekten çok önemli olduğunu düşünüyorum.
Metinde bu süreçte sezgi ve içgörünün geliştirilmesi gerektiği söylenmiş; sezgisel olarak sorunun kaynağının neresi olduğunu ve araştırmanın hangi noktayı merkeze alması gerektiğini belirleyen başlangıç noktasını yakalamada, deneyimle ve hisle yoğrulmuş sezginin burada büyük pay sahibi olduğu anlaşılıyor.

 
kciter1 2024-07-30

Katılıyorum. Bahsettiğiniz sezgiyi iyi ifade etmek istemiştim, ancak yazı genelinde intuition yerine insight terimini tutarlı biçimde kullanmanın daha iyi olabileceğini düşünüyorum.

 
halfenif 2024-07-30

Akıl yürütme yapabilen insanlar var, yapamayanlar da var diye düşünmek.

Sanırım bu yaklaşık 30 yıl önceydi.

Eskiden kıdemliler, IT’de yaklaşık 3 yıl çalışınca herkesin becerisinin aynı seviyeye geldiğini söylerdi.

Şimdi düşününce ....

 
savvykang 2024-07-29

Bilgileri birbirine bağlamayı, sezgi alanından ziyade çıkarım ya da mantıksal ispat olarak düşünmek daha doğal olmaz mı? İspatı tekrar tekrar ustalıkla uygulamaya başladığınızda, çarpım tablosunu ezberlemek gibi ara süreçleri atlayıp cevabın doğrudan çıkması nedeniyle sezgi gibi görünebilir; ama yine de ikisini ayırmak gerektiğini düşünüyorum.

Geri kalan şüphe, sınıflandırma ve öğrenme konularına ise, deneyim ve arka plan bilgisi biriktikçe bunların geliştiğini bizzat yaşadığım için katılıyorum.

 
savvykang 2024-07-30

Yazıyı bir kez daha okuyup ekleme yapıyorum

Yazarın savunduğu sezgi tanımının, toplumsal olarak yaygın kabul gören sezgi tanımından farklı göründüğünü düşünüyorum. Genel sezgi tanımını, düşünme süreci olmadan problemi kavramak olarak anlıyorum. Yazıyı okurken bir an için sezginin anlamını benim mi yanlış anladığımı düşünüp yeniden kontrol etme ihtiyacı hissettim. Bunun, hata ayıklamada düşünsel bir prosedür gerektiğine dair genel tezle de çeliştiğini düşünüyorum. Eğer hata ayıklama gerçekten tamamen sezgiyle yapılabilen bir iş olsaydı, hata ayıklama sırasında log veya veri kontrolüne, sürüm kontrolüne hiç ihtiyaç olmadığını savunmanın da doğru olması gerekmez miydi?

 
kciter1 2024-07-30

Merhaba. Yazıya ilgi gösterdiğiniz için teşekkür ederim.

Belirttiğiniz gibi, genel olarak sezgi doğrudan bir düşünme faaliyeti olmadan bir şeyi kavramayı ifade eder. Yine de gerçekten hiçbir bilgi olmadan doğru cevaba ulaşmanın mümkün olmadığını düşünüyorum.

Öncelikle sezgi kelimesi hakkında ne düşündüğümü yazacak olursam, debugging hakkında konuşurken meslektaşlardan ya da kişinin kendisinden sık sık “bir anda aklıma geldi”, “nedense sorunun o kısımda olduğunu düşündüm” gibi ifadeler duyarız. Ben bunun sezgi olduğunu düşündüm. Bir anda akla gelen şeyi görmezden gelmeyip tek tek incelediğinizde, sonunda aslında o kısımla ilgili bir deneyiminiz olduğunu ya da ilgili bilgiyi iyi anladığınızı fark edebiliyordunuz. Bu yüzden sezgi kelimesini kullandım ve yanlış anlaşılma olabileceği için “bildiğim bilgiyi problemle ilişkilendirmek sezgidir” cümlesini ekledim.

Bu nedenle dile getirdiğiniz birkaç soruya ilişkin düşüncemi paylaşacak olursam,
“debugging’de düşünme prosedürüne ihtiyaç olduğu yönündeki genel tezle de çelişiyor” ifadesi hakkında, yazıda kullandığım sezgi kavramını daha önce deneyimlenmiş ya da zaten bilinen şeylerin çok fazla düşünmeden kısaltılması olarak tasvir ettim. Dolayısıyla bununla düşünme prosedürüne ihtiyaç yok demek istemedim; aksine bunu, düşünmeyi hızlandıran bir araç olarak ifade etmek istedim.

Ayrıca, “Eğer debugging gerçekten tamamen sezgiyle yapılabilecek bir işse, debugging sırasında log veya veri kontrolüne ya da versiyon kontrolüne hiç ihtiyaç olmadığını söylemek de doğru olmaz mı?” sorusuna gelince, bunun tamamen sezgiyle yapılabileceğini söylemedim. Aksine, “debugging, verilen durum ve veriler temelinde problemin nedenini bulma sürecidir” cümlesini ekledim. Ancak bana göre, debugging yaparken yazıda öne sürdüğüm dört aşamalı çıkarım sürecinin tamamından her seferinde geçen geliştirici neredeyse yoktur. Belli bir deneyim ve bilgi birikimi varsa, kişi bunların bir kısmını kendi yargısıyla atlayabilir. Sözünü ettiğiniz loglar, veriler vb. ise, deneyim ya da bilgi varsa bunları hatırlatıcı bir rol oynar; yoksa çıkarıma yardımcı olma rolü üstlenir. Bu nedenle, yazıda söz ettiğim sezgi açısından bile vazgeçilmemesi gereken önemli bilgilerdir.

Bu yazıda kullandığım sezgi kelimesinin kendisinin muğlak olabileceğini düşünüyorum. Belki de düşüncemi anlatmak açısından yazının kurgusu ya da buildup kısmı iyi olmamış olabilir. Öncelikle yeterince somut olmayan kısımları düzeltmeyi düşünüyorum. Ancak sezgi kelimesini değiştirmek daha iyi olur mu, buna henüz karar veremiyorum. Çünkü yazıyı yazarken en temel kavram olarak sezgi kelimesini seçmiştim ve onun yerine koyabileceğim başka bir kelime aklıma gelmiyor. Eğer iyi bir öneriniz varsa paylaşırsanız memnun olurum. :)

 
savvykang 2024-07-31

Giriş bölümüne, hata ayıklamada hem sezgiye hem de akıl yürütmeye ihtiyaç duyulduğunu açıklayan bir arka plan ekleyip; ana bölüme de sorunu bulma yöntemi ile sezgi/akıl yürütme ilişkisinin eklenmesinin yazının bütünlüğünü artıracağı kanaatindeyim.

Değişiklik öncesi

  1. Hata ayıklama, verilen durum ve veriler temelinde sorunun nedenini bulma sürecidir
  2. Hata ayıklama yoluyla sorun çözme genellikle geliştiricinin sezgisinden çıkar
  3. Sorunu bulmak için dört adım vardır

Değişiklik sonrası

Giriş

  1. Hata ayıklama, verilen durum ve veriler temelinde sorunun nedenini bulma sürecidir
  2. Hata ayıklamada sırasıyla iki alt çalışma gereklidir: sorunu fark etme ve sorunu çözme
  3. Sorunu fark etmede sezgi, sorunu çözmede ise akıl yürütme devreye girer. Bunu destekleyen kuram olarak ikili süreç kuramı (dual process theory) vardır
  4. Sorunu fark etme sürecinde yalnızca akıl yürütme kullanılırsa, sistemin yapısı gibi teknik ayrıntıları tek tek inceleyip doğrulamak gerektiğinden üretkenliği artırmada kısıtlar ortaya çıkar. Bunun yerine, sorunu fark etme sürecinde sezgiyi yardımcı olarak kullanmak hata ayıklama stratejisi açısından daha avantajlıdır
  5. Sezginin etkililiğini artırmak için günlük pratikte deneyim ve içgörü, yani heuristikler biriktirmek önemlidir.
  6. Sezginin yanlış olma ya da duruma uymama ihtimali her zaman vardır; bilişsel önyargılardan uzaklaşmaya yönelik eğitim de önemlidir

Ana bölüm (hata ayıklama prosedürü)

  1. Bilgi toplama
  2. Sınıflandırma - sezgi ve heuristikler devreye girer
  3. Öğrenme
  4. Hipotez kurma ve doğrulama - akıl yürütme devreye girer