# Heuristic and Pattern

Feb 21, 15

사용할 수 있는 도구의 목록을 들고 있다는 것은 상황에 가장 걸맞은 도구를 꺼낼 수 있음을 뜻한다. 수년 전 조지 폴리어George Polya의 책 How to solve it을 읽으며 사실 내용은 뻔하다고 생각했다. 하지만 폴리어는 어떤 방법을 사용해서 목록을 뽑은 것일까? 생각하는 도구도 비슷하게 목록화할 수 있을까? 하는 질문이 계속 이어졌다.

The following pages are written somewhat concisely, but as simply as possible, and are based on a long and serious study of methods of solution. This sort of study, called heuristic by some writers, is not in fashion nowadays but has a long past and, perhaps, some future.

Mathematics presented in the Euclidean way appears as a systematic, deductive science; but mathematics in the making appears as an experimental, inductive science.

The author, well aware of the possibility of criticism from opposite quarters and keenly conscious of his limitations, has one claim to make: he has some experience in solving problems and in teaching mathematics on various levels.

^{1}

켄트 벡은 자신의 프로그래밍 능력을 한 단계 더 키우기 위해 모든 선택을 의식적으로 하는 훈련을 하였다고 한다.

When I started programming again, I vowed not to type a single character unless I knew what pattern I was applying as I did so. The result was incredibly frustrating. I want a class called "Stack", but why "Stack" and not something else. Then I would go and write the patterns for naming classes and then I could type "Stack". Then I would want to make its first method public, but why public?

Patterns let me craft when I craft, and talk about craft when I talk about craft. When I reach a novel situation not covered by patterns I already have, it's clearer to me that the situation is not covered and I can step back and solve it from first principles. Solve enough similar problems and I'm ready to start thinking about patterns again.

^{2}

요즘에는 대학 과정을 거치며 내가 습득한 휴리스틱과 패턴을 하나씩 정리하고 있다. 대부분은 뻔한 이야기가 될 것이지만 생각의 정리 및 구조화에는 큰 도움이 되리라는 기대가 있다.