Skip to content

Debug It! 실용주의 디버깅 : 소프트웨어 개발자가 꼭 알아야 할 디버깅의 정석

Debug It! 실용주의 디버깅 : 소프트웨어 개발자가 꼭 알아야 할 디버깅의 정석 published on Debug It! 실용주의 디버깅 : 소프트웨어 개발자가 꼭 알아야 할 디버깅의 정석에 댓글 없음

대학교 졸업 후 처음으로 소프트웨어 개발 일을 했을 때 한 일은 주로 기존 솔루션(레거시)을 유지보수하는 일이었다. 그렇다 보니 문제를 해결하는 과정에서 디버깅을 해야 할 일이 많았고, 자체적으로 만들어진 테스트가 별로 없었기에 기존 코드를 디버깅하면서 코드 기반과 친해져야만 했다. 지금은 개발 중에도 테스트 우선 개발이나 단위 테스트를 경향이 점점 많아지곤 있지만 레거시 소프트웨어의 문제를 테스트라는 안전망 없이 디버깅에 의존해서 해결해야 하는 일은 그 당시 나한테는 쉽지 않은 일이었다.

지금도 그렇지만 학교에서는 디버깅 따위는 가르쳐주지 않는다. 소프트웨어 공학이나 프로그래밍 언어 수업을 들었어도 CS 이론을 배우기마저 급급한 나머지 정작 실무 현장에서 반드시 필요한 지식이나 훈련 따위는 감히 상상조차 하지 못하는 상황이었다. 그렇다 보니 디버깅 같은 것들은 직접 책이나 회사 선배들에게 배워야 하는 것이다. 그마저도 당면한 회사 업무에 초점을 맞춰 배우다 보니 좀 더 체계적인 이론적 지식이나 훈련을 하지 못했던 것이 아쉽게 느껴진다.

이 책을 읽는 내내 이런 생각이 들었다. 회사에서 일할 때 이런 책을 미리 읽어봤더라면 훨씬 더 업무를 체계적으로 처리할 수 있었겠다는 생각이 든다. 디버깅하면서 막혔던 부분이라든가 주먹구구식이 아닌 좀 더 정교한 디버깅 방법론을 배울 수 있었으리라는 생각, 그리고 이 책에서 택한 실용주의적인 디버깅 체계/접근법을 익혔다면 좋았으리라는 생각이 들었다. 요즘엔 업계에서 테스트가 강조되는 분위기라 디버깅의 중요성이 차지하는 위치가 예전만큼 못 하다곤 하지만 그럼에도 디버깅이라는 것은 프로그래머가 반드시 익혀야 할 필수 기술이 아닌가 싶다. 혹자는 디버깅이 Art에 가깝다고 했는데, 처음에는 이해하지 못했지만 지금은 이 책을 읽고 나서 조금은 이해할 수 있을 것 같다.

지금 코드의 구조도 안 좋고, 테스트나 문서화도 제대로 안 돼 있을 수 있지만 꽤 오랫동안 제품으로 시장에 나가 있었다면 대부분의 경우에는 제대로 실행될 것이다. 즉, 문제 도메인에 대한 엄청난 지식이 코드에 들어 있을 것이고, 이런 지식은 다른 식으로는 기록하기가 거의 불가능하다.
이런 지식은 미묘한 것이라 요구사항 분석으로 다시 찾아내기 어렵다. 예를 들어 ‘네, 보통은 그렇게 되는 게 맞습니다만 이런 특수한 타입을 기록하기 위해서는 다르게 동작해야 합니다’와 같이 제품에서 계속 튀어나오는 특수한 경우는 소소코드 외에는 문서를 포함한 그 어느 곳에도 기록돼 있지 않을 것이다. 소프트웨어를 다시 작성할 때 조심하지 않으면 이미 겪었던 문제들을 다시 겪으면서 계속 생기는 회귀를 고쳐야 할 것이다. (p.234)

IT 분야 기대 신간 정리, 2016-06-06

IT 분야 기대 신간 정리, 2016-06-06 published on IT 분야 기대 신간 정리, 2016-06-06에 댓글 없음

오랜만에 국내에 나온 책들 중에서 내 맘대로 흥미로워 보이는 책들을 정리했다.

어떤 아이라도 부모의 말 한마디로 훌륭하게 키울 수 있다

어떤 아이라도 부모의 말 한마디로 훌륭하게 키울 수 있다 published on 어떤 아이라도 부모의 말 한마디로 훌륭하게 키울 수 있다에 댓글 없음
어떤 아이라도 부모의 말 한마디로 훌륭하게 키울 수 있다
아델 페이버,일레인 마즐리스 공저/김희진 역

코딩호러, 제프 앳우드가 How to Talk to Human Beings에서 소개한 책이다. 육아에 관한 책이긴 하지만 이 책에서 권장하는 기법(?)들은 나이를 불문하고 모든 이들과의 대화에 유용하다고 설명한다. 번역서는 절판된 지 오래돼서 예전에 구입해둔 중고책으로 읽었는데, 1,000원에 불과한 중고책도 있어서 자녀나 대화법이 궁금한 분들이라면 한번 밑져야 본전이라는 생각으로 한번 구입해서 읽어보셔도 좋을 것 같다.

근래에 출간된 내 아이를 위한 감정코칭과도 궤를 같이하는 책이긴 한데, 감정코칭 책에 비해 좀 더 가볍게 읽을 수 있고, 중간중간 삽화도 있어서 지루하지 않게 읽을 수 있다. 아이가 자신의 감정을 제대로 컨트롤하지 못해서 부모와 충돌하는 경우가 많은데, 다양한 상황별 예시를 들고 있고 그때그때의 대처 요령을 알 수 있어서 좋다. 그리고 부모가 그럴 때마다 던지는 한마디 한마디를 아이들이 어떻게 받아들이는지, 좀 더 바람직한 방향으로 관계를 개선하고 대화를 이끌어갈 수 있는지 배울 수 있다. 그런 이유에서 코딩호러가 이 책을 추천하는 것일지도.

아이의 감정을 있는 그대로 인정해 주면 아이에게 큰 힘이 된다. 또한 아이가 자신의 내면과 만날 기회가 생긴다. 아이가 자신이 마음 속으로 어떻게 느끼고 있는지 분명히 알게 된다면 그러한 감정에 대처할 수 있는 힘을 얻을 수 있다. (p.41)

하지만 대다수의 아이들에게 “왜”라는 질문은 오히려 풀어야 할 문제만 더해줄 뿐이다. 애초의 고민거리에다, 이제는 고민하는 이유를 분석해서 타당한 이유까지 설명해야 하는 과제가 생기기 때문이다. (p.43)

다른 사람이 자신의 잘못을 들춰내 야단치면 혼자 잘할 수 있는 일도 더 못하게 된다. 누군가 당신에게 문제를 설명해 주기만 한다면 그 문제에 집중하는 게 훨씬 쉬워진다. (p.78)

아이들은 훈계나 설교, 기나긴 설명을 듣기 싫어한다. 아이들에게는 짧게 말할수록 기억에 오래 남고 효과도 더 좋다. (p.83)

재빨리 사과하는 아이는 그만큼 똑같은 잘못을 되풀이한다. 이런 아이들에게는, 자신이 저지른 잘못에 대해 진심으로 미안한 마음이 든다면 그런 마음을 행동으로 보여 주어야 한다고 가르치는 것이 중요하다. (p.150)