최근 Codility를 통해 알고리즘 문제를 다시 풀어보기 시작했다. (알고리즘을 다시 들여다보게 된 계기는 쉿...)
Codility 문제를 풀어보다보니 내가 그 동안 얼마나 레퍼런스 문서에 의존해 왔는지를 뼈저리게 체감하고 생각하는 계기가 된 듯하다.
Array에 어떤 메서드가 있었는지, 어떻게 사용했었는지 기억을 계속 더듬어야만 했고 정규 표현식의 특수 문자를 (특히 '?' 라던가... '?=' 같은 것들) 어떻게 작성했었었는지 문서를 보지 않고 작성하려니 여간 어려운게 아니더라.
물론 문서를 참고해서 문제를 해결하는게 잘못된 것도 아니고, knowledge, know-how보다는 know-where의 시대라고는 하지만 뭐랄까... 개발자로서 멍청해진 느낌이랄까...?
대학 학부 시절에 겸임교수(? 기억이 정확치는...)로 오셨던 어떤 회사 CEO 분이 계셨는데, 당시 클래스에서 이런 이야기를 한 적이 있다. (물론 정확한 워딩은 아닐거다)
Visual studio 쓰면서 Visual assist 쓰는 사람들 많은텐데, assist에 의존하지마라 그건 개발자들을 멍청하게 만드는 방법이다.
정확하게는 학습의 단계에 있다면 툴에 의존하지 말고 직접 다 타이핑하고 손에 익히도록 하라는게 골자였던 것으로 기억한다.
여담이지만, 하코사에서 이러한 이야기를 하면 난리가 난다. 학습단계에 있는 이들에게 emmet이나 자동 완성 기능을 쓰지 말라고 했다가는 무식한 소리이고 역적 수준의 취급을 받는다. (이건 실제로 경험한 일이다.)
무튼 이 이야기에 대해 나는 전적으로 동의해 왔고, 이 생각은 지금도 변함이 없으며 알고리즘 훈련을 하면서 다시금 뼈저리게 내가 이를 간과하고 있었다라는 것을 느끼게 되었다. assist가 단지 레퍼런스 문서로 바뀌었을 뿐인 상황이었다.
레퍼런스 문서가 없으면 기억에서 꺼내어 쓸 수 없거나 개발이 어려워 진다는 것은 레퍼런스를 치트처럼 사용하고 있다는 것일 거고 이는 분명 조금씩 조금씩 개발자로서의 능력을 저하시키고 있었을 거다.
그리고 그것이 알고리즘 훈련을 하면서 문서를 참고하지 않고 순수하게 내가 가지고 있는 지식 속에서 해결하려고 하는 순간 그 동안 내가 너무 무분별하게(?) 지식을 취하고 있었음이 고스란히 드러나버렸다.
레퍼런스 문서는 레퍼런스 문서로서 사용해야 한다. 영어 회화를 하자고 매 번 영사전을 들춰야 한다면 그건 밥벌이(?) 할 수준이 안된다는 말일거다. 적어도 밥벌이(?) 할 수준은 되어야지...