Debugging - Psikolojik Metodlar
Yazan : Yusuf Nar, Nisan 01, 2008, Salı 13:06
Etiket(ler) : debug
Dürüst olmak gerekirse önümüze çıkan hataların büyük çoğunluğu kendi perspektif sınırlarımızdan kaynaklanıyor. Özel olarak kullandığımız bir API'nin sonuçlarını idrak edememekten, ayırdığımız memory alanını boşaltmayı unutmaktan yada düşündüğümüz şeyi tam olarak koda aktaramamaktan... Tabi birisi çıkıp diyebilir ki debugging, bilgisayarın ne yapacağını söylemek ile bilgisayarın ne yapacağını düşünmek arasındaki farkı bulmaktır. Öyleyse bug'ları ayıklarken daha etkili düşünmek için ne tür mantıksal teknikler işleteceğimize dair kafa yormak anlamlı olacaktır.
Yardım Alın
Bir bug üzerinde saplanmış kalmışken, bir meslektaşınızı yakalayıp hatayı onlarla da paylaşmak ve beraber gayret sarfetmek faydalı olabilir. Meslektaşınızın tavsiyeleri gerçekten çözüm üretmese de yardımcı olabilir. Meslektaşınızın rolü sadece sizi pasif bir halde dinlemektir ve bu belki size daha önce olmadığı şekilde bir bakış açısı sunabilir.
Spekülasyon Yapmayın
Arthur C. Clarke şöyle yazar;
Yeteri kadar ilerlemiş bir teknoloji sihirden farksızdır.
Bence yeteri kadar gizemli bir bug için de bu böyledir. Debugging sürecindeki en büyük tuzaklardan biri sebebi üzerine anlamsız spekülasyonlara başvurmaktır. Bu tarz spekülasyonlar ile belki başarılı olabilecek deneme yanılma çabaları olarak çözüm bulmaya çalışılır ve bu verimsiz artı zaman tüketen bir uğraştır. Eğer zihninizde bütüncül bir strateji ve yaklaşım kurgulamadan rastgele denemeler yapıyorsanız bundan vazgeçin ve daha rasyonel bir metod düşünün.
Araçları Sorumlu Tutmak için Acele Etmeyin
Belki, hatayı kendi yazdığınız kodda bulmadan önce, tecrübelerinize dayanaraktan
Bu mutlaka derleyici hatası olmalı
şeklinde yaklaşmış olabilirsiniz. Hatayı halletiğinizde ise gelecekte yargılamada bulunmak için acele etmeyeceksinizdir. Geliştirme araçlarında bug olması ihtimalini tahmin etmek hata ayıklamanın makul bir yönüdür. Eğer henüz beta aşamasında olan kararsız bir geliştirme aracı kullanıyorsanız, hatalı olduğu konusunda haklı olabilirsiniz. Ama yıllarca piyasada olan ve alanında güvenilirliğini kanıtlamış bir derleyici kullanıyorsanız dereleyicinin hatalı exe oluşturduğu sonucuna varmak için diğer tüm ihtimalleri değerlendirmiş olmanız gerekir.
Problemi de Sorunu da Anlamış Olmalısınız
Programcıların
Bug kendiliğinden kayboldu
yada
Diğer birşeylerin yan etkisi olarak hata düzeldi
türünden iddiaları yaygın olmayan şeyler değil. Bu tarz ifadeler gösteriyorki; programcı hatanın komple bir sebebini yada çözümünü araştırmıyor. Hatalar gizemli bir şekilde kaybolmazlar. Eğer bir hata, birisi onunla kasten ilgilenmeden aniden düzelmişse, hala kodlarda bir yerde sorunu bulmak için şansınız vardır. Sadece akabindeki değişiklikler onun davranış şeklini değiştirmiştir. Hatanın kendiliğinden düzeldiğini yada kaybolduğunu asla kabul etmeyin. Benzer şekilde; yaptığınız bazı değişiklikler hatayı düzeltmiş gibi görünüyorsa ve nasıl olduğu konusunda tam emin değilseniz, değişikliğin akıllıca olduğunu düşünerek kendiniz kandırmayın. Tekrar söyleyelim;
Gerçek sorunu gidermekten ziyade hatanın sadece karakterini değiştirmiş olursunuz.
Ara Verin
Hata ayıklarken yada problemleri çözerken aşağıdaki olaylar dizisini hatırladığımdan çok daha fazla kere tecrübe etmişimdir. Bir problemle saatlerce uğraştıktan ve sinir bozucu bir hal aldıktan sonra, öyle bir noktaya gelirimki artık bıkar, yorgun düşerim ve eve giderim. Sonraki sabah tekrar hatanın üzerine gitmek için otururum ve ve ilk yarım saat içinde çözüme ulaşırım.
Birçoğumuz rastlamıştır; problemin üzerinde yoğun bir konsantrasyondan sonraki ufak bir dinlenmeden sonra çözümler daha bi kolaylaşır.
Birden Fazla Sebep Olabileceğini Gözönünde Bulundurun
Problemlerin teşhislerini fazlaca basitleştirmek konusunda güçlü bir eğilim vardır. Teşhisin böyle basitleşmesi cazibeli ve kesinlikle adreslemesi daha kolaydır. Birçok kere hataların gerçekten tek bir sebepten kaynaklandığı gerçeğine rağmen her zaman böyle olmayacağı durumlar vardır.
Konuyla ilgili diğer başlıklar;
Debugging (Hata Ayıklama)
Genel Prensipler
Teknik Metodlar
Psikolojik Metodlar (şuan burdasınız)
Hata Önleme Yöntemleri
Sonuç