데이터 구조, 알고리즘을 제대로 이해하면 어려운 프로그래밍 문제를 쉽고 명쾌하게 풀 수 있다.
나는 프로그래밍을 거의 독학으로 배웠기 때문에 입문한 초기에는 데이터 구조와 알고리즘에 대해 잘 몰랐다. 탑코더TopCoderblog사이트에서 다른 이들과 경쟁해보기 전까지는 이런 부분이 중요하다는 사실도 몰랐다. 탑코더에서는 알고리즘과 데이터 구조를 잘 알면 상당한 경쟁 우위를 점할 수 있다. 알고리즘과 데이터 구조에 관한 지식을 익혀서 문제 해결에 활용하기 시작하자 전에는 어떻게 풀어야 할지 감도 오지 않았던 문제를 아주 쉽고 재미있게 풀 수 있었다. 그런 경험을 통해 진짜 프로그래밍 세계에서 이러한 기술이 얼마나 유용한지 금세 깨달았다.
사실 나는 이 분야가 소프트웨어 개발에서 가장 재미있는 영역이라고 생각한다. 아주 어려운 문제를 풀어가는 과정에서 데이터 구조와 알고리즘을 활용해 깔끔하고 명쾌한 해결책을 제시할 때 큰 보람을 느낀다.
게일 라크만 맥다월Gayle Laakmann McDowell이 쓴 탁월한 책인 『코딩 인터뷰 완전 분석Cracking the Coding Interview』blog은 이에 관한 최고의 참고 도서다. 적어도 이 글을 쓰고 있는 현 시점에서는 그렇다. 이 책은 알고리즘과 데이터 구조에 대해 알아야 할 거의 모든 것을 다룬다. 배우기 어려운 부분이긴 하지만 고생할 만한 가치가 있다. 이 분야에 대한 소프트웨어 개발자 대다수의 이해 수준은 한심할 정도로 낮다. 마이크로소프트나 구글 같은 회사의 면접을 통과하고 싶다면 이 영역을 반드시 잘 알아야 한다.