컨텐츠 바로가기

스터디 모임 방법 몇 가지

http://agile.egloos.com/5830026

며칠 전 페이스북에 아래와 같은 글을 썼습니다.

오늘 AC2 코칭은 컴퓨터 프로그래밍 스터디 모임을 잘하는 법에 대해 했네요. 코칭 받으신 분이 아주 얼굴이 활짝 펴져서 "빨리 해보고 싶어요!"하면서 나가셨다는... ^^;


온오프라인으로 몇몇 분들이 이 글을 보시고 공유를 부탁하셔서, 오늘은 이 이야기를 해볼까 합니다. 스터디 모임 운영법, 혹은 참여자일 경우 할 수 있는 것 관련하여 강연하면 몇 시간 걸릴만한 내용인데, 그 중 일부만 공유해 보려고 합니다.

학습에는 학과 습이 있다

학습(學習)이라는 말은 논어의 학이시습(學而時習)을 일컫는 말인데요, 학은 새로운 것을 배우는 걸 말하고, 습은 몸에 익힌다, 익숙하게 한다는 말입니다. 여기에서 "시"는 혹자는 때때로라고 번역하는데 그러면 좀 유치한 말로 들리고요(시간 날 때마다 가끔?), 저는 "때에 맞게, 적절한 타이밍에"로 번역합니다(도올 선생님이 그렇게 번역하시죠). 이 "시"가 참 중요한 요소인데, 이건 다음에 기회가 되면 더 이야기해 보고요. 학과 습에 대해 이야기 해보도록 하죠.

대부분의 스터디 모임은 보통 학을 중심으로 하는 것 같습니다. 공부할 책을 정하고 각자 챕터를 나누어 맡고 모일 때마다 한 챕터씩 담당자가 발표를 하는 식이죠. 매번 뭔가 새로운 걸 배우는 겁니다.

하지만 공부에는 습이라는 면도 필요합니다. 배운 것을 익히는 것이죠. 예를 들어, 이번에 A라는 기술을 배웠다면, 절반의 시간은 A를 실제로 연습하는 시간을 갖는 것입니다. 혹은 습의 비중을 더 늘릴 수도 있습니다. 스터디 모임 시간 내내 습을 하는 것이죠. 예를 들면 새로운 기술적 내용을 발표하거나 하지 않고 그냥 처음부터 우리가 풀 수 있는 문제를 함께 푼다거나 하는 것이죠.

사실 학과 습이 얽힌 것들이 많기 때문에 둘을 칼로 무 자르듯이 딱 나눌 수는 없습니다만 무슨 이야기인지 감이 오실 겁니다.

보통은 학과 습이 섞여있는 스터디 모임이 좋은데, 그런 면에서는 워크북이 스터디에 적합합니다.

준비 없이 하는 스터디 모임

이 이야기는 예전에 바쁜 직장인을 위한 스터디 비결이라는 글에서 한 적이 있습니다. 간단히 말하자면, 스터디 모임을 하기 위해서는 보통 그날 발제자가 미리 집에서 준비를 해와야 합니다. 그리고 오면 그 사람이 주도해서 진행을 하죠. 이 방법을 사용하기 힘든 경우들이 있습니다. 다들 너무 바쁜 것이죠 -- 아마 이런 경우라면 아예 스터디 참가를 안하려고 했겠지만. 발제자가 그날 내용을 준비 못해오거나 혹은 아예 참석을 못하거나, 또는 발제를 맡는 사람이 없거나 하는 경우입니다.

이럴 경우 스터디 모임에서 할 것이 없다고 생각할 수 있는데 그렇지 않습니다. 모여서 그 자리에서 학이나 습을 할 수 있습니다.

학을 한다면, 그 자리에 앉아 타이머 켜고 15분 셋팅한 다음, 제3장을 각자 읽어보자라고 합니다. 15분이 울리면 각자 읽은 부분에서 중요하게 생각하는 것, 나에게 특히 영감을 준 부분, 의문점이 드는 것 등을 공유하며 서로 설명을 맞춰봅니다. 만약 이번에 할 분량이 너무 많아서 15분에 읽기 힘들다면? 그러면 예컨대 제3장에서 섹션이 나뉘어 있을텐데, 타이머 시작하기 전에 각자 고르게 합니다. 저는 3.1 보고 싶어요, 저는 3.5가 끌리네요 식으로요. 그리고 15분 동안 각자 읽고 나서 "조각 맞추기"를 하는 것이죠. 이렇게 하면 재미도 있고 공부도 많이 됩니다.

꼭 집에서 준비해와야지만 스터디 모임을 할 수 있는 것은 아니고, 그 자리에 모여서 학을 하는 것도 좋다고 생각합니다. 아예 그런 스터디 모임도 안하는 것에 비하면 훨씬 낫죠. 바쁜 직장인들이 하기에 좋은 방법이라고 봅니다. 같은 회사에 있다면 점심 시간에 샌드위치 같은 거 먹으면서 40분 정도 해도 되고요.

암묵지를 공유하자

형식지와 암묵지에 차이에 대해서는 다들 잘 아실 겁니다. 사실 전문성이 인정되는 대부분의 일들은 암묵지가 매우 중요합니다. 그런데 일반적인 스터디 모임에서는 이 암묵지가 공유되지 않습니다.

이런 암묵지를 공유하는 정말 좋은 방법 중 하나가 짝 프로그래밍, 더 크게 말하자면 짝 작업(Pair Work라고 저는 부릅니다)입니다. 두 사람이 한가지 매개체(컴퓨터 혹은 종이와 연필)를 두고 함께 작업하는 것입니다.

예를 들어 간단한 프로그래밍 문제를 두 사람이 한 컴퓨터를 사이에 두고 상의해 가며 풀어나갈 수 있고, 노트를 가운데에 두고 두 사람이 각자 펜을 하나씩 들고 함께 그려가며 문제를 풀 수도 있습니다. 이런 것을 할 때 주의할 점은 어느 한 사람이 중간 매개체를 독점하지 않는 것입니다. 서로 번갈아가면서 하도록 해야 합니다.

이렇게 함께 프로그래밍을 하거나, 함께 문제를 풀거나 하면서 각자의 암묵지를 공유하고 배우게 됩니다. 이미 여러 연구를 통해서도 짝 작업(및 짝 프로그래밍)의 교육적 효과는 검증이 되었습니다.

따로 또 같이

일반적 스터디는 발제자가 앞에서 발표하고 다른 사람은 그냥 듣습니다. 여러 사람이 함께 있다는 사실을 장점으로 활용하지 못합니다. 그리고 이미 교육학에서도 발견했듯이 강연은 그다지 효과적인 학습법이 못됩니다.

앞서 말했던 암묵지를 공유하는 방법으로서의 짝 작업을 하면 각자 병렬로 밀도 높은 공부가 됩니다. 그러고는 다시 모여서 각자의 경험을 공유합니다. 어떤 실수를 했고, 뭘 배웠고, 뭐가 잘 안풀리는지 등. 그러면 다른 짝에서는 어떤 일이 있었는지 배우게 됩니다. 그러고 나서는 다시 짝으로(아까랑 다른 사람과 짝을 해도 좋습니다) 나뉘어 해보고 또 다시 모으고를 반복합니다.

이 방법을 사용하면 짧은 시간 동안이더라도 개개인이 각자 뭔가 습을 해볼 기회가 생기고 훨씬 더 공부가 능동적이고 재미있게 됩니다. 공유 시간에 다른 짝에서 배우는 것도 많고요.

다양성을 높이자

여러 교육학의 연구를 통해 복잡한 인지적 작업을 학습할 경우 다양성이 매우 중요한 요소라는 점이 밝혀졌습니다. 즉, 어떤 개념을 익힐 때, 한 가지 방법이 아니라 여러 방법으로 시도해 보는 것이 좋다는 것이죠.

그래서 한가지 기술적 개념을 배웠으면 서로 이질적인 문제를 두 세 개 함께 풀어본다거나, 혹은 한 번은 컴퓨터로 해보고 한 번은 종이에 해보고 등 여러가지 방법을 써서 다양한 경험을 해봅니다.

이렇게 하면 재미도 있고 서로 다른 접근법을 비교하면서 배우는 점이 많습니다.

스터디 방식을 만들어 나가라

애자일 철학을 스터디에 적용하는 셈인데, 스터디 모임이 끝나면 다함께 오늘 스터디에 대해 회고를 합니다. 어떤 점이 좋았고 어떤 점이 아쉬웠는지. 그걸 토대로 다음 스터디 모임의 방식에 조금씩 수정과 실험을 해나가는 겁니다. 사실 처음부터 어떤 스터디 방식이 좋을지 알 수가 없습니다. 생각하고 다르게 나오는 것도 많고요. 그래서 한 번 해보고 조금 수정하고 또 해보고 다르게 실험해 보고 하는 식으로 진행하는 것이 좋습니다.

이 때 단순히 이전 스터디에서 이게 아쉬웠으니 요걸 고치자 하는 반응적인 차원뿐만 아니라, 이런 방식으로 해보면 재미있지 않겠니 하면서 실험적으로 시도해 보는 것도 권하고 싶습니다. 이걸 통해서 생각지도 못했던 좋은 방법을 발견할 수 있습니다.

그리고 이 스터디 방식의 변화는 스터디 모임 리더가 일방적으로 정하지 말고, 참가자들과 함께 논의해가며 정하는 것이 무척 중요하다고 생각합니다. 그 이유는 개인이 조직을 바꾸는 법을 참고하세요. 첫 모임은 스터디에 대한 각자의 포부를 나누고, 스터디 방식을 몇 가지 실험해 보고, 그 자리에서 스터디 방식을 정하는 회의만 하는 걸로 계획하는 것도 좋습니다.






자, 그러면 이제까지 이야기한 것들을 실제로 사용했던 사례를 하나 들고 마칠까 합니다.

2007년 3월부터 대략 11월까지 했던 얼랭(Erlang)이라는 함수형 동시성 프로그래밍 언어 스터디였습니다. 제가 제안을 했었고, 박응주님, 노우경님, 김경수님 등이 꾸준히 참여를 하셨죠. 굉장히 재미있고 유익했던 스터디였는데 다음과 같은 점이 특히 좋았습니다:

  • 토일요일 오전에 한다 : 평일 저녁에 하면 야근 등으로 못오는 사람도 있고 했고, 또 일요일은 늦잠 자기 쉬운데 이렇게 스터디 모임을 오전에 잡아놓으니 오히려 일요일이 더 활력있게 되는 느낌도 있었고, 더 많은 분들이 고정적으로 나올 수 있었습니다. 저희는 보통 토일요일 오전, 점심 때에 주로 했습니다. 개인적으로는 일요일 오전이 제일 좋더군요. 하루를 활기차고 보람차게 시작할 수 있었다는... 
  • 연습문제가 있는 교재를 선택 : 각 챕터 끝에 연습문제가 있는 책을 선정했습니다. 얼랭의 아버지 중 하나인 조 암스트롱이 쓴 Programming Erlang이라는 책을 사용했죠. 학은 각자 집에서 해오고, 습 위주로 했습니다. 해당 챕터의 연습문제를 함께 풀거나 이미 풀어본 것을 공유하는 쪽으로요.
  • 지속적으로 스터디 방식을 개선 : 첫 모임은 참여자 전원이 스카이프로 온라인 회의를 해서 향후 스터디 방식에 대해 토론을 했습니다. 대략적인 방식을 잡았고, 다음 첫 오프 모임에서 좀 더 구체화 했죠. 그리고 그 이후로도 스터디 모임이 끝나면 회고를 통해 개선점 등을 뽑아내고 지속적으로 방식을 발전시켜 나갔습니다.
  • 온라인과 오프라인을 번갈아 : 한 주는 오프라인에서 다 같이 모여 공부하고, 그 다음주는 온라인에서 두 사람이 만나 짝 프로그래밍을 하는 걸로 했습니다. 두 사람 짝은 주마다 바뀌는 걸로 하고요. 이걸 통해 따로 또 같이 효과를 잘 보았죠. 한 사람이 혼자 하려면 의지력이 떨어져도 자기 짝이 있으니까 아무래도 하게 될 확률이 좀 더 높았던 거 같고요. 지난주에 두 사람이 작성한 코드를 오프 모임에서 공유하고 의견도 나누고 하니까 밀도 높은 공부가 되었습니다. 온라인 연습의 동기를 높이기 위해 각 짝이 진행한 바를 온라인에 체크 표시하도록 했습니다.
  • 단시간에 다양한 해법을 접하기 : 제가 로테이팅 인터벌 그룹 짝 프로그래밍이라고 부르는 방식인데, 당시에 고안했습니다. A, B, C, D, E, F라는 여섯 사람이 있다고 칩시다. 둥그렇게 앉습니다. 컴퓨터는 2대입니다. 간단한 문제 하나를 짝 프로그래밍한다고 칩시다. AB, CD, EF가 짝이 됩니다. 6분 알람을 설정합니다. 각 짝들은 나름대로의 방식으로 문제를 풀면서 코딩을 합니다. 근데 컴퓨터가 2대죠. EF는 컴퓨터가 없습니다. 대신 종이와 펜으로 서로 대화하고 생각하고 하면서 코딩을 어떤 식으로 할지 생각하고 그림도 그려봅니다. 6분이 되면 각자 컴퓨터를 자기 왼쪽으로 넘깁니다. 그러면 AB가 작성한 코드는 EF에게 가고 CD가 작성한 코드는 AB에게 갑니다. EF가 작성하던 종이와 펜은 넘기지 않습니다. CD는 자기들만의 노트를 꺼내어 거기에 고민을 풀기 시작합니다. 이 때 중요한 점은, 새로 컴퓨터를 받은 AB, EF는 기존 코드를 지우고 새로 문제를 풀지 않습니다. 문제를 다 못풀었을 겁니다. 옆 짝이 작성하던 코드에서 시작합니다. 그걸 더 발전시킵니다. 무엇보다, 현재 코드가 자라온 무늬결과 방향을 살리면서 문제를 풀어야 합니다(즉, 방식이 잘못되었다고 뜯어고치면 안됩니다). 중복을 줄이고, 의도를 드러내는 리팩토링도 좋습니다. 종이와 펜으로 작업하게 된 CD는 우리가 직전에 코딩한 것을 리팩토링 하려면 어떻게 하면 좋을까 상의도 해보고, 다른 방법으로 접근했더라면 어땠을까 의논하고, 다음 단계로는 어떻게 할까 이야기를 나눕니다. 이렇게 30-40분 정도 돕니다. 그러고 나서 각자의 경험을 이야기합니다. 그러고 짝을 바꾼 다음 다른 문제를 하나 더 풀거나 합니다. 이렇게 하면 짧은 시간에 다양한 접근법을 경험하게 됩니다.
  • 핑퐁 그룹 짝 프로그래밍 : 실험했던 또 다른 그룹 짝 프로그래밍 방법입니다. 네 명일 경우 하기 좋습니다. 사람이 많으면 네 명씩 나누어도 됩니다. 두 사람씩 짝을 지어 앉고, 컴퓨터 한 대를 갖고 핑퐁 프로그래밍을 했습니다. TDD로 개발을 하는데, 테스트 실패 지점에 컴퓨터를 넘깁니다. 즉, 1) 현재 테스트가 통과하게 만들고 2) 리팩토링하고 3) 새 테스트를 추가해서 4) 실패하는 걸 확인한 다음 5) 컴퓨터를 넘깁니다. 컴퓨터가 없는 동안은 다음 테스트에 대해 의논하거나 조금 전 구현한 것의 다른 방법을 종이에 그리고 의논하고 합니다. 이 때 아까와 비슷하게 이미 있는 코드의 결을 살리면서 코딩합니다. 중간에 컴퓨터가 없이 생각하게 만드는 시간이 있는 것이 무척 효과가 좋았습니다.
예시로 컴퓨터 프로그래밍 스터디를 들기는 했지만 거의 모든 방법에 사용할 수 있다고 생각합니다. 예전에 경영 서적 스터디도 이런 식으로 진행을 한 적이 몇 번 있고요.

재미도 있고 공부도 많이 되는 스터디 모임 하시길~!

--김창준

덧글|덧글 쓰기|신고