본문 바로가기
회고/영상, 칼럼, 스터디 회고

갑작스런 문제 해결하기(feat.워드 커닝햄의 "Hm... That's interesting.)

코동이 2023. 1. 5.

개요


 오늘 회사에서 코드를 고친 부분에서 오류가 나서 제대로 파일 다운로드가 되지 않았습니다. 이 작업이 당장 급한 것은 아니었으므로 수정하고 다음날 하도록 안내를 했는데 실수를 맞닥뜨렸을 때 어떻게 대응해야 하는지 생각을 했습니다.

 

 

문제상황


 기존에 사용하고 있던 쿼리문이 고도화되면서 WHERE절에 조건을 추가했습니다. 따라서 WHERE 조건에 따라서 SELECT 결과값이 달라집니다. 문제는 제가 A쿼리문이 한군데서만 쓰이고 있다고 생각해서 수정했는데, 알고보니 공통코드쪽에서도 같은 쿼리를 사용하고 있었고, 공통 쿼리 쪽 쿼리에는 WHERE절에서 NULL조건이 들어가 아무런 조회도 되지 않았고 파일 다운로드해도 아무런 데이터가 없었던 것입니다.

 

 

이 문제를 다루면서 김창준님께서 칼럼에 쓰신 내용이 떠올랐습니다. 워드 커닝햄과 짝 프로그래밍 과정에서 문제가 발생했을 때 "Hm... That's interesting." 이라고 말한 대목입니다.

 

 

Hm... That's interesting.


워드 역시 코딩을 하다보면 예상치 못한 상황을 접합니다. 그렇지 않다면 학습을 하고 있지 않은 것이죠(안전 영역으로만 다니는 겁니다). 다른점은 그 상황에서의 반응과 태도입니다.

코딩을 주욱 합니다. 실행 시킵니다. 당연히 멋지게 결과가 나오리라 생각하며 엔터를 누르는데, 어라라랏! 에러가 뜹니다. 머리 속이 깜깜해집니다. 심박이 높아집니다. 주변에 누가 볼까 걱정도 듭니다. 머리에 열이 나기 시작합니다. 5분 정도 지나고 나면 나도 몰래 똑같은 짓을 반복하고 있고(삽질이라고 합니다) 될듯 될듯 뭔가 풀리지 않습니다. 이게 일반적인 프로그래머입니다.

워드는? 뭔가 이상한 에러가 났습니다. 워드가 말했습니다. "Hm... That's interesting." 흠, 이거 흥미롭군요.

 

아무리 유능한 개발자라도 문제 상황을 직면합니다. 이는 굉장히 자연스러운 것입니다.

 

 

당시 상황 회고,  실수 보완방법, 추가사항


  • 당시 상황 회고 

정말 꼼꼼하고 다양한 테스트를 통해서 코드 자체에는 문제가 없다고 확신했습니다. 그래서 파일 다운로드가 제대로 되지 않았을 때 오히려 문제가 무엇인지 궁금할 지경이었습니다. 알고보니, 테스트 서버에서는 FTP 서버 경로가 운영과는 달라서 파일 다운로드 테스트는 제대로 하지 않았었고 여기가 문제였습니다. 

 

 내 선에서 문제가 해결되지 않아 팀장님께 바로 보고드렸습니다. 내가 감당하지 못할 것 같은 실수나 위기 순간에는 빠르게 상사에게 보고하는게 가장 빠른 해결책이라고 생각했습니다.  만약에 이 문제를 엄청난 실수로 생각하고 감추기 급급하거나 혼자서만 고민하였다면 바로 해결하지 못했을 것입니다. 오히려 현업에 응대가 느려졌을 뿐 아니라 급한 일에는 야근까지 해야 할 수 있습니다. 하지만 워드의 반응처럼 흥미로운 것으로 생각해서 최대한 심리적 안정을 찾기 위해 노력했고 결국에는 해결 될 것이라는 희망을 가졌습니다. 

 

 따라서 지체없이 팀장님께 상황과 문제점을 보고 드렸습니다. 팀장님은 해당 개발 소스들을 어느정도 알고 계셨고 머리를 맞대어 약 30분 만에 원인 분석 및 해결을 할 수 있었습니다.

 

 

  • 실수 보완 방법

 회고를 하여 얻은 교훈은 쿼리문이 단순히 해당 패키지 뿐만 아니라 공통클래스처럼 다른 패키지에서도 사용될 수 있다는 점입니다. 그렇다면 예방방법 첫번째는 공통코드 쪽의 쿼리문들을 별도의 쿼리로 분리하는 것입니다. 둘째는 쿼리문을 수정할 일이 있으면 어떤 쿼리문이 공통클래스쪽에 있는지 확인하는 작업을 하거나, 어떤 쿼리문이 중복되는지 리스트를 만든느 것입니다. 이 내용을 팀원들에게 공유하고 서로 조심하기 위해 노력한다면 다음에도 같은 실수를 할 확률을 현저하게 줄어듭니다.

 

 

  • 추가사항 - 팀에 공유하기

 하지만 아쉬운 것은 팀장님은 그냥 코드를 짜면서 저지른 실수로 생각하고 끝났습니다. 저는 저와 같은 문제가 공유되지 않으면 언제든지 다른 사람들도 똑같은 실수를 할 수 있다고 생각합니다. 따라서 이 문제를 금요일 리뷰시간에 리스트를 만들어 공유할 예정입니다. 지속적인 소통과 서로를 이해하고 같이 해결하려는 자세는 팀을 더욱 단단하고 효율성 높은 조직으로 갈 수 있다고 생각합니다.

 

 

 

참고


http://agile.egloos.com/2661392

반응형