지금 현장 분위기는 어떤가요?
왠지..익사이팅할것 같은 느낌~ㅎㅎㅎ
회고때 잠깐 언급된 Annotated Responsive Design 이나, Responsive Design By
Example .. 이 나와야 할 것 같습니다.;
아니면 Responsive Design in Context ..;
On 9월4일, 오후2시47분, Alan Lee <coder...@gmail.com> wrote:
> 이외로 조는 분들이 간혹 눈에 띄네요.
> 뒤에 포스트잇을 사용해 회고와 질문을 하는데 켄트벡이 인상적으로 보신것 같네요. 미국 세미나에서도 차용한다고 하시네요.
>
> ----- 원본 메시지 -----
> 보낸 사람: 권혜진 <ohyes...@gmail.com>
블로그에 후기를 썼는데, 여기에 링크만 딱 걸자니 너무 성의없는것 같고,
글을 그대로 올리자니 메일 형식에 맞는 글이 아닌거 같아서 살짝 고민되네요.
조심스럽게 링크만 올립니다.^^
http://codereview.co.kr/90067016628
2009/9/5 magisch <mag...@gmail.com>:
> Beneficially Relating Elements
이 개념은 켄트 벡이 퍼머컬쳐에서 힌트를 얻은 것입니다. NOO와 절묘하게 닿아 있습니다.
>
> 제 생각으로는 점진적 개발과 Responsive Design의 차이점이 뭔지 알려주는 중요한 키워드드중 하나가 아닌가 생각됩니다. 세미나
> 도중에 충분히 설명되지 않고 넘어간 것 같아 아쉽기도 하고요. 어쩌면 제가 NOO를 공부했기에 이 개념이 매우 중요하게 느껴지는 지도
> 모르겠습니다.
>
> 제가 이해한 바를 설명드리자면
>
> 첫번째는 어떤 상태를 가리키는 것으로, 요소들간의 관계로 인해서 이로움이 발생하는 것입니다.
>
> 두번째는 동적인 모습을 가리키는 것으로, 요소들을 이롭게 만들기 위해서 관계를 만드는 것입니다. 새로운 요소를 도입하기도 하고,
> 제거하기도 하고, 구조를 변경시키기도 하면서 말이죠.
네.
Design is beneficially relating elements.
Designing is beneficially relating elements.
이 두 문장을 이야기 했습니다. 첫번째에서 beneficially relating은 elements를 꾸며줍니다.
elements가 relating의 주어인 셈이죠. 즉, 결과로서의 디자인은 이로운 관계의 요소들이라는 말입니다. 두번째에서
elements는 relating의 목적어입니다. 과정으로서의 디자인은 요소들을 이롭게 관계 맺는 행위이다 라는 말입니다.
'삶에 피로가 누적되어 있고 경쟁적인 상황에 있는 경우가 많아서'이지 않나 하는 생각도 듭니다.
여기서 '경쟁적'이란 사회가 만든부분도 있고, 스스로가 만드는 부분도 있습니다만, 어쨌든.
new technology, fresh skill, tip&trick 이 좀더 입에 달다고 느껴지기 쉽잖아요.
'최강 다이어트 비법소개. 살아있는 다이어트 분야의 전설이 들려주는 드라마틱한 체중감량 신화!'
에 참석했더니,
'하루 세끼 적당량의 밥을 꾸준히 섭취. 그리고 매일 조깅과 웨이트 트레이닝을 1시간씩 격일로 할것!
중요한건, 목표와 의지!'
라고 이야기를 듣고 온다면 어떨까 하는 상상을 해 봅니다. :)
아마 '수박과 우유, 현미가루를 갈아서 아침/저녁으로 먹는거다!!' 라고 듣고 왔으면, '역시!! 그런게 있었던 거였어!!' 라
며 역시 대가는 뭐가 달라도 달라! 라며 많은 분들이 좋아했겠지만, 글쎄요..
진리는 단순하지만, 마음에 새기고, 원칙에 맞춰 실행하는건 어렵죠.
대가라 불리는 많은 분들은 원리에 충실하고 원칙을 지키며, 자신에 맞는 변화를 익히고 그것을 창의성과 결합해 발전시켰던 분들이
아닌가 싶습니다.
그 분들의 말에서 자신의 생각을 정제하고 응용하고 받아들일 수 있는 요소를 찾는게 중요한 것 같습니다.
사실 KentB 아저씨가, 오후엔 '내일 당장이라도 써 먹을 수 있는 좀더 실제적인 이야기를 해 주겠다!' 라고 말했지만, 오후
도 그렇게 실제적으로 느껴지진 않았어서, 좀 실망스러웠더랬습니다.
그런데 가만히 생각해 보면 방식과 사고전환에 대한 여러가지 숙제를 남겨주었던 것 같다는 생각이 듭니다.
그래도 일면 아쉬운건 아쉽습니다. :)
'예습과 복습을 철저히. 잠은 충분히' 라는 전국 수석자들의 공통대사를 들으면, 우린 곧잘 이렇게 말하니까요.
"젠장! 빌어먹을!!!" :)
On 9월5일, 오전10시10분, Seung Joon Choi <eruc...@gmail.com> wrote:
> 저는 시작하는 즈음의 창준님 발표가 상당히 좋았습니다.
>
> 최근에 갈수록 동감하고 드는 생각이 패턴은 너무 어이없을 정도로 당연한 이야기를 하는 것이 맞다는 것입니다.
>
> 때문에 다양한 변형과 응용의 여지가 있는 것인데, (제가 좋아하는 NOO의 동그라미와 점이 하나 있는 그림 처럼, 펼쳐냄의 초기에
> 해당하는 그림, Boundary 및 Latent Centers/Positive Space가 있는 상태며 이 후에 그 안에서 정교화된
> 구조가 자연스럽게 발생하죠)
>
> 너무 구체적이거나 행동 강령에 가까운 이야기일 수록 패턴이라고 보기 어려운 것 같습니다.
>
> 누구나 말하면 이해할 수 있기 때문에 실제로 최근 패턴 워크숍 하다가 보면 개인적으로 어렵고 재미가 없는 느낌을 받을 때가 있기도 합니다
> (아직 잘 몰라서 그런 것일지도요, 프로그래밍 할 때나 문제 풀 때 일반화 해내면 뭔가 뿌듯한데, 패턴도 그럴 것이라 생각했는데 아직
> 그런 묘미를 못 느끼고 있습니다. 그럼에도 불구하고 중요하다는 직관을 가지고 있는데, 그 것이 어디서 오는 직관인지 스스로에 대해서
> 설명해내지 못하고 있습니다)
>
> 막연히 짐작하고 믿고 있는 것은, (맨날 어디가서 발표할 때 보여주는 것인데요)http://epicure.graffity.net/things/p5/level01/red_thing/index.html
그는 다양한 환경과 도메인에서 많은 프로그래밍 경력이 있습니다만, 몇몇 사람들은 JUnit이 그가 코딩한 전부로만 이해하는 것
같아 아쉽습니다. 저는 경력과 실력이 일치한다고 생각하지 않지만, 경력이 많은 사람에 대한 존중은 기본이라고 생각합니다. 그가
35년 넘게 프로그래밍을 했다면, 그리고 세계적으로 명사로 알려져 있다면 그에게 뭔가 통찰과 진정성이 있지 않을까 하는 부분을
고려해 봐야 하지 않을까 싶습니다. 그러므로 몇몇 블로그 등에서 위키백과나 표면적으로 알려진 그의 경력을 예로 들며 말로 먹고
산다는 식으로 깎아 내리는 것은 결국 자기 손해라고 봅니다.
켄트 벡은 단순함에 대한 욕구가 강한 것 같습니다. 그래서 될 수 있으면 자신의 아이디어를 계속 단순화하려고 노력합니다.
덕분에 그 결과물을 보면, "애걔, 이게 뭐야?"하는 반응이 생기기도 하는 것이죠. 사실 표면적 단순함 속으로 들어가면 많은
고민과 심오함이 숨어있는데도 말이죠.
제가 10년 가까이 컨설팅을 하면서 TDD나 짝 프로그래밍, XP, 애자일, 리팩토링 등을 접해보지 못한 분들에게 설명하면
간혹 "나 그거 다 알고 있어"나, "해봤어", 혹은 "지금도 하고 있어" 등의 반응을 보기도 했습니다. 그런데 실제로 그
분이 안다고 하는 것, 혹은 해봤다는 것 등을 자세히 들여다 봤을 때, 실제로 제가 이해하는 TDD나 짝 프로그래밍 등을
제대로 실천하고 계셨던(혹은 이해하고 계신) 적은 한 번도 기억이 나질 않습니다.
저는 이번 세미나를 세 번에 걸쳐 들으면서, 역시 오해하는 분들이 생길지도 모르겠다는 우려를 했습니다. 사실 거기에는 켄트
벡의 책임도 있다고 생각을 했죠. 더 구체적으로 설명하면 다를테니까요. 그런데 켄트 벡은 사람들이 XP를 실천법 위주로
이해하는 데(원리나 가치는 중요히 여기지 않고)에 크게 실망하고 있더군요. 그래서 뭔가 구체적인 예를 드는 것에 대해 우려가
있고 매우 조심스러워 하는 듯 했습니다. 예를 들면, 저는 켄트에게 4가지 전략의 사용 분포는 어떠냐는 질문을 해봤고(그가
90여장의 카드를 분류해봤다고 하니) 그는 이에 대해, "뭐 뭐 뭐 순서였다, 하지만 그건 나의 경우일 뿐이다"라고 하더군요.
그리고 강연에서는 이 정보를 이야기하지 않더군요.
켄트 벡에 대한 이야기는 이 정도로 하고, 구체적으로 이번 세미나에서 제가 느낀 점들을 켄트 벡이 말하는 "실용적인
3가지"(켄트 벡이 강연 중 여러번 강조를 했죠) 중심으로 풀어보겠습니다.
1. Safe Steps
2. Four Strategies
3. Isolate Change
1. Safe Steps
효율성과 리스크(안전성) 간에 밸런스가 필요합니다. 그런데, 켄트 벡이 취하는 방식은 안전성(safety)을 먼저 획득하는
겁니다. 그런데 그렇게 하면 속도(효율성)가 떨어지겠죠. 하지만 켄트는 훈련과 수행을 통해 효율성을 얻을 수 있다고 합니다.
안전한 발걸음을 하는 걸 빨리하면 겉에서 보기에는 날아가는 것처럼 보일 수 있다고 합니다.
그러면 역으로 효율적으로 하는 걸 먼저하고 나중에 안전성을 획득하는 것은 안되냐? 잘 안됩니다.
그 이유를 설명해 보겠습니다.
중요한 것은 켄트 벡은 "학습 환경"을 고려한다는 점입니다. 학습이 잘되는 환경이 뭐냐 이거죠. 우리 능력이 일취월장할 수
있는 환경이 뭐냐. 그건 효율성을 우선시 하는 환경이 아닙니다. 안전한 환경에서는 내가 작은 실수를 해도 금새 알아챌 수
있습니다. 그럼 곧바로 실수를 고칠 수 있고, 따라서 학습이 잘 됩니다.
여기에 대해서는 최근 번역된 "탤런트 코드"를 보면 심층 훈련(deep practice)이라는 이름으로 잘 설명이 되어
있습니다. 저는 풋살과 링크 트레이너를 예로 들고 싶습니다.
풋살은 브라질의 축구실력이 급격히 성장한 이유 중 하나로 주목받는 운동입니다. 풋살 선수가 공과 접촉하는 횟수는 축구 선수에
비해 분당 여섯 배 많다고 합니다. 또 공이 작고 무거우며 공간이 좁아서 약간이라도 어설픈 패스를 하면 바로 티가 난다고
합니다.
링크 트레이너는 세계대전에서 미국 조종사들에게 큰 도움이 되었던 비행 훈련 기계입니다. "조종사가 실수를 하면 앞쪽에 달린
작은 등에 불이 들어왔다"고 합니다. 책에서 인용해 보겠습니다. "조종사는... 수시로 멈추고, 끈질기게 노력하고, 실수하고,
그 실수를 통해 배울 수 있었다. ... 링크 트레이너로 훈련한 조종사가 추락한 조종사보다 더 용감하거나 똑똑한 것이
아니었다. 그들은 단지 심층 연습을 할 기회가 있었던 것뿐이다"
저는 안전성을 먼저 획득하면 피드백을 더 자주 받을 수 있고, 더 편하게 실험할 수 있으며, 따라서 학습 효과와 속도가
높아진다고 생각합니다. 심층 연습의 원리가 이와 같습니다. 그러면 학습의 복리 이자로부터 많은 이득을 얻을 수 있고, 곧
미엘린(myelin, 심층 연습을 하면 신경섬유의 통신 대역폭과 정확도가 수백 수천배 높아지게 해주는 물질)의 도움으로
효율성도 좋아지게 될 것입니다.
2. Four Strategies
* Leap
* Parallel
* Stepping Stone
* Simplification
켄트가 다른 개발자들과 코딩을 하면서 설계 의견이 다를 때마다 만들었다던 90장의 인덱스 카드를 분류해 보니 위 4개의 분류를
벗어나지 않았다고 합니다. 그 분포가 어땠는지 궁금해서 물어봤습니다.
Parallel -> Simplification -> Leap -> Stepping Stone
이었다고 합니다.
저는 요 몇 년 전부터 특히 Simplification에 주목하고 있습니다(NOO에 대한 연구와 함께). 스스로 이
Simplification을 의식적으로 쓰는 것(때때로 그걸 잊고 허덕거리기도 하거든요)이 저에게 많은 도움이 되었습니다. 이
주제에 대해서는 할 말이 상당히 많은 데 다음 기회에 써보도록 하죠.
이 네가지 전략은 켄트 벡이 말하듯, 프랙탈적으로 모든 층차에 적용 가능한 것입니다. 한 줄을 고치더라도 이 네가지를 다
사용할 수 있습니다. 한가지 최근에 새기능을 추가하기 위해 설계를 바꿔야 했던 때를 생각해 보고, 각기 이 네가지를 의식적으로
쓰면 어떻게 다를지 실험해 보시면 좋을 것 같습니다.
개인적으로 켄트 벡에게 Cognitive Task Analysis를 해서 Parallel이나 Simplification을
어떻게 잘하는지를 분석했으면 하는 마음이 있습니다.
3. Isolate Change
이것은 Safe Step을 얻는 기술의 한가지입니다. 외과수술에 비교할 수 있습니다. 수술할 부위만 열어넣고 나머지 부분은
모두 천으로 덮어버립니다. 집중을 하기 위해서, 또 전염 등을 막기 위해서 겠죠. 이 기술 역시 모든 층차에 적용 가능합니다.
긴 메소드 내에서 연속된 세 줄을 고칠 때에 그 세 줄만 따로 메소드로 추출해 낸 다음 고칠 수 있습니다. 그리고 심지어는
곧바로 인라인을 해버릴지언정 이 과정이 의미가 있다는 겁니다. (실제로 이렇게 해보신 분 계신가요?)
그런데 이 과정을 거치면 Safe Step이 잘 됩니다. 더 적은 부분에 집중할 수 있고 실수를 쉽게 간파할 수 있습니다(예를
들자면 로컬 변수 숫자가 줄겠죠). 따라서 앞에서 말했듯이 학습도 빨리, 효과적으로 이뤄집니다.
저는 켄트 벡이 말한 세가지가 모두 학습 이론이나 심리학적, 인지학적 원리에서 볼 때 학습과 실천(learning &
doing)이 잘 융합된 뛰어난 방법이라고 큰 감동을 받았습니다. 저도 그렇겠지만, 이 강의를 열린 괄호로 받아들이는 분들은
켄트 벡의 "단순해 보이고 뻔해 보이는" 제안들을 한 동안 직접 실험해 보실 것을 권해드리고 싶습니다.
저는 Simplification 경우, 계획하기, 글쓰기, 프로젝트 전반의 계획 세우기(사용자 스토리 뽑기) 등에 모두
사용하고 있는데 큰 만족을 느끼고 있습니다.
2009/9/5 June Kim <june...@gmail.com>: