프로그램을 개발하는 실력도 중요하지만,

디버깅 실력이 진짜 실력이라고 생각한다.

디버깅을 잘하려면 어떻게 해야할까?

자신이 짠 코드에서 에러가 나면 금방 할 수 있다.

다름 사람이 짠 코드에서 에러나가면 버그 잡기가 쉽지 않다.

라이브러리를 사용할 때는 더욱 어렵다.  

프레임웍을 쓸때는 더더욱 어렵다.


이런 상황에서 디버깅의 고수가 되려면 어떻게 해야할까?

개발 6년차인 나를 돌이켜보니 이렇게 정리가 된다.


1. 다양한 에러를 접하자.

내가 낼 수 있는 에러는 그렇게 많지 않다. 

그렇다가 에러를 내려고 다양한 시도를 하기도 쉽지않다.

어떻게 하면 다양한 에러를 접할 수 있을까?

아주 간단하다. 주변 동료들이 내는 에러를 같이 잡아주는 것이다.

같은 환경에 같은 라이브러리를 쓰고 프로그램을 만들지만, 그들이 내는 에러는 

매우 다양하다. 디버깅은 많은 에러 상황을 만나고, 그 솔루션을 많이 알 수록 내공이 쌓여가는 것이다.

동료들의 에러잡아 주다 보면 , 날 점점 더 많이 찾게 된다. (귀찮을 수도 있겠지만...)

난 좀 더 쉽게 디버깅을 하고, 더 많은 에러 상황을 접하게 된다. 가만히 있어도 내공이 쌓이는 것이다.


2. 프로젝트의 전체적인 흐름을 읽자.

소스를 따라가면 된다고 생각하지만 어느 정도 규모가 되고, 프레임워크를 쓰고, 수많은 라이브러리를 

이용한다면 상상력에 의존하는 수 밖에 없다. 또는 소스 보다는 환경세팅의 문제일 때도 많이 있다.

이런 부분을 제대로 집어내려면, 그 프로젝트이 모든 요소를 다 알고 있어야 한다.

내가 모르는 부분에서 나는 에러를 어떻게 해결하겠는가. 

우선 에러가 나는 요소를 정확하게 집어내는 것이 제일 중요하다.

시스템 환경, 프로젝트 환경, 개발 툴, 프레임워크 설정, 라이브러리 등

프로젝트의 기반을 모르면 디버깅을 할 수 없다.


이런 부분을 제대로 이해하지 못한다면, 엉뚱한 부분을 지적하고, 잘못된 상상을 하고,

엄청난 삽질이 시작된다.

이런 부분을 제대로 이해하지 못한다면, 동료에게 도움을 요청하는 것이 제일 현명한 방법이다.

스스로 해결하겠다고 삽질을 시작하면, 몸과 마음은 엄청 고생하고, 일정을 일정대로 밀리는 

최악의 상황이 오게 될 것이다.


3. 에러를 정독하자.

에러 메세지를 잘 읽어보면 거의 모든 답들이 들어있다.

꽤 많은 사람들이 에러가 났다는 사실만 보고, 디버깅에 들어간다.

(또는 제대로 이해하지 않고..)

어떤 라이브러리, 어떤 클래스에서 문제가 되었는지..

그 메소드를 콜하는 클래스는 어디인지...

잘 살펴보기만 해도 삽질을 많이 줄일 수 있다.

디버깅의 도움을 요청하는 경우, 

그냥 잘 안된다, 전엔 잘 됐는데 갑자기 안된다.

등의 말을 한다면 에러 자체에 대한 이해를 전혀 못하는 있는 것이다.

에러의 정독은 디버깅의 시작이라 하겠다.


4. 버그에 상관없는 확실한 요소들을 배제해 나간다.

절대 이런 에러가 날 수없는 부분을 주구장창 보면서 에러를 찾는 경우가 있다.

그리고 말도 안되는 가설로 점점 더 확신을 하게된다.

자기 논리에 빠져버리는 것이다.

물론 이것이 쉬운 일은 아니다. 첨에는 모든 요소들을 다 의심해 봐야 한다.

하지만 내공이 쌓이면, 의심되는 요소들이 점점 줄어든다.

첫번째는 A, 두번째는 B, 세번째는 C.. 아니면 헬프...

D, E는 절대 아니다. 

만약 D,E에서 버그를 찾는다면, 자신이 몰랐던 새로운 요소일 것이다.

내공은 점점 쌓여간다...


5. 1석2조의 효과

디버깅 실력이 향상되면, 설계 능력도 같이 향상 된다.

사용자가 나의 라이브러리를 이렇게 잘 못 쓸수 있구나.

이런 부분을 잘 못 사용하면 에러가 나는구나..

디버깅 하며 쌓인 경험들이 설계에 묻어나는 것이다.


이런 과정을 거치다보면

간단한 코드를 짜더라도 한번 더 생각해 보게된다.

방어코드를 짜게 되고, 조금 더 좋은 프로그래머가 된다고 생각한다.







'note' 카테고리의 다른 글

자기 자신을 브랜드화 하라.  (0) 2013.03.22
Posted by 뚜벅이조
,