2 puan yazan GN⁺ 2025-01-14 | 1 yorum | WhatsApp'ta paylaş
  • David A. Wheeler'ın incelemesi

    • David J. Agans'ın "Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems" adlı eseri, yazılım ve donanım geliştiricileri için vazgeçilmez bir debugging kitabı olarak değerlendiriliyor.
    • Kitap, belirli bir teknolojiye değil, bug bulma ve düzeltmenin temel ilkelerine odaklanıyor; özellikle yeni başlayanlar ve orta seviyedeki geliştiriciler için faydalı.
    • İçerik, "dokuz kural" etrafında yapılandırılmış ve her kuralın açıklamasıyla nasıl uygulanacağını ele alıyor.
  • Dokuz kural

    • Sistemi anlamak: Kılavuzları okumak, temelleri kavramak ve araçları iyi kullanmak önemli.
    • Hatayı tetiklemek: Hatanın yeniden üretilmesi ve aralıklı bug'ların nedeninin bulunması önemli.
    • Düşünmeyi bırakıp gözlemlemek: Önce veri toplayın, tahminlere dayanmayın.
    • Böl ve yönet: Sorunu daraltarak çözün ve kolayca ayırt edilebilen test kalıpları kullanın.
    • Aynı anda yalnızca bir şeyi değiştirmek: Temel unsurları izole edin ve testlerde tek seferde tek değişiklik yapın.
    • Denetim kaydı tutmak: Yapılan işleri ve sonuçları kaydedin; tüm ayrıntıların önemli olabileceğini unutmayın.
    • Fişi kontrol etmek: Varsayımları sorgulayın ve araçları test edin.
    • Yeni bir bakış açısı kazanmak: Yeni içgörüler edinmek ve tecrübenin sesine kulak vermek önemlidir.
    • Düzeltilmediyse düzelmemiştir: Sorunun gerçekten çözülüp çözülmediğini doğrulayın ve kök nedeni düzeltin.
  • Kitabın güçlü ve zayıf yönleri

    • Kitap, debugging'in temel ilkelerine odaklanarak diğer teknik kitaplardan ayrışıyor.
    • Aralıklı sorunlarla nasıl başa çıkılacağına dair pratik tavsiyeler içeriyor.
    • Ekler bölümünde ilgili web siteleri ve poster indirme bağlantıları yer alıyor.
    • Eksik yönleri arasında, tüm kuralları ve alt kuralları tek sayfada toplayan bir listenin olmaması ve belirli teknolojilere dair somut önerilerin sınırlı kalması bulunuyor.
  • Sonuç

    • Bu kitap, debugging'in temel ilkelerini öğrenmek veya hatırlamak için yararlı; hem yeni başlayanlara hem de uzmanlara yardımcı oluyor.
    • David A. Wheeler kitabı güçlü biçimde tavsiye ediyor ve temel ilkelerin önemini vurguluyor.

1 yorum

 
GN⁺ 2025-01-14
Hacker News görüşleri
  • Hatalı kodu düzeltme cazibesi büyüktür, ancak çalışan kodu bozmak, bozuk kodu düzeltmekten daha kolaydır. Noel ışıkları örneğinde olduğu gibi, sorunu bulmak için en küçük çalışan örnekle başlamak etkilidir

  • Sorun çözerken önemli olan panik yapmamaktır. Net düşünmek gerekir ve iyi bir yönetici, sorun çözmeye odaklanabilmeniz için destek olur

  • git bisect, birçok commit arasından soruna yol açan commit'i bulmak için kullanışlıdır. Özellikle büyük kod tabanlarında sorunu hızlıca bulmaya yardımcı olur

  • Sistemi anlamak önemlidir, ancak tüm kılavuzları okumak gerçekçi değildir. Pratik bir yaklaşım gerekir

  • Doğru dosyayı doğru makinede düzenlemek önemlidir

  • Sorun çözme zihniyetini geliştirmek için önerilen kitaplar:

    • "The Martian" by Andy Weir
    • "Zen and the Art of Motorcycle Maintenance"
    • "The Three-Body Problem"
    • "To Engineer Is Human" by Henry Petroski
    • "Surely You're Joking, Mr. Feynman!"
  • Ek kurallar:

    • "Bunun sizin hatanız olduğundan şüphelenin". Önce kod değişikliklerinden şüphelenmek gerekir
    • "Bir bug bulursanız, onunla ilgili başka sorunları da arayın". Aynı türden sorunlar başka yerlerde de ortaya çıkmış olabilir
    • "Optimizasyonu kullanıcılar ve bakım yapan programcılar için önceliklendirin"
  • Regression'ı önlemek için bug'ı CI'a test olarak eklemek gerekir. Düzeltmeden önce ve sonra CI'ın başarısız olup başarılı olduğunu doğrulamak gerekir

  • Debugging'den sonra da iş bitmiş sayılmaz. Her bug için üç soru sormak gerekir:

    1. Bu hata başka yerlerde de var mı?
    2. Bu bug'ın arkasında gizlenen bir sonraki bug nedir?
    3. Bu tür bug'ları önlemek için ne yapmak gerekir?
  • Sorunu en az kurulumla yeniden üretmek önemlidir. Çoğu durumda bug bu şekilde bulunabilir. Kodun yarıya bölünerek tam olarak hangi kısmın hatalı olduğunun bulunması etkili olur