shurain

Harmless stuff is for the weak.

복기

Jan 01, 15

대학 초에 무슨 바람이 불었는지 바둑을 공부하게 되었다. 어릴 때 잠시 바둑 학원에 다닌 적이 있었지만 이미 행마나 포석 및 정석 등은 다 잊어버린 지 오래고 바둑의 규칙이나 기억하고 있었던 정도였다. 바둑을 두면서 실력을 늘리는 가장 좋은 방법은 복기라고 한다. 나는 무작정 이창호의 기보를 잔뜩 뽑아두고 이를 따라두기 시작했다. 수의 의미를 읽기에는 기력이 부족하여 모양만이라도 익히고자 노력하였다. 이런 방식으로 굉장히 짧은 기간에 기력이 많이 상승했었다.1

2006년쯤 성공을 반성한다는 글을 읽고 감명을 받았던 기억이 난다. 바둑과 함께 나에게 복기와 반성이라는 화두를 던져줬던 글이다. 여기에서는 실패 외에 성공도 함께 반성해야 한다는 이야기를 한다.

After solving a challenging problem, I solve it again from scratch, retracing only the insight of the earlier solution. I repeat this until the solution is as clear and direct as I can hope for. Then I look for a general rule for attacking similar problems, that would have led me to approach the given problem in the most efficient way the first time. Often, such a rule is of permanent value. By looking for such a general rule, I was led from the previously mentioned parsing algorithm based on recursive coroutines to the general method of writing nondeterministic programs, which are then transformed by a macroexpansion into conventional deterministic ones.

To sum up, my message to the serious programmer is: spend a part of your working day examining and refining your own methods. Even though programmers are always struggling to meet some future or past deadline, methodological abstraction is a wise long term investment.2

현실적으로 매 순간을 복기하고 반성하는 것은 불가능하다. 하지만 자명하지 않은 문제를 다룬 경험은 복기하고 반성해 볼 필요가 있다. 가능하다면 이런 복기를 통해 성공과 실패의 정수를 찾아내고 이를 정제하여 활용할 수 있도록 해야 한다.


  1. 기력이 빨리 상승했던 것은 사실이나 방학 때에 잠깐 집중적으로 했던 것이기에 여전히 바둑은 잘 못둔다.

  2. The Paradigms of Programming