March 21, 2020
회사를 다닐 때는 궁금하긴 한데 곧잘 찾아보지 않던 것 중 하나는 알고리즘이었다. 하고 있으면 재밌긴 한데 퇴근하고 자리에 앉아서 알고리즘을 하는 것은 참 힘든 일이었다. 근데 이번에 퇴사를 하게 돼서 무슨 공부를 할까 하다가 산지는 꽤 된 이 책을 보고 알고리즘 공부를 시작하게 되었다. 전에 근무하셨던 수석님과 스터디용으로 샀는데 회사도 바빠지고 수석님도 퇴사를 하셔서 반의반도 못한 채로 보지 못하던 책이었다.
이 책은 알고리즘에 대한 기초적인 지식을 쉽고 이해하기 편하게 알려준다. 성격이 급해서 읽다 보면 의아한 부분들이 있는데 계속 읽다 보면 뒤에서 그 내용을 그림으로 다시 설명해 준다. 물론 중간중간 이해가 안 돼서 검색을 통해 알아낸 내용들도 있지만 나처럼 알고리즘에 대한 지식이 전무하다시피 한 사람들이 처음으로 시작하기에는 괜찮은 책이다. 초반부는 그래도 이해가 쉬운데 레드 블랙 트리부터는 어려워서 구현된 코드를 참고해서 구현을 했다. 붙잡고 있으면 며칠을 봐야 할 거 같기도 했고 지금 이렇게 봐도 나중에 까먹으면 의미가 없기 때문에 꾸준히 오래오래 해야겠다고 생각했다. 알고리즘을 만든 사람들은 정말 창의적이기도 하고 그만큼의 노력도 하고 또 어떠한 문제에 대해서 정말 깊이 고민했겠다는 생각이 들었다. 이런 알고리즘들을 직접 구현할 일들이 있을지는 모르겠지만 어떤 문제를 깊이 고민해 볼 수 있는 귀한 시간이었다. 알고리즘을 그렇게 좋아하진 않던 나에게 알고리즘에 대해 흥미가 생기게 해준 고마운 책이다. 🙂
알고리즘에 관한 내용은 아니지만, 알고리즘을 공부하면서 같은 문제에 대해서 각자 다르게 작성한 코드들을 보면서 다양한 스타일을 배울 수 있었고, 코드로 성능을 개선할 수 있는 방법들은 무궁무진하다는 것을 새삼 다시 느꼈다. 다양한 코드들을 보면서 또 느낀 점은 개발하면서 코드 리뷰라는 프로세스가 포함되는 것은 정말 재밌는 일이고 필요한 단계라는 것이다. 팀원들이 어떤 사고로 개발을 하는지 어떤 스타일로 개발을 하는지 알 수 있기 때문에 리뷰어나 리뷰이나 당장은 피곤하고 귀찮을 수도 있지만 시간이 지나면 지날수록 서로에게 도움이 될 것 같다. 나는 아직 코드 리뷰 문화를 가지고 있는 회사에서 일해보지는 않았지만 다음에 들어가는 회사에는 코드 리뷰 문화가 꼭 있었으면 좋겠다. 🙏