문제 해결
-
버젼 관리 시스템을 사용하여 문제를 해결하기Programmer/Programming 2017. 1. 6. 15:01
초반에는 문제의 원인을 충분히 넓게 잡아라."에서 중요한 디버깅 기법 하나를 간단하게 언급하고 넘어갔다. 분석의 과정이 없이 추론에 근거하여 새로 추가된 원격 기능과 캐싱 알고리즘만을 의심했다. 코드를 수정해도 상태가 개선되지 않았다. ... 중략 ... 이전 버젼과 차이점을 면밀하게 비교하면서 비로서 문제의 원인을 발견했다. 같은 환경과 같은 기능(즉, 로컬 파일 읽기)에서도 새 버젼에서 동일한 문제가 일어났다. 즉, 새로운 기능이 동작할 때 발생하는 것이 아니란 의미이다. 로깅 시스템을 리펙토링을 했는데, 이와 연관이 깊을 것으로 추정했고 다양한 테스트로 이를 검증했다. - 2014/07/15 - [Practice/Debugging] - 초반에는 문제의 원인을 충분히 넓게 잡아라. 버젼 콘트롤 시스템..
-
초반에는 문제의 원인을 충분히 넓게 잡아라.Programmer/Programming 2014. 7. 15. 18:09
파일 읽기 플러그인에 다수의 기능을 추가했다. 추가된 기능은 원격 파일 읽기, 버퍼 읽기, 캐시 등이 있다. 원격 파일을 읽는 기능이 이전 버젼에 비해서 과도하게 CPU를 점유하고 있었다. 분석의 과정이 없이 추론에 근거하여 새로 추가된 원격 기능과 캐싱 알고리즘만을 의심했다. 그리고 내 시스템과 연동하는 HTTP 프록시 서버의 문제일 수 있다는 생각도 했다. 이전에 이런 접근 방법을 경고하는 글을 적었음에도 나란 인간은 같은 실수를 되풀이했다. 경험과 직감에만 의존한 추측과 코드 수정, 그리고 결과 보기를 반복했다. 이후 동료의 조언으로 프로파일링의 접근을 시도하였다. 이번 문제의 원인을 찾기 위한 제대로된 분석의 첫번째 시도였다. 아뿔싸! 나란 인간은 또다른 문제를 가지고 있었다. 여러번의 프로파일링..
-
문제를 인지하고 정의하는 능력이 중요하다Leader/Developer Leading 2014. 7. 1. 11:51
박상민님의 카카오 김범수 이사회 의장의 인터뷰의 중요 내용을 적었다. 박상민 / Sang-Min Park @sm_park 5월 30일http://m.mt.co.kr/new/view.html?no=2011101714343203791 늦게 읽은 카카오 김범수님 기사. "문제를 해결하는 능력보다, 문제를 인지하는 능력, 문제를 정의하는 능력이 어마어마하게 더 중요하다" --> 진리라 생각함. 박상민 / Sang-Min Park @sm_park 5월 30일"자신이 좋아하는 영역에 대한 스킬을 쌓으면서 동시에 관점을 바꿔 세상을 볼 줄 아는 것, 그 두개가 딱 만나는 선에서 답이 나오는 거 같아요." --> 진정 고수다운 생각.
-
현상을 분석하여 문제의 원인을 찾아내라Programmer/Programming 2013. 11. 12. 17:46
현상을 재현하고 로그를 세심하게 살펴보고 필요하면 다른 도구(디버거, 성능 분석 도구 등)를 사용해서 분석한 후에 문제의 원인을 밝혀야 한다. 대충 추론하고 수정하여 적용한 뒤에 결과를 보는 방법은 생각보다 효과적이지 못하다. 소스를 공개하지 않은 상용 소프트웨어의 파일 읽기 플러그인을 개발하였다. 지금까지 탈없이 잘 쓰고 있었는데, 최근에 시스템에 문제가 생기면 플러그인과 상관없는 부분에서 행(hang)이 걸리는 문제가 발생하었다. 처음에는 문제의 원인을 추측하고 수정하고 검증하는 것을 반복하는 방법으로 접근하였다. 문제는 직감에 기반한 추론은 확율이 떨어졌다. 검증할때마다 여전히 문제가 발생하여, 수정과 검증의 과정을 여러번 반복해야 했다. 검증 과정을 준비하고 결과를 분석하는데도 상당한 시간이 들었..