개발을 하다 보면 남이 쓴 코드를 읽고, 새로운 기술을 도입할 때 그 정확한 역할과 동작을 파악하기 위해 방대한 코드를 따라가며 이해해야 하는 경우가 많다. 이번 Virtual DOM을 구현하면서 남의 코드를 어떻게 학습해야 하는지 감이 잡혔다. 이론은 명저를 통해 다지고, 실습은 깃허브에 올라온 실제 서비스의 코드를 읽는 것이 가장 빠른 학습 방법이자 훌륭한 교재가 되지 않을까?
하지만 이 과정에서 내 기존의 알고리즘 학습 방식의 문제점도 뼈저리게 느꼈다. 그동안 알고리즘을 문제 풀이 위주로만 접하다 보니, 이것이 코딩 테스트 통과를 위한 것인지 진짜 알고리즘 공부인지 헷갈려 본질을 잊고 있었다. 이번 구현에서 HTML을 트리 구조로 파싱하고 DFS로 자식 노드를 탐색하면서 '과연 이게 최선의 방법일까?'라는 의문이 들었지만, 당장 아는 것이 없어 다른 알고리즘을 대안으로 적용할 수 없었다. 코치님께서 말씀하신 n x n 행렬 구조의 해시테이블 같은 접근법을 스스로 떠올리지 못한 것도 같은 맥락이다. 현재 방식의 비효율성을 체감하고 이를 개선해 내는 역량이 아직 많이 부족하다.
짧은 시간 탓도 있겠지만, 근본적으로는 길고 낯선 코드를 깊이 있게 분석하고 내 것으로 체화하는 연습이 더 필요하다. 따라서 앞으로는 단순한 알고리즘 문제 풀이에 매몰되지 않고, 실제 엔진들에서 알고리즘이 어떻게 자연스럽게 쓰이는지 직접 확인하고 싶다.
다만 5주차 동안은 일단 알고리즘의 핵심 개념을 단단히 다지고 온전히 내 것으로 만드는 작업에 집중할 것이다. 그리고 과정을 수료하고 나면 본격적으로 여러 오픈 소스들을 분석해 보고 싶다. 나도 오픈 소스에 기여해 보고 싶다!