더북(TheBook)

4.1 사례 연구

 

세계 체스 챔피언인 망누스 칼센(Magnus Carlsen)이 체스에 관해 했던 말을 프로그래밍 세계에 맞게 고쳐보았다. “훌륭한 선수는 체스 경기 내내 단기 메모리(short-term memory)보다는 장기 메모리(long-term memory)를 더 많이 사용합니다. 옛 경험을 살리는 거지요. 직관은 주로 지난 경험에 기반을 두기 때문입니다. 따라서 지금 눈 앞에 펼쳐진 새로운 상황에서 다른 수를 생각하는 것 또한 당신의 경험이므로 그중 어떤 수가 좋을지 잘 생각해야 합니다. 지난 경험 중 어떤 걸 불러내어 쓸지 끊임없이 결정할 수 있어야 합니다.”(http://www.worldchesschampionship2013.com/2013/11/secret-of-magnuscarlsens-chess.html).

정상급 체스 선수는 체스판을 굽어보며 순간적인 전략을 구사하고, 훌륭한 개발자는 키보드 위에서 아름다운 알고리즘 보따리를 풀어놓는다. 이때 경험으로 축적된 패턴에서 지식을 끄집어내어 ‘무엇을 쓰면 될지 끊임없이 결정할 줄 아는’ 사람이야말로 진정한 고수다. 예전에 겪은 경험과 지혜를 잘 살릴 줄 아는 사람은 모든 걸 하나하나 직접 만들려고 애쓰는 사람보다 경제적으로 깔끔하게 문제를 해결할 가능성이 크다.

패턴의 범위는 사소한 언어의 관용 구문(++i)부터 시스템 구조(n-계층 아키텍처)에 이를 정도로 넓다. 루프문으로 배열을 순회하는 것도 일종의 패턴인데, 이 장에서 예시할 코드만 보더라도 사람들의 경험을 바탕으로 어떻게 패턴이 쌓여 점점 나은 방향으로 개선되었는지, 패턴을 사용함으로써 얼마나 코드가 깔끔하게 제자리를 잡는지 알 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.