Stepping Stone과 4 Strategies의 선택에 대해

52 views
Skip to first unread message

June Kim

unread,
Sep 5, 2009, 10:47:58 AM9/5/09
to xp...@googlegroups.com
http://blog.gloridea.net/1165540691

블로그 글을 우연히 보고 댓글을 달던 중, 메일링 리스트에 쓰고 댓글로는 여기 링크를 다는 것이 더 접근성이 좋을 것 같아
메일링리스트에 씁니다.

1. 징검다리 비유

Stepping Stone은 현재 위치에서 내 목적지로 좀 더 가기 쉬워지는 지점으로 내딛게 해주는 돌멩이를 말합니다.
디딤돌, 징검돌 등으로 번역하죠. ("다리"가 아니라)

구체적으로 뭘 어떻게 해야할지 감이 잘 안올 때, 잘은 모르겠으나 이런 저런 기능과 객체들이 있으면 문제 해결이 더 쉬워지겠다
생각이 들어서 그것들을 만드는 걸 말합니다.

예를 들어서, 로컬 파일 검색기를 만드는데 이제까지는 캐싱을 안했는데 속도 문제로 캐싱을 해야한다는 요구가 생겼습니다. 이럴
때 캐싱을 어떤 식으로 현 설계에 융합시킬지 감이 잘 안옵니다. 그러면 Stepping Stone으로 일반적인 사전형 객체
같은 걸 만들 수 있겠죠. 일종의 필요한 조각(탄알?)들을 준비해 두는 겁니다.

그런데 이 방식은 사실 별로 필요도 없는 기능과 구조들을 만드는 데에 시간을 허비할 수 있다는 단점이 있습니다. 한참 하다가
보면, 어라 내가 뭐하고 있지? 내가 뭐하려다가 이걸 만들고 있는거지? 이거 정말 필요한 거 맞나? 이런 질문을 하게 되는
때가 있죠. 켄트 벡은 over-engineering이라고 표현했죠.

Lisp 커뮤니티에서는 프로그래밍이란 그 문제를 풀기 쉬운 언어를 만드는 것이다라는 표현을 쓰죠. (Paul Graham의
Bottom-up Programming 참고) 켄트 벡이 저와 오화종님이 이동 중에 한 대화에서 그걸 언급하더군요. 화종님이
Lisp에서는 그 방식이 잘 통하고 있는 거 아니냐고 했습니다. 저는 언어마다 over-engineering의 비용이 다른 것
같고, Lisp 경우 over-engineering의 비용이 적은 편이고, 다른 언어(예컨대 자바)에서는 굉장히 높은 경우가
있다는 말을 했습니다.

켄트 벡 자신은 이 전략을 그리 자주 쓰지 않는데 비해 초보들은 이 방법을 많이 쓰는 것을 관찰했답니다.


2. 네가지 전략의 선택 시점과 장점

> 하지만 잘 납득되지 않는 것이, 저 네가지 전략은 선택한 다음 파악하는 게 아니라, 현실적 요구에 의해 저 네가지 전략 중 하나를 선택하는 것이다.
>
> 디자인 패턴을 쓸 때도 이 패턴을 써야지 해서 쓰는 게 아니라, 현실에 존재하는 문제의 여러 측면을 고려한 결과로 어떤 패턴을
> 쓸지가 결정된다. 그게 순서다. 그럼 자신이 현재 쓰고 있는 패턴을 명확하게 인지해야 한다는 것은 무슨 장점이 있을까? 잘 납득이
> 가지 않아 쉬는 시간에 회사 분들과 얘기를 하면서, 각각의 패턴이 가지는 Pros/Cons 정도를 다시 검토해볼 수 있다는 정도가 아닐까
> ... 라는 추측을 했지만, 썩 납득이 가는 결론은 아니었다.

라고 하셨습니다.

디자인 패턴을 쓸 때 현실에 존재하는 문제의 여러 측면을 고려하고, 몇 가지 가능한 후보 중에서 하나를 고르게 되는데 이
과정은 의식적인 부분과 무의식적(혹은 직관적)인 부분이 섞여 있는 것 같습니다.

마찬가지로 4가지 전략도, 현실의 문제가 있을 때 몇 가지 후보가 떠오르고 그 중에 자신이 비교적 적합하다고 생각하는 (혹은
단지 익숙하거나 편안한) 전략을 분명히 선택합니다. 비록 무의식적일지라도 말이죠.

그런데 이런 선택들은 켄트가 말했듯이 항상 이성적(rational)이지 못합니다. 의사결정론에서도 인간의 판단은 이성적이라고
가정하고 그 다음을 연구했던 것들은 현실과는 거리가 한참 멀었죠. 그래서 나에게, 현재 상황에서 최적인 선택을 잘 하지 못하는
경우가 있습니다. 하지만 현재 내가 어떤 전략을 선택하는지 생각하고, 또 다른 전략 중에 혹시 현재 적용가능한 것이 또 있는지
생각하고 그것은 어떤 모양이 될까 상상하는 것은 매우 효과적인 인지적 전략입니다(학습이나 수행능력 등 면에서 모두). 메타
인지(meta-cognition) 전략이라고 하며, 전문가들(특히 비교적 새로운 문제를 접한 전문가)일수록 이런 전략을
자주/잘 사용한다는 것이 여러 전문성, 인지과학 연구를 통해 밝혀졌습니다.

3. 객체의 필드들은 동일한 수명주기를 가져야 한다

이번 강의에서 언급은 안했는데, 예전에 다른 책에서 했던 말로 기억이 되는데 관련이 있는 것 같아 말씀드립니다. 도움이 될까
해서요. 켄트는 하나의 메소드 내에서 라인들이 변경되는 속도가 비슷해야 한다고 합니다. 어떤 줄은 자주 바뀌고 어떤 줄은
1년에 한 번 바뀌면 변경 속도가 비슷한 애들끼리 다시 묶어야 한다고 말하죠.

June Kim

unread,
Sep 5, 2009, 10:51:56 AM9/5/09
to xp...@googlegroups.com
블로그에 이 글에 대한 링크를 댓글로 달려고 했는데 저는 댓글 쓰기가 금지되어 있다고 나와서 못씁니다. 다른 분이 링크 달아주시면 고맙겠습니다.

http://groups.google.com/group/xper/browse_thread/thread/9e056f00e73c2447#

입니다.

2009/9/5 June Kim <june...@gmail.com>:

Byeongweon Moon

unread,
Sep 5, 2009, 10:56:23 AM9/5/09
to xp...@googlegroups.com
달려고 썼더니 저도 차단되었다네요.
허가된 사람만 달 수 있는거 아닐까요?

2009/9/5 June Kim <june...@gmail.com>:

--
Byeongweon Moon
http://tasy.jaram.org/blog

coderiff

unread,
Sep 5, 2009, 12:12:05 PM9/5/09
to xper
me2day 사용자 이셔서 거기에다 댓글 달아놨습니다.
곧 오셔서 보실 수 있겠죠.


On 9월5일, 오후11시56분, Byeongweon Moon <tasyb...@gmail.com> wrote:
> 달려고 썼더니 저도 차단되었다네요.
> 허가된 사람만 달 수 있는거 아닐까요?
>

> 2009/9/5 June Kim <junea...@gmail.com>:


>
>
>
> > 블로그에 이 글에 대한 링크를 댓글로 달려고 했는데 저는 댓글 쓰기가 금지되어 있다고 나와서 못씁니다. 다른 분이 링크 달아주시면 고맙겠습니다.
>

> >http://groups.google.com/group/xper/browse_thread/thread/9e056f00e73c...
>
> > 입니다.
>
> > 2009/9/5 June Kim <junea...@gmail.com>:

Gloridea

unread,
Sep 5, 2009, 12:33:30 PM9/5/09
to xper
댓글을 막은 적이 없는데 어찌된 일일까요? ;; (티스토리로부터 미움받고 있는 걸까요...;;; RSS배달도 잘 안된다던데. ㅠ
ㅠ)

1. Stepping Stone에 대해서는, 제가 이해한 내용도 김창준님이 설명해주신 내용과 다르지 않습니다. (좀 더 디테일
한 설명 감사드립니다. )
그 부분은 제 개인적인 감상으로, 좀 더 적절한 메타포가 있지 않을까 하는 아쉬움에 대한 부분이었습니다.
다른 분들도 다른 세 가지는 바로 이해하는데 반해서 이 설명에서는 바로 감을 못 잡으시는 것 같아 보여서 든 생각입니다.

2. 메타 인지의 측면에서 보기에는, 네 가지 전략은 모두 너무 뚜렷한 특징을 가지고 있다고 생각합니다. 한 전략을 선택한 사람
이 자신이 선택한 방식의 패턴을 상기한 다음 다시 면밀히 검토하고 종합적인 판단 결과에 따라 다른 전략으로 건너가는 일이 과연
있을까... 음. 사람마다 다르겠지만, 개인적으로는 그럴 일은 거의 없지 않나 싶습니다. 각각을 쓸 수 있는 상황도, 그에 따
른 장단점도 너무 명확해서 말이죠.
(지금 생각해보니 좀 더 미시적인 측면에서의 결정에 대한 것으로 바라본다면 좀 다를 수도 있지 않을까 하는 생각이 듭니다.)

3. 확실히 그럴 것 같네요. : ) 설명 감사합니다.

Seung Joon Choi

unread,
Sep 5, 2009, 9:47:37 PM9/5/09
to xp...@googlegroups.com
댓글에 대해서는 url이 들어가 있으면 막힙니다. / 를 기준으로 띄어쓰기를 하니까 티스토리에서 막지 않았습니다. 다만 바로 클릭은 안되겠죠. 논의가 이루어지고 있다는 것을 노출하기 위해 본문에 링크를 하나 걸어주시면 좋지 않을까요? 트랙백이 안되니까요.

커뮤니티의 움직임이 역시 xper다! 라는 생각이 듭니다.

2009년 9월 6일오전 1:33, Gloridea <glor...@gmail.com>님의 말:
Reply all
Reply to author
Forward
0 new messages