Pattern을 어떻게 하면 잘 만들수 있을까요? Joe 의 패턴 라이팅을 공개합니다.

이번 AsianPLoP에서는 작년에 참여한 PLoP BootCamp와는 조금 다른 형태로 Joe(Joseph William Yoder) 아저씨의 패턴 라이팅(Pattern Writing)을 경험해 보는 좋은 시간을 가졌습니다.

패턴 라이팅을 말하기 전에 Joe 아저씨에 대해서 간략히 소개를 해 드리면, 그는 Refactory Inc. 를 운영하고 있으며, 런타임시에 객체의 생명주기를 관리하는 유명한 패턴인 AOM (Adaptive Object Model) 을 만든 사람입니다.  GoF 중 한 명인 Ralph Johnson의 제자 이기도 합니다.

그의 발표자료를 공유합니다. 브라질에서 열리는 PLoP인 SugarLoad PLoP에서 2년전에 이미 발표한 자료네요. 이 자료를 읽기 전에 저의 블로그에 공유한  Linda 아주머니의  Pattern 만드는 법, 또 PLoP에서 소개한 Pattern Template을 먼저 읽어보시길 바랍니다.

Writing Patterns “The Straight Scoop” 다운 받는곳 (출처 SugraLoad PLoP)

패턴 템플릿 설명

  • 패턴은 경험으로 부터 나오는 것으로, 패턴 라이팅은 연습과 반복이 필요하다.
  • 패턴은 무엇인가? Context 안에서 문제에 대한 해결책이다.  많은 분들이 패턴을 단순히 해결책으로 보고 있지만, 정말 중요하게 봐야 되는 것은 Context입니다. 과연 이 패턴을 어떠한 상황에서 써야 할까? Size, Scope, Timing, Memory 제약등, 바뀌면 솔루션에 영향을 미치는 것들을 명시적으로 적어야 됩니다.
  • Problem  Solver가 무엇을 해야할지, 어떻게 문제를 해결해야 할지 Problem/Solution에 잘 기술해야 합니다. 가능하다면 성숙하고 검증된 솔루션으로 패턴을만들어야 합니다. 거기다 가능하다면 사람들의 삶을 평안하고, 삶의 질을 향상시키는 패턴을 만들라고 하시네요.  소프트웨어 기술 뿐만 아니라, 다양한 분야에도 패턴을 만들수 있다며 Do Food 패턴도 예를 들었습니다.
  • 패턴 템플릿을 꼭 따라야 하는 것은 아니다. 전문가의 경험을 잘 캡춰할 수 있는 방식으로 표현해라.  그리고 가능하다면 소프트웨어 커뮤니티의 도움을 받아 다양한 의견을 수렴하고, 리뷰해라. Writer’s Workshop이나 Careful Editing을 통해 패턴을 향상 시켜라.
  • Context에서 문제를 해결하는 간단한 솔루션(Simple Rule, Algorithm, Data Structure, Presciptive recipe)은 패턴이 아니다.
  • Foce를 주의 깊게 다루어라. 패턴을 Foce에서 적절한 균형을 찾는 것이다. Trade-Off와 같은 것이다. 그리고 왜 이 문제가 어려운지 Force에서 설명해라. 또한 Force는 이 패턴이 왜 중요한지 밑밥을 까는 Tension을 제공하는 곳이다.
  • Solution은 Context에서 고려한 Force들만 집중해서 작성해라. 다루지 않는 Force들은 무시해라. 이렇게 처음 패턴에는 제약들을 가하면서, 이러한 제약속에서 동작하는 패턴을 만들고, 서서히 기술이 발전함에 따라 이러한 제약들을 하나 둘씩 제거하게 됩니다. 그러면서 패턴이 진화하게 됩니다.
  • Resulting Context – Consequence, Positive & negative를 꼭 다루어라. 가능하다면 Side Effect를 피하는 방법을 기술해라. 그리고 이 패턴을 사용함으로써 얻는 득과 실은 무엇인가?  이걸 정확히 파악하지 않으면, 패턴 몬스터를 만들 뿐이죠.
  • Small Meeting Room 패턴을 이용해서 개선해라. 큰 그룹이 있다면 작게 나누어서 가능한 한 그룹이 최대 12명을 넘지 않게 해라.  가능하면 6명을 추천한다.
  • Name과 Aliases를 같이 병행해서 사용해라. 직관적인 이름을 사용하는게 좋다. 가능한 패턴을 작명할때는 쉽게 불리기 위해서 단어 하나로 지어라. 은유적이며 심미적인 표현을 쓰기 원한다면, Alias 사용해라.  또한 이미 존재하는 패턴의 이름을 개선하기 위해서 Alias를 사용하기도 한다. Observer -> Publisher-Subscriber
  • Rationale – 왜 문제를 해결하는 솔루션을 만들었는지 언급해라. 어떠한 장,단점이 있었는지 상세히 기술하고, 단점을 줄여나가는 방안을 가능하다면 제시해라.
  • Known Use – 실 사례를 통해서, 신뢰성을 확보해라. 여기 저기서 많이 사용되었다는 것을 알면 정말 가치있는 패턴이 된다.
  • Related Pattern – 유사한 패턴을 기술하고 설명해라.

Ward의 패턴 라이팅을 위한 Tip들

  • 단지 하나의 아이디어 말고 전체 영역을 집어내라.
  • 당신이 배운 것들을 열거(리스트 화)해라.
  • 각각의 아이템들을 솔루션으로 변환해라.
  • 패턴으로써 각각의 아이템을 기술해라.
  • 작성한 패턴을 적절히 섹션을 구분해서 구성해라.
  • 패턴 소개를 적어라.

Joe의 패턴 라이팅을 위한 Tip들

  • 3×5 크기의 작은 카드들을 나눠 가져라.
  • 아이디어를 카달로그와해서 Brainstorming 해라.
  • 카드에, 간단한 문장으로 Problem/Solution을 작성해라.
  • Forces, Related Patterns, Aliases 와같은 어떤 다른 아이디어라도 추가해라.
  • 패턴을 구성해라.

간략한 패턴 샘플

먼저 카드로 각자의 아이디어를 다음과 같이 리스트합니다. 그리고 하나의 개별적인 패턴의 Motivation과 Context를 기술하죠. 그 다음 Problem, Forces, Solution을 기술해서 점진적으로 패턴을 완성해 나가는 방법입니다. 이 방식을  Team이 되어 같이 나누는 것입니다.

Pattern Writing 실습

PLoP Bootcamp 때는 Linda 아주머니와 Bob Hanmer 아저씨는 칠판에서 서로의 얘기들을 조율하면서, Pattern Writing을 진행했습니다.  중간 중간 Interaction을 하며, 하나의 의견이 제시될때, 서로 공유하며, 더 다듬는 형태였습니다. 이번 Joe 아저씨는 카드를 나눠줘서 서로의 생각을 정리하는 형태로 진행을 했습니다. 그리고 그 생각을 취합해서 하나의 패턴으로 만드는 것이지요. Ward의 패턴 라이팅은 혼자서 패턴 라이팅을 하기 적합한 방식이며, Joe의 패턴라이팅은 여럿이서 하나의 패턴을 만들기 적합한 방식인거 같습니다.

다 같이 모여 자신의 생각을 정리하는 시간을 가졌습니다. 그리고 각자의 의견을 교류하죠. 이번에는 “어떻게 하면 팀원들에게 동기를 부여할수 있을까?”에 대해 얘기했습니다.

술을 같이 먹자, 뉴스 레터를 쓰자, 열정을 가지게 만들자, 흥미나 취미 공유로 팀웍을 단련 시키자라는 얘기도 있었습니다.

Joe 아저시는 중간 중간 팀들을 살펴보면서, 여러가지 조언을 해주었습니다. 진행 상황도 체크해주시더군요.  때로는 적극적으로 뛰어 들어서, 토의에도 같이 참여해 주는 모습을 보여주었습니다.

이렇게 서로의 얘기를 나누며, 패턴을 작성했습니다.

그리고 각자 자신이 만든 패턴을 발표했습니다. 1조는 일본인들로 만들어진 그룹으로, 어떻게 하면 신선한 아이디어를 만들 수 있게 break time을 가지느냐 였습니다. 패턴이름을 Swimming Break라고 지었습니다. 🙂

2조는 말씀 드린대로 어떻게 조직원들에게 Motivation을 이끌어 내는냐에 대한 패턴을 설명했습니다.

시간상 모든 내용을 발표하지 못하고, 간략하게 내용을 전달하다 보니, 칠판에 별 글자가 없었습니다.

그리고 마지막으로 패턴 라이팅을 위한 패턴 언어 (A Pattern Language for Writing Patters)에 대한 소개를 하고 꼭 읽어보라고 하시더라구요.

그리고 각자의 패턴 아이디어를 자신의 이메일로 보내주면, 자신이 잘 취합해서 패턴으로 만들어 주신다고 했습니다. 패턴에 샤워를 하고 싶다고 하더군요. 🙂  그리고 저자워크샾에 대해서 다시 설명을 하면서 마쳤습니다.

Joe의 패턴 라이팅 행사를 마치며..

공식적으로 모든 행사를 마치고, Joe 아저씨가 저희가 번역하고 있는 Fearless Change를 저희 팀에 소개해 주었습니다. 대부분이 모르시더라구요. 역시 정보는 넘치는데, 어디에 있는지 몰라서 공부를 못하는게 맞는거 같습니다.  다 같이 기념 사진을 찍으며 행사를 마쳤습니다. 저와 같이간 이계영 책임님은, 찍새를 하느라 서로 같이 나온 사진이 없네요.. 😦

이번 패턴 라이팅 실습을 통해 느낀 점은, 서로 간의 생각을 카드에 적음으로써 기록하고 의견을 조율하면서 자신의 아이디어를 다듬어서 카드에 적게 됩니다. 그리고 그 카드를 모으면 하나의 패턴이 된다는 것이지요.

Facilliator 의 역할이 매우 중요할 것이며,서로의 의견을 비난보다는 감싸주는 경청과 이타적인 마음 자세가 좋은 패턴을 만들게 된다는 점을 다시 느꼈습니다. 경쟁보다는 협력의 가치를 깨닫는 행사였습니다.

그리고 이번 행사를 통해 총 3개의 패턴 라이팅 방법(Ward, Joe, Lidna&Bob)을 배울수 있었습니다. 상황에 맞게 적합한 패턴 라이팅 방법을 써야겠다는 생각이 들었습니다.   음.. 언제 행사를 진행해야 되는데요.   가까운 시일내에 지앤선과 데브피아의 지원으로 행사를 열도록 하겠습니다. 기다려 주세요  Comming Soon…

Join the conversation! 9 Comments

  1. 그동안 ‘Ward의 패턴 라이팅’를 종종 시도해보려고 노력한 기억이 납니다. 그렇지만, 항상 아쉬었던 부분은 같이 패턴을 공유하고 피드백할 수 있는 분들을 아직 실전에서 찾아보지 못한 것 같습니다.
    Joe의 패턴라이팅에 급매력이 생기는 것은 왜 일까요:)

    상황에 따라 다르겠지만 지금 저에게 필요한것은 Joe의 패턴라이팅 습관화가 필요하다고 생각합니다. 조만간 여는 패턴라이팅행사에 적극적으로 참여하고 싶네요.
    이 때가 되면 지식적인 패턴보다 정보적 가치가 있는 패턴을 배워볼 수 있으리라 좋은 기대를 해 봅니다.:)

    응답
    • 공감대를 가진 사람들을 찾기도 힘들고,
      그리고 패턴을 좋아하는 사람도 찾기 힘든것이 사실입니다.

      다 같이 모여서, 좋은 정보를 나눌수 있는 기회가 우리 모두에게 왔으면 좋겠습니다.

      응답
  2. […] 새로운 방법을 알게 되었습니다. 자세한 내용은 이미 올렸으니,   이전 포스트를 참고해 주세요. 식사 시간.. 카드가 안돼 30분을 […]

    응답
  3. gsong의 생각…

    [PLoP] Joe의 패턴 라이팅…

    응답
  4. […] 블로그에서 언급한 Joe Yoder’s Pattern Writing을 보시면 됩니다.  전 예전에 PLoP BootCamp 때 느낀 경험과 Joe Yoder’s의 […]

    응답
  5. […] 느낌을 가지게 되었습니다. 왜냐면 후방 지원이 빠방했거든요. 뒷 자리에 Joe Yoder, Linda  아주머니의 남편 Karl, 그리고 Program Chair인 Christian 까지 합세해 […]

    응답
  6. […] – https://arload.wordpress.com/2010/03/25/joe-yoder-pattern-writing/ […]

    응답

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.

카테고리

My Activity, News, Pattern, People, PLOP, Seminar, Software Architecture, Software Engineering, Study

태그

, , , ,