편집자 주: 케이시 시에라(Kathy Sierra)와 버트 베이츠(Bert Bates)는 지금까지 한 번도 볼 수 없었던 새로운 유형의 자바 입문서인 Head First Java의 저자입니다. 이 인터뷰에서는 그들이 사용하는 독특한 교육 방법에 대해 설명하고 실제로 어떤 효과가 있는지 알아보았습니다. 아직 이 책을 보지 못했다면 이 글을 통해서 그들의 새로운 방법에 대한 열정을 느낄 수 있을 것입니다. 여기에 나와있는 방법들은 오라일리에서 가장 최근에 새로 시작한 시리즈에 적용되어 있습니다. Head First Java를 보고 나면 분명히 그런 방법이 효과적이라는 것을 알 수 있을 것이라고 생각합니다.
Q: 사람들이 프로그래밍 언어를 가르치려고 할 때 나타나는 가장 큰 실수가 무엇이라고 생각하십니까?
A: 크게 두 가지를 들 수 있을 것 같습니다.
1. 배우는 사람들에 대해 너무 많은 것을 가정합니다.
대부분의 프로그래머가 전산 전공자가 아닙니다. 하지만 너무 많은 선생님들이 (그리고 책에서) 고리타분하고 학술적인 말투를 사용합니다. 정확하게 설명하는 것도 분명 중요하긴 하지만 배우는 사람 입장에서는 선생님들이 사용하는 공식적인 용어를 자신들이 일상적으로 사용하는 단어와 연결시키는 것이 너무 어렵습니다. 선생님/저자들은 좋은 의도를 가지고 있지만 비현실적인 경우가 상당히 많습니다. 예를 들어 어떤 테크니컬 라이터가 보통 사람들이 "버그"라는 용어를 너무 아무렇게나 사용한다고 불평하는 것을 들은 적이 있습니다. 물론 "버그"라고 부를 수 없는 결점(fault)이나 실수(failure)에 차이가 있는 것은 분명하고 그런 문제가 상당히 중요한 경우도 있습니다. 하지만 보통 일선에 있는 프로그래머들은 그런 용어를 별로 중요하게 생각하지 않습니다. 그런 문제를 어떻게 불러야 할 것인가 하는 것보다는 어떻게 버그를 찾아내고 어떻게 그 버그를 고칠 것인가 하는 문제가 그들에겐 훨씬 중요합니다. 따라서 대상으로 하는 학생이나 독자들이 일상적으로 사용하지 않는 고리타분한 학술적인 용어에 의존하는 것은 학습 과정에 오히려 방해가 될 수 있습니다. 그렇지 않아도 배우는 것이 쉽지 않은데 괜히 불필요한 짐을 얹어주는 꼴이 되는 것이지요.
선생님들이나 저자가 할 수 있는 가정 가운데 가장 나쁜 것은 배우고 있는 사람이 당연히 그 내용을 열심히 배울 자세가 되어있고 호기심을 가지고 있다고 가정하는 것이라고 생각합니다. 이런 가정을 하는 경우는 정말 흔하게 볼 수 있는데, 그 결과는 보통 둘 중 하나입니다.
A. 독자들이 지루해서 죽으려고 한다.
B. 왜 그런 내용(기술, 접근법, 또는 API)이 중요한지 전혀 알지 못한다.
(물론 이 둘이 확실히 구분되는 것은 아닙니다. 왜 중요한지 알 수 없다면 당연히 지루하게 느낄테니까요.)
따라서 선생님이 중요하다고 생각하는 것과 배우는 사람 입장에서 중요하다고 생각하는 것이 서로 다른 경우가 적지 않게 나타납니다. 자신이 가르치고자 하는 것이 중요한 이유를 알려줄 의무는 선생님 또는 저자에게 있습니다. 썬 마이크로시스템즈에서 강사들을 교육할 때 우리는 강사들에게 학생들은 모두 이마에 커다란 메모지를 붙이고 있다고 생각하라고 가르칩니다. 그 메모지에는 "그게 중요해요?", "왜요?", 또는 "그래서요?"라고 씌어있다고 상상해봅시다. 그리고 여러분의 입에서 튀어나오는, 또는 여러분이 키보드로 입력하는 모든 문장에 대해 학생들이 그러한 질문을 한다고 생각해보라고 가르치지요. 학생이 세 번 정도 질문을 하는 내용이라면 애초에 질문이 나오기 전에 얘기해주는 것이 합당합니다. 즉 단순하게 어떤 것이 어떤 기능을 하는지만 설명하는 것이 아니라 그 작동 원리나 왜 그런 것을 해야 하는지를 미리 설명해야 합니다. 모든 사람들에게 "이것이 중요한 이유"를 이해시킬 수 있어야 합니다.
우리는 종종 강사 및 강의 제작자들에게 세일즈맨의 심정으로 자신이 판매하는 제품의 모든 기능의 장점을 확실히 이해하고 있어야 한다고 말하곤 합니다. 수많은 연구 결과에 따르면 학생들이 의욕적으로 배우고자 하는 마음이 있을 때는 훨씬 더 빠르고 자세하게 배울 수 있다고 합니다. 사실 의욕이 없으면 언어를 전혀 익힐 수 없을 것입니다. 지금 말씀 드리는 의욕이라고 하는 것은 자바에 대한 것만이 아닙니다. 언어 자체를 배우고자 하는 의욕이 넘치는 것뿐 아니라 그 안에 있는 각각의 주제에 대해서도 집중해서 배우기 위해서는 배우고자 하는 욕구가 있어야만 합니다.
2. 두뇌 친화적인 기법을 사용하지 않습니다.
"남들이 다들 이렇게 하니까" 하는 이유로 기존의 방법을 고수하는 대신 사람들의 머리가 원하는 요구사항과 그 목적에 주의를 기울였다면 학습 과정이 훨씬 효율적일 뿐 아니라 즐거웠을 것입니다. 아주 오래 전부터(적어도 소크라테스 시절부터) 사람들은 배우는 사람이 수동적으로 정보를 받아들이기만 하는 경우에는 학습 효과가 가장 약하다는 것을 알고 있었습니다. 예를 들어 정말 무섭거나 신나는 일은 그 일이 한 번만 일어나더라도 영원히 기억에 남을 수 있습니다. 하지만 기술적인, 까다로운 내용은 아무리 열심히 공부하려고 해도 여러 번, 심지어는 수십 번 같은 내용을 반복해야만 머릿속에 확실히 남길 수 있고 그래야 나중에 필요할 때 바로 기억해낼 수 있습니다. 우리 뇌 속에서는 사실 별로 필요하지 않은 것을 억지로 기억해주는 셈이죠.
신경생물학은 상당 부분 기억과 학습을 저해하려는 두뇌의 활동과 연관되어있습니다. 우리의 뇌는 될 수 있으면 기억을 하지 않으려는 습성을 가지고 있습니다. 이는 생존을 위한 메커니즘으로, 우리 머릿속에서는 불꽃의 느낌이나 호랑이의 모양, 방울뱀의 소리와 같이 살아남는 데 있어서 훨씬 중요한 내용을 기억하기 위해 소중한 자원을 아끼려고 합니다. 뭔가를 기억하는 데 있어서 항상 걸림돌이 되는 셈입니다. 이런 문제를 해결하려면 뇌에서 지금 우리가 배우고 있는 것이 정말 중요하다고 생각하도록 만드는 수 밖에 없습니다.
우리 뇌에서는 어떤 상황에서 뭔가가 중요하다고 파악할까요? 무서운 호랑이가 여러분을 덮치려고 하면 뇌에서는 화학물질이 마구 뿜어져 나옵니다. 뇌에서는 그런 조건을 중요하게 받아들입니다. 예를 들어 별로 재미없고 딱딱한 교과서를 읽고 있다거나 무미건조한 강의를 듣고 있을 때는 감정적인 동요가 거의 일어나지 않습니다. 그러면 여러분의 두뇌는 "아무것도 느낄 수 없어. 그렇다면 이건 전혀 중요하지 않겠지? 호랑이같이 중요한 내용을 잘 기억하려면 이런 중요하지 않은 내용에는 자원을 낭비하면 안 되지."라고 생각을 하게 됩니다.
그러면 어떻게 해야 여러분의 뇌를 속일 수 있을까요? 느리고 고통스러운 방법을 택할 수도 있고 훨씬 나은 방법을 쓸 수도 있습니다. 느리고 고통스러운 방법은 제가 대학에서 석사 과정을 밟을 때 썼던 방법으로 단순하게 반복하는 방법입니다. 머릿속에서는 전혀 중요하지 않다고 느끼겠지만 계속 똑 같은 것을 반복하면 아무리 지루하더라도 설마 이게 중요하지 않다면 이렇게까지 반복할까 하는 생각에 결국은 그 내용을 받아들이게 됩니다. 충분히 여러 번 반복하면 무엇이든 배울 수 있습니다. 물론 많은 경우에 그런 것은 단순 암기에 불과해서 어떤 것을 정말 이해하고 배운 것을 응용할 때는 별로 도움이 되지 않을 수 있습니다.
더 나은 방법은 뇌에서 뭔가를 느끼게 하는 것입니다. 아무 것도 느끼지 못하는 것보다는 아무리 하찮은 것이라도 느끼는 것이 좋습니다. 무엇이든지 여러분이 직접 하는 것, 또는 여러분을 놀라게 하는 것, 긍정적인 의미에서 도전할만한 것, 호기심을 불러일으키는 것, 즐겁게 만드는 것, 잠이 확 깨게 하는 것, 흥분시키는 것이 있다면 배우는 데 도움이 됩니다. 반드시 감성적으로 크게 자극을 받아야만 배우는 데 도움이 되는 것이 아닙니다. 단순히 킥킥거리고 웃는다거나 유치한 내용을 보고 괴로워할 때도 여러분의 두뇌에서는 뭔가를 느낄 수 있습니다.
우리의 두뇌는 시각적인 자극에 매우 민감하게 반응하고 항상 새로운 것을 추구하기 때문에(이것도 생존을 위한 메커니즘입니다) 헤드 퍼스트 자바 책이나 강의를 할 때도 이런 특징을 최대한 활용했습니다. 많은 사람들이 학습에 방해가 된다고 생각하는 것 중에는 알고 보면 학습 과정에 도움이 되는 중요한 것들도 있습니다. 변화하는 것은 거의 모두 좋다고 보면 됩니다. 예를 들어 선생님이 갑자기 아무 설명이나 예고도 없이 설명하는 도중에 탭 댄스를 추면서 설명을 하다가 탭 댄스를 멈추고는 아무 일도 없었다는 듯이 계속 수업을 진행한다고 상상해봅시다. 이런 행동은 과연 수업에 방해가 되는 것일까요? 물론 이상하겠죠. 하지만 똑 같은 말투로 설명한 내용에 비해 이렇게 이상한 행동을 하면서 설명한 내용은 기억에 잘 남을 가능성이 높습니다. 영화 "죽은 시인의 사회"에서 로빈 윌리엄스가 책상 위로 뛰어올라가서 수업을 하는 장면은 기억에 아주 잘 남을 것입니다. 이는 우리 뇌에서 전혀 기대하지 못했던 것이고 바로 그런 점에 뇌가 반응을 하기 때문입니다. 그리고 이런 반응에 의해 시냅스에서는 좋은 일이 일어납니다.
우리는 선생님들에게 이런 질문을 합니다. "똑 같은 주제를 다룬다고 할 때 지루하고 재미없는 강의와 흥겨운 디너 파티에서의 대화 중에 어떤 것에 더 관심이 가겠습니까?" 연구 결과에 따르면 어떤 정보를 청자/독자들이 참여할 수 있는 대화 형태로 제공하면 청자/독자들의 뇌는 그 정보에 더 많은 주의를 기울인다고 합니다. 대화에 참여하고 있는 느낌을 받기 때문인데, 이는 책인 경우에도 마찬가지라고 합니다. 실제 대화를 할 때는 대화가 끊어지는 일은 없어야 하기 때문에 더 많은 주의를 기울여야만 합니다. 하지만 수동적으로 강의를 듣고 있다거나 딱딱한 어투로 쓰인 책을 별 감흥 없이 읽기만 한다거나 하는 경우에는 뇌에서 불필요한 내용으로 간주하여 기억하기를 거부합니다. 아무리 여러분이 그렇게 되길 원치 않는다고 하더라도 (예를 들어 시험이 2주밖에 안 남았다면 기억하고 싶겠죠?) 실제 두뇌에서는 별로 개의치 않습니다. 하지만 대화하는 방식을 사용하게 되면 그 대화가 우리의 머리와 책장 위에 있는 단어 사이에서 일어난다고 하더라도 어느 정도 효과가 나타난다는 장점이 있습니다.
뇌와 관련하여 한 가지 또 중요한 점은 몸을 만들기 위해서 운동을 해야 하는 것과 마찬가지로 뇌에 대해서도 훈련이 필요하다는 점입니다. 수동적인 학습(실제 머리를 쓰지 않으면서 읽거나 듣기만 하는 것)은 다른 사람이 체육관에서 열심히 역기를 드는 것을 구경하기만 하는 것과 똑같습니다. 근육을 움직이지 않고는 근육이 더 강력해지기를 바라면 안 될 것입니다. 뇌에 대해서도 마찬가지입니다. 능동적으로 생각을 하고 연습을 해야만 합니다.
뭔가를 읽고 나서 완전히 이해했다고 생각했는데 누군가로부터 그 내용에 관한 질문을 받고 나서 그런 믿음이 무참히 깨진 경험을 해 본 사람들이 많이 있을 것입니다. 이런 경우에는 두 가지 일을 해야 합니다. 그 내용에 대해 생각해보고 소리 내어 말을 해야 하지요. 같은 내용을 여러 번 읽는 것보다는 소리 내어 말해보는 것이 학습 효과 면에서 더 좋은 경우가 많이 있습니다. 무엇이든 내용을 더 깊이 처리하도록 강요 받게 되면 우리 뇌에서 어떤 연관 관계가 맺어지고, 그 관계가 더욱 강화되는데, 바로 그런 것이 학습에 도움이 되지요. 사실 단순히 우리 뇌에서 더 많은 관심을 기울이도록 하는 것은 첫 번째 단계에 불과합니다. 그 뒤에는 어떤 연습이라든가 까다로운 질문, 놀라운 결과 등을 통해서 주어진 내용에 대해 더 깊이 생각을 하는 단계가 필요합니다.
Q: 사람들이 프로그래밍 언어를 배우려고 할 때 저지르는 가장 큰 실수는 무엇이라고 생각하시는지요?
A: 자신의 머리가 어떤 식으로 돌아가는지 충분히 알지 못한다는 것입니다. 배우는 사람 입장에서 가장 기본적인 것 ? "뭔가를 느끼지 못한다면 우리 뇌에서는 굳이 그 내용을 기억해두려 하지 않는다" 라는 문장으로 정리할 수 있습니다. ? 만 알아도 학습 효율을 크게 향상시킬 수 있습니다. 각자 자신의 머리를 속여서 지금 공부하고 있는 내용이 중요하다고 믿게 만드는 방법을 만들 수 있을 것입니다. 두뇌를 활발하게 움직이도록 만들 수만 있다면 어떤 것이든 도움이 됩니다.
우리가 적용할 수 있는 방법은 상당히 다양합니다. 엄청나게 재미없는 내용도 잘만 하면 뇌에서 중요한 의미를 가지는 것으로 인식하도록 만들 수 있지요.
일단 맨 처음에는 참여하는 것 ? 단순하게 읽거나 듣는 것과 반대되는 것 ? 만으로도 상황이 크게 달라집니다.
Q: 책을 쭉 훑어보니까 관심만 있다면 우리 어머니께도 읽어보시라고 해도 괜찮을 것 같다는 느낌이 들더군요. (저희 어머니는 사실 리눅스를 쓰고 계십니다.) 그리고 저도 잊고 있던 것, 몰랐던 것을 몇 가지 새로 배웠고요. 이 책은 어떤 독자들을 대상으로 쓰셨는지요? 강의하실 때 수강생들을 보면 메인프레임에서 작업하던 사람들하고 취미로 자바 강의를 듣는 사람들이 별 구분 없이 섞여있던데 정말 그런가요?
A: 아마 그럴 겁니다. 하지만 저는 이 책이 자바를 편하게 시작하고 싶어하는 전문 C 프로그래머 혹은 C++ 프로그래머들에게도 도움이 될 것이라고 생각합니다. 그들이 가지고 있는 객체 지향 개념을 깔끔하게 정리해줄 수 있을 테니까요. 이 헤드 퍼스트 접근법의 가장 큰 장점 가운데 하나는 올바른 학습 방법을 충분히 적용하면 다양한 수준의 독자들에게 도움을 주면서도 그들의 요구를 모두 충족시킬 수 있다는 것입니다. 기존의 수동적인 방법을 사용한다면 수준의 배경지식, 노력하는 정도, 학습 속도가 딱 알맞은 수강생을 만날 기회가 별로 없다고 할 수 있습니다. 하지만 모든 사람들이 자신의 학습 과정에 적극적으로 참여하면서 각각 특화된 내용을 가지고 작업을 하면 초보자부터 고급 프로그래머에 이르기까지 다양한 사람들이 모두 많은 것을 배울 수 있습니다.
저는 그런 식으로 재미있게 가르칠 수 있었습니다. 모든 학생들이 각자 이 강의는 "나만을 위한" 강의라고 생각할 수 있도록 하는 방법을 찾아내면서 말이죠. 물론 실패도 많이 있었지만 보통 제가 써야만 했던 코스웨어라든가 강의 형식 때문에 생기는 제약 때문에 운신의 폭이 상당히 좁았습니다. 헤드 퍼스트 접근법은 더 쉽게 배울 수 있도록 하기 위해 다양한 학습 이론을 적용할 수 있는 기회가 되었습니다. 그래서 강사(또는 독자/수강생)들이 학습 때문에 고생하는 대신 지식을 쌓아 올리는 데 집중할 수 있었습니다.
하지만 이 책은 "프로그래밍" 자체를 처음으로 배우는 사람들을 대상으로 한 책은 아닙니다. 독자들이 프로그래밍을 해 본 경험은 있다고 가정하고 쓴 책이죠.
하지만 헤드 퍼스트 자바는 자바스크립트 정도밖에 다뤄보지 않은 사람이라도 쉽게 배울 수 있도록 읽기 쉽고 두뇌 친화적인 방법으로 만들었습니다. HTML 태그에 대한 지식만 있는 사람이라면 좀 어렵겠지만 HTML만 알고 있는 웹 디자이너 중에서도 처음에는 불가능해 보였지만 읽어보니까 실제로 자바를 배울 수 있었다고 하는 사람들도 있었습니다. 하지만 그런 사람들이 우리가 겨냥하는 주 독자층은 아닙니다. 이 책은 코볼, 비주얼 베이식, 펄, C, C++, 스몰토크, 오브젝티브 C 등을 사용하는 사람들을 주 독자층으로 생각하고 쓴 책이니까요.
이 책을 검토하신 분들 중에는 상당히 고급 주제까지 다루고 있다는 점을 놀랍게 생각하는 분들이 많았습니다. 다중 스레드 네트워크 소켓 채팅 클라이언트(멀티유저 드럼 머신 프로그램), (서비스와 서버를 갖춘) RMI 서비스 브라우저와 같은 것도 다루니까요. 이 책에서는 언어의 기초에서 시작해서 다양한 배포 옵션에 이르기까지 밑바닥부터 상당히 수준 높은 내용까지 다룹니다.
이 책은 워낙 쉽게 구성되어있기 때문에 "좀 떨어지는 사람들", 또는 "초보자"를 대상으로 하는 책이라는 오해를 살지도 모르겠습니다. 하지만 두뇌 친화적인 방법은 거의 모든 사람들에게 도움이 됩니다. 객체지향 개념을 거의 완벽하게 이해하고 있는 C++ 고수라면 이런 책이 필요 없을지도 모릅니다. 이미 많은 것을 알고 있으니까요. 하지만 그런 독자에게는 자바에 대한 헤드 퍼스트 접근법이 필요한가 아니면 다른 자바 책이 필요한가 하는 것은 중요한 문제가 되지 않을 겁니다. 굳이 학습서를 보지 않고 바로 Java in a Nutshell 같은 책을 봐도 될 테니까요.
Q: 일반적으로 입문서에서는 여러 가지 훌륭한 테크닉은 피하는 경향이 있습니다. 하지만 이 책에서는 XP의 테스트 위주의 개발 사이클(일단 테스트 코드를 만든 다음 그 테스트를 통과할 수 있는 코드를 만드는 개발 사이클)을 추천하시던데요. 지금까지 가르쳐 본 수강생들에게 이 방법이 잘 통했나요?
A: 제가 경험한 아주 똑똑한 초보자와 평균 수준의 초보자들 사이에서 볼 수 있는 가장 큰 차이점은 아주 똑똑한 초보자들은 간단한 테스트 코드를 만드는 식으로 더 많은 것을 배운다는 점이었습니다. 학생들에게 테스트 코드를 실행시키는 것을 알게 해 주는 것은 매우 좋은 생각이라고 봅니다.
XP 경험이 없어도 크게 다르지 않습니다. 그리고 강의실은 현실 세계와는 좀 거리가 있죠. (특히 5일 연속 코스인 경우에는 더 그렇겠죠?) 하지만 일단 그 감각을 익히고 나면 모든 게 분명해집니다. 그렇다고 해서 우리가 XP 전도사라든가 그런 건 아닙니다. 우리가 강의에서 쓰는 방법은 사실 XP의 극히 일부분에 불과하죠. (가끔씩 두 명이 하나씩 팀을 짜서 프로그래밍을 하는 연습을 하기도 합니다만.) 한 가지 확실한 것은 어떤 것에 대해 생각하는 방법을 배우는 것이 실제로 우리가 배우는 그 어떤 것만큼이나 중요하다는 점입니다. 앞에서 얘기했던 "왜"와 "왜 중요한가" 하는 질문에서도 마찬가지인데, 우리가 뭔가를 완전히 이해한다면 연습문제도 그리 어려운 것이 아닌, 자연스럽게 해결할 수 있는 것이 된다는 것입니다. 우리는 사람들이 어떤 일을 하는 올바른 방법(또는 좋은 방법)은 이상한 접근법이 아닌 가장 자연스러운 방법이어야 한다는 것을 느낄 수 있기를 바랍니다. 누군가가 "이 연습문제를 왜 해야 하는지 잘 모르겠어요"라고 말한다면 뭔가 문제가 있다는 것을 알 수 있습니다. 그러면 우리 입장에서는 꽤 괴롭지만 그런 일이 있을 때마다 우리는 사람들의 학습을 돕는 데 있어서 무엇을 해야 하고 어떤 것을 하지 말아야 하는지를 배울 수 있습니다.
Q: 수업 준비를 할 때는 어떤 점을 고려하시나요? 연습문제는 어떤 식으로 선택하시나요? 인지과학에 대한 내용이 언급되어있는데 정보를 보여줄 때는 어떻게 해야 하는 지침 같은 것은 혹시 없나요?
A: 우리가 일을 할 때는 항상 어떤 지침을 따릅니다. 강의를 준비할 때 물론 목표와 목적을 설정하는 것과 같은 전통적인 작업도 합니다. 하지만 그것만으로 전체적인 방향을 잡을 수는 없지요. 우리는 항상 질문을 던지고 득실을 따져봅니다. 우리는 강의 내용이 흥미롭고 수강생의 관심을 끌만한 것이어야 한다는 점을 매우 중요하게 생각하고, 그렇기 때문에 우리의 지침에는 바로 그 점이 맨 위에 있지요. 그래서 재미있는 예제와 연습문제를 만들기 위한 아이디어를 쥐어짜는 데 상당히 많은 시간을 투자합니다. 재미있으면서도 실용적인 것을 찾아내는 것이 쉽지는 않거든요. 우리는 많은 선생님들이 중요하게 생각하는 "실전" 예제는 사실 그리 중요하지 않다고 생각합니다. 대신 예제의 토대를 이루고 있는 구조가 쉽게 확장 가능하고 실전에서 하는 것에 대응될 수 있어야 한다는 점을 중요하게 여깁니다.
예를 들어 제가(케이시) 썬에서 지니 코스를 강의하고 있을 때 분산 임차(distributed leasing)에 대한 예제가 있었습니다. 코스웨어에는 수강생들이 서버로부터 임차권을 받아오고 그 임차권을 계속해서 갱신하는 코드를 만들라는 내용이 들어있었죠. 임차권을 갱신하지 못하면 뭔가 잘못된 것입니다. 하지만 코스웨어에는 숫자를 임차하는 것으로 되어있었습니다. 예를 들어 "2"나 "7" 같은 숫자를 말이죠. 그런데 그 숫자에는 아무 의미도 없었어요. 그러다 보니 "4" 같은 숫자를 받아오지 못한다고 해서 큰 문제가 생긴다거나 하는 느낌은 들 수가 없었죠. 그냥 어차피 별 의미가 없는 숫자를 다시 받아오기만 하면 되니까요. 하지만 저는 사람들이 임차권을 잃었을 때 뭔가를 느끼도록 하고 싶었어요. 서버로부터 받아온 자원에 대해 눈곱만큼이라도 애착이 가도록 해서 그것을 읽어버리는 것이 아무 의미 없는 일이 되는 건 막고 싶었죠.
그래서 시스템을 약간 바꿔서 서비스를 가상 애완동물에 대한 사육장으로 고쳤습니다. 가상의 애완동물을 서버에 있는 사육장에 집어넣은 다음 임차권을 받아오는 식으로 했죠. 임차권을 갱신하지 않으면 임차권이 만료되었고 강아지는 가비지 컬렉터에 의해 처리해버리겠다는 공지가 날아오게 되었죠. 즉 죽어버리는 겁니다. 물론 가상적인 강아지에 불과하지만 자신의 강아지가 죽었다는 얘기를 듣는 것과 그냥 "7"이라는 숫자가 사라졌다는 것 사이에는 큰 차이가 있지요.
그 주가 끝날 무렵 수강생들에게 자신이 원하는 지니 서비스를 마음대로 만들어보라고 했을 때 많은 수강생들이 바로 그 가상 사육장 프로그램에 동물을 고르거나 하는 작업을 할 수 있는 GUI 프론트 엔드를 덧붙이고 임차권을 잃어버리는 순간에 "운명의 소리"라든가 애처롭게 낑낑거리는 강아지의 소리가 나오는 기능을 추가하더군요.
그런 가상적인 사육장을 실전에서 만들 일은 사실 없다고 봐야겠죠. (자바원(JavaOne) 키노트에서 제임스 고슬링이 농담 삼아 다음에 나올 킬러 애플리케이션은 주인이 없는 사이에 가상 애완동물과 같은 AI를 기반으로 하는 대상을 맡아주는 가상 서비스가 될 것이라고 한 적이 있긴 하지만요) 하지만 그 연습문제를 해결하는 동안 처리했던 일은 모두 출력이나 컴퓨팅 서비스 같은 것을 위한 임차권을 다룰 때에도 똑같은 식으로 처리해야 했을 만한 일입니다. 배우는 사람 입장에서 자신이 재미있게 해결했던 예제가 나중에 심각한 실전 예제에 쉽게 적용될 수 있다는 것을 알 수만 있다면 별 문제가 없습니다. 주어진 예제가 나중에 그들이 실제로 해야 할 일과 무슨 상관이 있는지 깨달을 수 없다면 그건 문제가 되지요. 우리에게는 "똑같을 필요는 없다. 연관이 있기만 하면 된다"라는 모토가 있습니다. 즉 실전에서 해야 할 일과 굳이 똑같은 것을 해야 하는 것은 아니라는 말이죠. 그 대신 예제와 연습문제를 실전 시나리오에 그대로 대응시킬 수 있다는 것을 이해시키면 됩니다. 게다가 이렇게 하면 연습문제를 풀 때마다 그것이 실전에서 어떤 것과 연관되는지 알아내도록 하는 과정을 통해 더 많은 것을 생각하게 할 수 있다는 장점도 있습니다.
그 외에도 강의나 예제를 준비할 때 중요하게 여기는 내용들은 다음과 같습니다.
- 80/20 규칙을 철저하게 따릅니다.
아무리 좋은 교육 방법을 사용하더라도 누군가의 머릿속에 집어넣을 수 있는 내용에는 한계가 있습니다. 특히 배우는 사람들이 연습을 통해 내용을 체득하기 위한 시간이 많지 않은 경우 ? 예를 들면 수업 사이의 시간이 매우 짧은 경우 ? 에는 한계에 부딪힐 수 밖에 없죠. 책의 경우에는 독자가 알아서 속도를 조절할 수 있기 때문에 약간 낫긴 하지만 어느 정도는 같은 문제점이 적용된다고 할 수 있습니다. 따라서 가장 효과적인 것을 찾아내는 접근법이 좋다고 생각합니다. 어떤 주제를 가르쳐줄 때 배우는 사람이 배울 수 있는 분량에 한계가 있다면 무엇이 가장 중요한지 결정해야 합니다. 모든 내용을 다루고, 대신 수박 겉핥기 식으로 설명해서 실질적으로는 아무것도 배운 게 없도록 하는 게 나을까요? 아니면 몇 가지만 설명하고 대신 가르쳐주는 내용에 대해서는 확실하게 다루는 것이 나을까요?
몇 가지 내용을 빼먹었다고 저를 비판하는 경우를 가끔씩 봤습니다. 종종 "어떻게 이 내용을 빼먹을 수 있습니까?"하면서 물어보는 경우도 있습니다. 그럴 때면 저는 "그 내용은 필요하면 찾아서 공부할 수 있을 거예요. 모든 내용을 배우진 않았지만 X에 대한 것만큼은 확실하게 알게 됐잖아요."라고 반박을 합니다. 어떤 것을 제외시킬지를 결정하는 것은 사실 상당히 괴로운 일이고 어느 정도 용기도 있어야 합니다. 하지만 어떤 내용을 "훑어보는" 개념은 학습에 대해 접근하는 데 있어서 매우 좋지 않다고 생각합니다. 레퍼런스 같은 것은 훑어보는 것도 괜찮겠지만 "레퍼런스"와 "학습" 사이에는 분명한 차이점이 있으니까요. 우리는 지금 100 퍼센트 학습에 관한 내용을 이야기하고 있기 때문에 생산성을 극대화시키기 위해서는 다루는 내용의 분량은 어느 정도 희생하는 것이 낫습니다.
- "우리가 무엇을 이야기하는가" 보다는 "그들이(배우는 사람들이) 무엇을 하는가" 하는 것이 중요합니다. 그들의 머리 속에서 어떤 일이 일어나는지에 관한 문제인데 뇌에서 어떤 일이 일어나려면 능동적으로 참여를 해야 합니다. 체크리스트에서 가장 중점을 두는 부분이 바로 그 점이죠. 저희가 사용하는 체크리스트에는 다양한 경로를 통해 정보와 지식을 제공하는, 예를 들자면 그림과 글을 함께 사용한다든가 왼쪽 뇌를 주로 훈련시킬 수 있는 예제와 연습문제, 오른쪽 뇌를 주로 훈련시킬 수 있는 예제와 연습문제를 함께 제공한다든가 하는 항목이 포함되어있습니다. 두뇌의 여러 부분을 활발하게 사용할 수 있도록 광범위한 활동을 유도하려고 항상 노력을 합니다. 이렇게 하면 다음과 같은 세 가지 목적을 달성할 수 있습니다.
1. 서로 다른 학습 형식과 유형이 다양하게 제공될수록 모든 사람이 그 내용을 받아들일 가능성이 높아집니다.
2. 개개인이 선호하는 학습 형식과 상관없이 같은 내용을 다양한 방법을 통해 배울수록 더 많은 정보를 얻고 이해할 가능성이 높아집니다. 마치 똑같은 파일을 여러 군데 복사해두는 것하고 비슷합니다. 그러면 필요할 때 파일을 찾을 수 있는 가능성이 높아질 것이고, 파일을 복사할 때마다 그에 대한 정보를 얻을 수 있을 테니까요. 새로운 지식이 여러분의 두뇌에 다양한 방식으로 저장되는 것이 좋습니다. 그러면 기억해낼 가능성도 높아지고 동시에 더 잘 이해할 수 있으니까요.
3. 두뇌를 왼쪽 뇌와 오른쪽 뇌를 번갈아 가면서 연습문제를 풀고 가상적인 시나리오를 생각해보고 산문 같은 글도 읽어보고 핵심만 정리해놓은 것도 읽어보고 질문과 답변도 읽어보고 패턴 매칭도 해 보고 하는 식으로 여러 가지 서로 다른 방식으로 써먹으면 두뇌를 더 오랫동안 생산적으로 훈련시킬 수 있습니다. 어느 한 쪽을 열심히 사용하는 동안 다른 쪽은 휴식을 취할 수 있으니까요. 예를 들어 계속해서 왼쪽 뇌만 열심히 써먹으면 왼쪽과 오른쪽을 번갈아 가며 쓰는 경우에 비해 훨씬 더 쉽게 지칩니다. 왼쪽 팔 운동만 계속 하지 않는 것과 마찬가지로 한쪽 뇌만 계속 쓰는 것은 바람직하지 않겠죠. 양쪽 팔을 번갈아 가면서 운동하면 운동 효과가 뛰어나다는 것을 떠올려 보세요.
Q: 프레젠테이션이나 강의를 하는 사람들에게 알려줄 만한 비법 같은 것이 있다면 좀 알려주시겠습니까?
A: "죽은 시인의 사회"를 한 번 보세요.
놀라운 모습을 보여주십시오.
정렬을 표출하십시오. 미친 듯이 날뛰는 정렬을 보일 필요는 없습니다. 내면적으로 살아있는 느낌만 가져도 됩니다.
가르치는 선생님 입장에서 생각하지 말고 배우는 학생 입장에서 생각하십시오.
주제에 주의를 기울이십시오. 그렇지 않으면 학생들도 관심을 가지지 않습니다. 같은 내용을 여러 번 반복해서 말하면 지루하지 않습니다.
열정을 가지고 있는 것은 매우 중요합니다. 언젠가는 그 열정이 "선생님으로써의 소질"을 앞서게 될 것입니다.
우리는 항상 강사들에게 "미안하지만 이건 여러분에 대한 이야기가 아닙니다"라고 가르칩니다. 모든 것은 배우는 사람에 대한 것입니다.
조금 까다롭게 느껴질지도 모릅니다. 결국 모든 좋은 선생님들은 "좋은 선생님이 되기 위해 무엇을 해야 할까?" 하는 질문에 대한 답을 찾는 데 초점을 맞춥니다. 하지만 이 질문은 옳지 않은 질문입니다. 선생님은 뒤로 물러나고 학생들을 무대에 세울수록 학습 효과는 좋아집니다. 그래서 저는 "더 잘 설명하기 위해" 노력하는 선생님들을 볼 때마다 그들이 잘못된 길을 가고 있다는 것을 느낍니다. "어떻게 하면 잘 가르칠 수 있을까?" 대신 "어떻게 하면 학생들이 더 많이 배울 수 있을까? 어떻게 하면 배울 수 있는 것일까?" 하는 질문을 해야 합니다. "내가 어떻게 해야 할까?" 하는 자세에서 벗어나고 나면 놀라운 일이 일어날 수 있습니다. 우선 선생님으로써의 부담을 덜고 나면 큰 짐을 덜어놓을 수 있습니다. 그리고 학생들이 더 많은 것을 하도록 만들려면 여러분은 더 게을러져야 하지요 ;)
마지막으로 제가(케이시) 썬에드(SunEd)에서 강사로 있을 때 했던 실험을 소개해보겠습니다. 썬에드에서 고객 평가 점수가 얼마 이상 되는 높은 점수를 받은 강사들에게 특별한 상을 주겠다고 발표했습니다. 그 수준에 오르려면 1년은 족히 걸릴 것입니다. 저는 사실 전통적인 강의 실력을 기준으로 보자면 평균 정도밖에 되지 않았죠. 정리도 잘 못하고 칠판 글씨도 엉망이고 농담도 잘 못하거든요. 그래서 저는 그 상을 타기 위한 접근법을 찾아내기 위한 실험을 했습니다.
제 이론은 이랬습니다. 금요일에 수업이 끝날 무렵에 학생들이 자신들이 똑똑하고 훌륭해졌다고 느낀다면 강사들이 똑똑하고 훌륭하다고 느끼는 것에 비해 더 좋은 점수를 받을 수 있을 거라고 생각했죠. 다른 강사들 ? 저보다 훨씬 아는 것도 많고 강의 실력도 뛰어난 강사들 ? 은 학생들이 "강사는 매우 똑똑했으며 강의도 잘 했습니다"라는 평가를 했음에도 불구하고 좋지 않은 점수를 받는 이유를 찾느라 혈안이 되어 있겠죠. 어떤 강사들은 제 수업에 들어와 보고 제가 강의 실력이 별로 좋지 않은 것을 확인하고는 허탈해져서 나가곤 했습니다. 저는 한 번 끝까지 가 보기로 했죠. 마지막 6개월 정도는 학생들에게 저에 대한 소개도 제대로 하지 않았습니다.
오랜 기간 동안 검증 받은 강의법에 따르면 강사들은 학생들에게 신뢰를 심어주는 것으로 강의를 시작해야 하고, 그것은 바로 강사 자신의 화려한 경력과 실력을 보여주는 것이라고 할 수 있을 것입니다. 그런데 저는 저 자신을 그 분야의 전문가라고 각인시키는 대신 "학습을 도와주는 사람" 정도로만 소개하면 어떨까 하는 생각을 했습니다. 혹시나 해서 드리는 말씀인데, 기술적으로 꽤 고급 내용을 가르치는 강의였습니다. 저는 썬에서 가장 까다로운 자바 수업인 지니(Jini)와 EJB를 가르치고 있었거든요. (물론 초급 강의도 맡고 있긴 했습니다.)
어떤 결론이 나왔을지 이미 감을 잡으셨겠죠? 결과가 좋지 않았다면 이 얘기를 꺼내지도 않았을 테니까요. 그 실험은 매우 성공적이었습니다. 그리고 저는 미국에서 그 상을 받은 네 명의 강사 중의 하나로 뽑혔죠.
그러면 어떻게 해야 학생들이 자신이 똑똑하고 훌륭하다고 느끼게 할 수 있을까요?
- 학생들 위주로 진행해야 합니다.
- 각 학생의 배경을 존중해야 합니다. 강사가 아닌 학생들 각각 자세하게 자기 소개를 할 수 있도록 하고 각 학생에 대해 아는 것을 바탕으로 어떤 식으로든 학생들의 경험을 활용할 수 있도록 합니다.
- 수준을 조절할 수 있는 연습문제를 사용합니다. 그러면 서로 다른 수준의 학생들의 실력을 모두 향상시킬 수 있고 모든 학생들이 적당한 정도로 머리를 써서 문제를 해결할 수 있으니까요.
- 연습문제에 대한 정답은 무슨 일이 있어도, 절대로 알려주지 않습니다. 답을 알려주는 것은 학생들이 도전하고 성취할 기회를 빼앗는 것입니다.
- 하지만 모든 학생들이 문제를 성공적으로 해결할 수 있도록 해야 합니다. 문제 해결을 시작하는 데 도움이 될 수 있도록 "단계별 팁" 같은 것을 제공해보세요. 이렇게 하면 학생들에게는 "답을 보고 대강 풀었다는" 죄책감이 들지 않게 하면서도 어찌해야 할지를 모르는 학생들에게 도움을 줄 수 있습니다.
- 실습 시간에는 심하다 싶을 정도로 명확하게 해야 합니다. 어떤 것을 해야 할지, 어떤 것을 하고 있는지, 제대로 하고 있는지 어떻게 알 수 있을지를 모르기 때문에 제대로 된 실습을 할 수 없는 경우가 대부분입니다. 학생들에게 제대로 하고 있는지 알아낼 수 있는 방법을 알려주세요. (예를 들어 "그 클래스에 들어 있는 코드가 15줄이 넘으면 최선의 코드를 만들었다고 할 수 없습니다" 하는 식으로 말이죠.)
- 게임 설계 "흐름"의 원칙을 공부해보고 적용해보세요. Flow: The Psychology of Optimal Experience라는 책을 읽어보면 도움이 될 것입니다. 이 책에는 누군가로 하여금 특정 영역에 들어가서 완전히 몰두해서 시간 가는 줄도 모르고 최선을 다하도록 만드는 방법이 자세하게 나와있습니다. 최고의 게임 설계자는 이 방법을 사용합니다. 최고의 감독들도 마찬가지입니다. 결국 알맞은 수준의 도전할만한 대상을 찾아내는 것이 중요합니다.
- 세일즈에 대한 책을 읽거나 수업을 들어보고 광고 및 마케팅에 대해서도 조금 공부해보세요. 매디슨 애비뉴(Madison Avenue)에서는 사람들이 60초 안에 뭔가를 느끼게 하는 방법을 연구하는 데 수십억 달러를 쏟아 붇잖아요. 그 결과를 보면 아주 많은 것을 배울 수 있습니다. 힌트: 공통적인 테마와 반복되는 광고를 본다면 그런 방법이 통한다는 것을 알 수 있습니다. 그런 원리를 그대로 활용해서 학생들이 흥미를 가지고 수업에 참여하고 뭔가를 느낄 수 있도록 유도해 보세요.
- 무엇보다도 항상 재미있게 살아보세요. 작년에 콜로라도에서 생전 처음으로 제임스 테일러(James Taylor) 콘서트에 갔었는데 콘서트에서 감동의 눈물을 흘려본 건 그 때가 처음이었어요. 왜 그랬냐고요? 테일러가 "Fire and Rain" 같이 25년 이상 불러온 노래들을 부르는데도 그 순간이 생애에서 가장 기억할만한 순간인 것처럼, 가장 소중한 관객들에게 불러주는 것처럼 불렀거든요. 물론 그 가수는 똑 같은 노래들을 매달, 매년, 그리고 같은 도시에서도 여러 번 불렀겠지만 말이죠.
몇 달, 몇 년, 몇 십 년을 가르치더라도 학생들 입장에서 그 강사는 가장 기억할만한 강의인 것처럼, 가장 소중한 학생들에게 강의를 하듯이 수업을 했다는 생각이 든다면 어떨지 생각해보세요. 그렇게 된다면 가장 실력이 떨어지는, 강의에도 열심히 참여하지 않는, 준비가 되지 않은 학생이라도 감동을 느낄지 모르지 않을까요?