어제 피곤하다고 일찍 잠이 들어 오늘 낮이 되어서야 글을 쓴다.
잠도 잘 안와서 새벽 3시 반이 넘어서 잠이 들었던 것이 문제였지만 말이다.
오늘 과제를 구현하면서 큰 실수를 발견했다.
어찌보면 지금이라도 찾아서 다행인 것도 있겠지만 잘 생각해보면 이런 실수는 해서 안됐다는 생각이 들었다.
직렬화 버퍼를 만들고 다른 서버에서 적용했을 때 문제가 없었던 이유는 해당 코드를 사용하는 부분이 없었기 때문인데...
만약 문제가 있는 함수를 사용했었더라면 큰 일이 생겼을 것이다.
그나마 천만 다행인 것은 이번에 채팅 서버를 만들면서 문제가 생겼는데 그걸 찾아낸 것이다.
계속 메시지 전달이 이상하게 되고 있어서 어디서 잘못만들었을까를 미친듯이 고민했던 것 같다.
처음에는 로직 부분에서 메시지 생성을 하는 부분이 잘못되었을까 하고 봤고.
로직 부분에는 문제가 없어서 결국 메시지 내용으로 들어가는 데이터를 보다보니 결론을 낼 수 있었다.
애초에 구현했던 자료구조를 잘못 구현했던 것이다.
사실 굉장히 사소한 실수였는데 아마 복사 붙여넣기를 하다가 생겼던 것으로 추측된다.
어찌보면 별것 아닌 실수지만 데이터 오염이 될 수 있는 경우를 충분히 맛볼 수 있었던 계기였다.
그러면서 동시에 버그가 생긴다면 우선 원인이 될 수 있는 부분을 확실하게 특정지을 수 있는 근거를 찾아야 한다는 것.
오늘 수업에서도 어느 정도 다뤘던 내용이지만 처음에는 내가 만든 것에서 문제를 찾는 것이 먼저다.
내가 만든 로직이나 다른 부분들에서 정말로 자명하다고 할 수 있을 만큼 문제를 찾아봐야 한다.
그럼에도 문제가 없다면 그 다음에 생각해볼 것이 외부 요인이고.
어떻게 보면 프로그래밍도 사람 사는 이치와 비슷하다는 생각이 든다.
남탓을 하기 이전에 일단 내가 잘못한 것이 무엇이 있을까를 먼저 보고.
그 다음에 정말 내가 잘못한 것이 없다라면 그 이후에서야 외부에서 원인을 찾듯이.
모든 답은 내 자신에게 있는 것처럼 내가 만드는 프로그램 코드도 비슷하다는 생각이 드는 하루였다.
항상 내가 완벽할 것이라는 자신을 가지는 것도 좋지만 그 자신을 갖기 이전에 충분히 증명하는 것.
이게 더 중요하다.