Daha Verimli Hata Ayıklamak İçin 7 Öneri
Herkese Selamlar ! Bu yazımız içerisinde yazılım geliştirmenliğinin temeli olan hata ayıklama yani debug yapmaktan bahsedeceğim sizlere. Uzun yıllardır kod yazıyorum ve hala istediğim gibi yazamıyorum . Uzun yıllardır hata ile karşılaşıyorum fakat her farklı projede mantık ve kodun işleyişi değiştiği için sorunu çözene kadar can çekişiyorum. Evet zor . Hatta bazen çok can sıkıcı ama biz yazılım geliştirmenleri için aslında en önemli fırtsatlardan biri her yeni projede hata ayıklama ve kod yazma mantığımızı daha iyi seviyelere taşımaktan geçiyor. Bu kadar hevesli ve istekli konuşuyorken her şeyi başarı ile tamamlayıp gün sonunda evde ne yerken , ne izleyeceğinizi düşünürken bir açılan ticket ile her şey yerle bir olabilir. Belirli bir süre sonra buna zaten alışırsınız. Bunların hepsi yazılım geliştirmenlğinin aslında doğasında var. Peki sizler için klavyeme aldığım bu 7 öneri tam olarak hadi beraber bakalım !!!
Kod üzerinde bir değişiklik yapmadan önce aynı hatayı defalarca oluşturun
Evet doğru okudunuz. Şaşırmanıza gerek yok. Bir problemi çözmenin en iyi yolu onu anlamaktan geçer arkadaşlar. Hatayı kusursuz bir şekilde yeniden oluşturabiliyorsanız o hatayı anlamışsınız demektir ve yeterince iyi anladıysanız çözüme yaklaşıyorsunuz anlamına gelir.
Çoğu zaman bir hata ile karşılaştığımda gelen maili ya da beraber çalıştığım kıdemli yazılım geliştirmenini dinlemeden harekete geçtiğimi farkettim . Gelişigüzel varsayımlar yaptım , değişiklikler yaptım üstelik neden olduğunu bilmeden , kodu kontrol ettim ve çalıştığını gördükten sonra bunuda yaptım diye sevinip eve gittim . Ertesi gün işe geldikten sonra ise aynı problemin yeniden karşımda olduğunu gördüm . Belki de çözmüştüm sorunu fakat farklı senaryolar ile denememiştim . Aynı hatayı yeniden üretmeye çalışmamıştım. Bunu denemediğim için farklı durumlarla karşılaşabileceğimi düşünmeden hatayı çözdüğümü düşündüm. Denemenize rağmen hatayı yeniden üretemiyorsanız farklı birinin bu hatayı yeniden üretmesini bir müşteri gibi test etmesini sağlayın. Sizin firmanızda artık hangi ünvan ile hangisi varsa tester , iş analisti ya da kalite kontrol yapan kişi de olabilir. Zamanımız değerli çünkü bir sorun üzerinde geçici çözümler ile ilerleyip yeniden o probleme dönemeyiz .
Stack Traces i Anlamak
Bundan tam olarak bahsetmeden önce stack trace ne demek sizlere ondan bahsetmek istiyorum . Gelistirilmis olan yazılımda bir problem ile karşılaşırsanız bilgisayarın adım adım işlemeye çalıştığı kodların takibini sağlayarak problemin oluşmasından kaynaklı kod bloklarını en ufak bir adımını bile atlamadan takip etmek anlamına gelir. Çoğu programlama dilinde de bu tarz mekanizmalar söz konusudur .
Tabiki saniyeler içerisinde kodu takip edip anlayıp çözüme kavuşturmak muazzam bir yetenektir . Henüz ben böyle birini görmedim yalnız . Burada esas amaç o hataya sahip olan kod satırlarının en kök kısmına kadar inebilmektir. Kulağa korkunç gelsede bunu yapmak zorunda kalabiliriz.
Test Case Yazmak
Burada size esas söylemek istediğim Test Driven Development . Aslında TDD için ayrı bir blog yazısı hatta blog serisi bile çıkar diyebilirim . TDD üzerinde mantık ciddi anlamda kolay uygulamanızı yazmaya başlamadan önce test yazıyorsunuz ve bu test başarısız oluyor . Bu testi başarılı hale getiriyorsunuz . Ne kadar test yazdıysanız bunların hepsini gerçekleştiriyorsunuz . Takiben ise uygulamanız üzerinde iyileştirme ve temizleme işleri yapıyorsunuz. Bu sayede karşılaşabileceğiniz hataların çoğunu elimine etmiş oluyorsunuz ve işiniz kolaylaşıyor.
Hata Kodunu Bilin
Bunu duymak size biraz garip gelebilir ama hata kodunu bilmek ve ona göre yaklaşmakta ciddi anlamda işimizi kolaylaştırmakta. Hata kodları aslında kategori şeklindedir.
- 1xx: Bilgilendirme amaçlı
- 2xx: Başarı durumu
- 3xx: Yönlendirme amaçlı
- 4xx: Kullanıcıdan kaynaklı
- 5xx: Sunucudan kaynaklı
Daha detaylı örnek verecek olursak , yine popüler olanlardan seçelim.
- 401 Unauthorized (yetkisiz)
- 403 Forbidden (yasak)
- 404 Not Found (erişmek istediğiniz dosya sunucu üzerinde bulunamadı)
- 500 Internal Server Error (istediğiniz işlemi herhangi bir sebepten ötürü server gerçekleştiremiyor)
- 502 Bad Gateway (Backend tarafından geçerli response dönmüyor)
- 503 Service Unavailable (Server üzerinde aşırı yük var ya da bakım altında )
- 504 Gateway Timeout (Backend üzerinden beklenen zaman içerisinde response dönmedi)
Arama Motorlarını Verimli Kullanın
Arama motorunuz ne olursa olsun kesinlikle bir çözüm yolu , sizinkine benzer bir hata ya da uyarlayabileceğiniz bir mantık ile karşılaşma ihtimaliniz çok yüksek. Bunu en az bir kere ana dilinizde ve en az bir kerede hakim olduğunuz yabancı dilde yapmanızı öneririm. Emin olun çıkan sonuçlar arasında tatmin edici bir şekilde farklılıklar meydana gelecektir.
Bir Bilene Sorun
Yeterince her şeyi denediğinizi düşünüyorsanız bir bilene sormak mantıklıdır fakat sormanın dozunu kaçırmayın. Soruyu cevaplayan kişiler bir süre sonra sizinle aynı ekipte yer alsalar bile rahatsız olacaklardır. Tabi bunu söyledik diye o zaman farklı kişilere sorarım diye aklınızdan geçirmeyin . Olabildiğince kendiniz çıkmaya çalışın o hatanın içersinden . Her çıkamadığınızda ise farklı bir yol deneyin . Ne zaman her şeyi denediğinizden eminsiniz o zaman birilerinden yardım isteyin ama dediğim gibi bunun tadı kaçmasın. Abarttığınızı düşündüğünüz ya da düşündükleri anda size yardım etmemek için bahane üreteceklerdir. Aldırmayın yolunuza devam edin tabi bu tarz bir durum can sıkıcı olsada tek odaklanmanız gereken nokta uygulamanız olsun. Mantıken onların size yardımcı olmamaları size çok fazla yarar sağlar. Bunu fırsata dönüştürmeye çalışın her defasında .
Kendinizi Ödüllendirin
Karşılaşmız olduğunuz her bir zorluk aslında sizin için bir sınav . Bazen kolay bazen zor hatalar ile karşılaşabilirsiniz . Kendi kişisel motivasyonunuzu arttırmak ve yeniden enerji toplamak için kendinizi ödüllendirmeyi ihmal etmeyin . En önemlisi ise bu ödüllendirme esnasında o ödülü hangi adımları izleyerek kazandığınızı yani hatayı nasıl çözdüğünüzü sakın unutmayın. Emin olun işinizi ciddi anlamda kolaylaştıracaktır. Şimdilik bu kadar ! Yazımı okuduğunuz için çok teşekkür ederim sonra ki yazılarda görüşmek üzere….
Eline sağlık, çok güzel bir yazı olmuş.
Cok tesekkur ederim Hakan Hocam.