결론부터 얘기하자면, 최적의 경로를 찾는 것보다 시도를 통해 나에게 맞는 성장 경로를 찾는 것이 훨씬 더 중요하다고 생각한다.
나의 경우는 자료구조 같은 기본기가 더 와닿았다. 컴퓨터는 도대체가 어떻게 돌아가는지 이해도 안 되고, 에러만 자주 나고, 게임 외에는 재미가 없었다. 하지만 자료구조나 관련된 추론은 합리적으로 느껴졌다. 그래서 꽤 오랫동안 관련된 실력을 향상시킬 수 있었고, ICPC나 IOI 같은 프로그래밍 대회도 참가할 수 있었다. 대회 성적이 괜찮을 때도 컴퓨터 소프트웨어에 대해서는 매우 무지했고, 기본적인 것도 이해하지 못했다.
다행히 저런 경력들을 살려서 좋은 소프트웨어 회사들에서 일할 기회가 생겼고, 서서히 소프트웨어 개발에 대해서 배워나갈 수 있었다. 그리고 뛰어난 사람들이 나와 매우 다른 경로를 거쳐온 것도 볼 수 있었다. 어떤 사람들은 컴퓨터를 다루는 것에 흥미를 느꼈고, 자연스럽게 소프트웨어를 더 잘 활용하고 싶은 동기가 생겼다고들 했다. 시간이 지나면서 자료구조 같은 기본기의 중요성에 대해 이해할 수 있었고, 오랜 시도를 통해 부족한 부분들도 서서히 실력이 늘었다는 것이다.
요점은 소프트웨어 산업은 충분히 복잡해서 다양한 경로가 있을 수 있다는 것이다. 다만 공통적으로, 실력을 쌓기 위한 시간이 꽤나 필요하다1. 그리고 성장을 지속하기 위해서는 그때그때 내 실력에 맞는 어느 정도 어려운 문제를 계속해서 해결해 나가야 한다 (deliberate practice). 실력이 늘었으면 그에 맞는 더 어려운 문제가 계속 있어야 한다는 것이다. 결국 최적의 경로를 찾는 것보다는 내가 현실에 안주하는 중인지 점검하고 나에게 맞는 다음 도전을 찾는 것이 중요한 듯하다. ∎
-
10년에 걸쳐서 프로그래밍 배우기 by Peter Norvig ↩︎