2017. 6. 25. 03:46 독서 영역/Hanbit Readers
728x90



이번에 리뷰하게 된 도서는 "Effective DEBUGGING(부제 : 디버깅 지옥에서 탈출하는 66가지 전략과 기법)"이란 무시무시한 비법이 들어있을것만 같은 그런 책이다.

일단 이 책을 처음 받자마자 느낀점이 2가지가 있다.

첫번째, "책이 매우 얇다"라는 것이다. 255페이지라는 분량임에도 불구하고 일반책들의 2/3정도 두께이다.
두번째, "표지의 감촉이 매우 달랐다"라는 것이다. 여지껏 만져본 책 표지에서는 느낄 수 없었던 그런 느낌? 우레탄 느낌이라고 해야 하나? 매우 감촉이 좋았다. 다만, 지문자국이 너무 많이 남는다는 것은 함정!


자, 제목처럼 효과적인 디버깅을 위한 방법 66가지 전략과 기법이 매우 궁금해진다. 

먼저 이 책의 독자 대상은?
  • 경험이 풍부한 개발자 대상
라고 되어 있지만 
경험이 풍부한 개발자>라면 아마도 66가지의 내용중 2/3는 이미 알고 있거나 실천하는 방법일 것이라 생각한다.
경험이 풍부하지 않은 개발자>라면 신세계 또는 들어보았던 방법들로써 매우 유익할 것 같다고 생각한다. 


<Effective DEBUGGING>의 구성은?
총 8가지 범주에서 활용할 수 있는 66가지 디버깅 기법들을 소개하고 있다.
  • 고차원 전략
  • 범용적인 디버깅 기법
  • 범용 도구를 활용한 기법
  • 디버거 활용법
  • 프로그래밍 기법
  • 컴파일 시간 기법
  • 실행 시간 기법
  • 멀티스레드 코드 디버깅하기
챕터 1~8까지 주어졌지만 순서대로 읽을 필요는 없으며 필요하거나 관심가는 분야부터 읽으면 될 것 같다.



내가 선택한 Effective DEBUGGING 방법은?

자 그럼 이 책에서 소개하고 있는 66가지 중 직접 경험하고 공감갔었던 방법들을 선별해보았다.


  • 아이템1. 모든 문제를 이슈 추적 시스템으로 관리하기
  • 아이템9. 성공적인 디버깅을 위한 마음가짐
  • 아이템10. 효율적으로 문제 상황 재현하기
  • 아이템11. 코드 수정 후 결과 확인까지의 시간 최소화하기
  • 아이템18. 원격 디버깅 환경 구축하기
  • 아이템26. 버전 관리 시스템으로 버그 원인과 히스토리 추적하기
  • 아이템32. 루틴 사이의 호출 흐름 추적하기
  • 아이템35. 코어 덤프 다루기
  • 아이템39. 동료 검토하기
  • 아이템42. 단위 테스트 사용하기
  • 아이템51. 정적 분석 도구 활용하기
  • 아이템55. 오류가 발생한 즉시 프로그램 중단하기


경험상 선별된 위 12개의 방법들의 내용은 책을 읽어보시면 다들 공감하실 것이라 예상된다.

"아이템9. 성공적인 디버깅을 위한 마음가짐"이라는 방법이 효과적인 디버깅을 하기 위한 가장 1순위가 아닐까 싶다. 

"아이템39. 동료 검토하기"에서는 "고무 오리 기법(Rubber duck technique)"이라는 것을 소개한다. 어떤 의미인지 풀어보면; 자신이 작성한 코드를 다른 사람에게 설명하는 방식으로 문제를 분석하고 찾는 기법으로써 의심되는 코드 또는 포인트를 동료에게 차근차근 설명하다보면은 자신이 실수하고 있던 부분을 스스로 발견하게 된다는 내용이다.

아이템39번 같은 경우는 정말 공감한다.

누군가에게 설명하려고 하면 자신의 코드를 조금 더 냉정하게 바라보게 된다.

그 때 자신의 실수를 확인할 수 있는 것이다. 놀랍다 놀라워!



책을 덮으며...

이 책의 저자는 35년 이상의 경험을 가지고 책을 썼다고 한다. 

분명히 이 책에서 설명하고 있는 66가지 방법 이외에 수많은 방법들이 있을 것이다.

아마도 그 중에서 이 66가지 정도는 이해하고 실천 또는 활용하기를 바라는 핵심포인트만 나열했을것이란 생각이 든다. 물론 책의 66가지 방법이 다양한 IT분야에서 활용할 수 있는 방법은 아닐 수 도 있다. 하지만 실질적인 방법은 되지 않더라도 충분히 시야를 넓혀줄 수 있는 그런 내용임은 틀림이 없다. 


개인적인 생각으로는

이 책은 경험많은 개발자분들이 읽으신 후 후배 개발자분들에게 조언해주는 방법도 매우 좋을 것 같다는 생각으로 글을 마친다.  

728x90
posted by acedon