알고리즘을 이해하는 것은 어렵지 않다. 그냥 순서가 나열된 것뿐이니까. 하지만 이러한 알고리즘을 컴퓨터가 어떻게 수행하는 것인지 이해하는 것이 어려운 거다. 컴퓨터는 우리와는 다르게 생각하기 때문이다. 그래서 컴퓨터가 해당 알고리즘을 어떻게 수행하는지까지 이해해야 한다. 그뿐만 아니라 컴퓨터가 수행하는 그 알고리즘을 내가 직접 구현할 수 있어야 한다. 이것을 할 수 있냐 없느냐가 굉장히 중요하다.
실무에서도 다양한 알고리즘들을 만난다. 허프만 알고리즘, 다익스트라 알고리즘같이 이런 알고리즘이 아니라, 요구사항을 충족하기 위해 알고리즘을 만들어야 한다. 이런 알고리즘을 만드는 건 상대적으로 쉽다. 예를 들어서 사용자가 1000명이 넘으면 부하가 심해져서 서버를 늘려야 한다고 해보자. 알고리즘은 쉽다. 넘으면 늘린다가 끝이니까. 근데 이걸 컴퓨터가 수행하는 방식으로 변환해야 하고, 그것을 직접 구현해 내는건 상대적으로 매우 어렵다. 이 자료구조와 알고리즘 책으로 이러한 연습을 했다고 생각하고, 엄 청 많이 도움이 됐다.
제일 도움이 많이 됐던 부분은 추상 데이터 타입이다. 클라이언트가 필요한 것을 정의해서 API를 만들고 그 API를 충족하도록 구현하고 데이터 구조를 설계한다. 그냥 이건 우리가 개발자로서 하는 일이다. 그냥 지금은 스택, 큐, 최단 거리 이런 것으로 연습했을 뿐이다. 모든 일을 할 때 API를 생각해서 사용자 입장과 제공자 입장을 생각하고 그러한 추상적인 것을 타입으로 만들어서 연산을 제공하는 법을 배울 수 있었다.
코드를 읽는 능력도 많이 좋아졌다. 코드를 읽을 때 한 줄 한 줄 모두 무엇을 하려고 하는지 이해하려고 노력했다. 코드를 읽으면서 알고리즘이 동작하고 자료구조가 서로 협력하는 것을 배웠다. 재귀는 알고리즘을 이해하고 구현하는데 필수적이다. 역시 코드를 읽는 능력에 근성이 매우 중요하다. 물론 내가 가진 지식이 충분히 있어야 가능한 일이다.
쉽지 않은 책이었다. 나의 한계도 알게 해준 책이고 나의 가능성도 알게 해준 책이다.
자바스크립트로 직접 만들면서 배우는 - 자료구조와 알고리즘 강의 바로 가기
실습으로 마스터하는 OAuth 2.0: 기본부터 보안 위험까지 - OAuth 2.0 강의 바로 가기
기계인간 이종립, 소프트웨어 개발의 지혜 - Git 강의 바로 가기
코드숨에서 매주 스터디를 진행하고 있습니다. 메일을 등록하시면 새로운 스터디가 시작될 때 알려드릴게요!