컨텐츠 바로가기

더 많은 일을 하면서 더 빨리 하기

http://agile.egloos.com/1762301

모순입니다. 어떻게 더 많이 하면서 더 빨리 할 수 있을까요?

앨린 톰슨(Allyn Thompson)이란 사람이 있습니다. 아마추어 망원경 제조에서는 전설적인 인물이라고 합니다. 1947년에 다음 책을 출판했고 지금도 고전으로 읽히고 있다고 합니다.



그 사람이 이런 말을 했습니다.

It is faster to make a four-inch mirror then a six-inch mirror than to make a six-inch mirror.

4인치 반사경을 만든 다음에 6인치 반사경을 만드는 것이, 6인치 반사경 하나 만드는 것보다 더 빠르다.

이름하여, 망원경을 처음 만드는 사람을 위한 톰슨의 법칙(Thompson's Rule for first-time telescope makers)이라고 합니다.

제가 이 법칙을 처음 알게 된 것은 Programming Pearls라는 책(국내에는 인사이트에서 "생각하는 프로그래밍"으로 출간)의 저자로 유명한 Jon Bentley의 CACM 기사(CACM 1985년 9월판, Vol. 28 No. 9)에서 였습니다. 그 기사의 제목은 "Bumper-Sticker Computer Science"로, 글의 내용은 자동차 범퍼에 스티커로 붙이고 다니는(혹은 그럴만한) 전산학의 격언들에 대한 것입니다.

각 격언에는 그 말을 한 사람, 혹은 그 말을 발견했고 또 좋아하는 사람에게 크레딧이 주어져 있는데 이 격언에는 빌 맥키먼(Bill McKeeman)이라는 사람의 이름이 붙어있습니다. 이 사람은 공학 계산용 소프트웨어로 유명한 MATLAB의 개발자 중 한사람으로, 컴퓨터 역사를 함께 한 숨은 영웅이라고 해도 과언이 아닙니다. 그런 사람의 이름이 붙어 있으니 더더욱 이 격언에 대한 신뢰가 생깁니다.

분명히 전자, 즉 4인치 반사경 만들고 또 6인치 반사경 만드는 것은 돌아가는 길입니다. 반사경 2개를 만들어야 하니 하는 일도 더 많습니다. 그냥 6인치 반사경 하나 만들어버리고 말지 뭐하러 2개나 만듭니까? 결국 원하는 것은 6인치 반사경이라면. 그런데, 신기하게도 더 많이 하는 것이 더 빨라집니다.

왜 그럴까요? 4인치 만드는 것은 비교적 금방 할 수 있기 때문입니다. 그리고 그걸 하고 나면, 내가 더 똑똑해지기 때문입니다. 내 기술이 더 나아지기 때문입니다. 경험이 쌓이기 때문입니다. 이 투자는 곧 복리로 이득을 얻게 되기 때문입니다. 단순 산술 계산으로는 이런 점을 놓치기 쉽습니다. 우리는 자기가 하는 일에 의해 자신 역시 변할 수 있습니다. 뭔가 일을 한다는 것은 쌍방향적 변화를 야기합니다. 하지만 무엇을 먼저 하느냐, 어떤 길을 택하느냐에 따라 순탄하냐 험난하냐가 결정되기도 합니다. 지름길인 것 같은데 고생 죽사게 하면서 더 오래 걸리는 길이 있고, 돌아가는 것 같은데 술술 넘어가고 금방 가는 길이 있는 겁니다.

처음부터 크고 어려운 일을 하는 것은 학습 곡선이 가파르고 비용이 큽니다. 하지만 작고 쉬운 것을 먼저하고 나면 애초의 그 가파른 곡선이 낮은 언덕으로 바뀌어 있습니다. 총 비용을 따져서 오히려 이득인 경우가 많습니다.

박응주씨에게서 들은 이야기입니다. 응주씨가 대학에서 알고리즘 강의를 들었답니다. 그 수업은 매주 과제를 하나씩 내주고 학생들이 그걸 다음주까지 프로그램을 작성해서 풀게해서, 그걸 토대로 성적에 반영했다고 합니다. 채점 기준은 세 가지였다고 합니다. 프로그램 실행 속도와 제출시간, 그리고 정확성(테스트 케이스를 얼마나 통과하냐). 빨리 답을 내놓는 프로그램일수록 높은 점수를 받고, 남들보다 먼저 코드를 제출할수록 또 높은 점수를 받으며, 정확한 답을 할수록 높은 점수를 받습니다. 아, 제약이 몇가지 있었습니다. 무엇보다, C언어로 작성을 해야 했습니다.

응주씨는 이 과제를 우선 파이썬 같이 찰흙처럼 말랑말랑하고 다루기 쉬운 언어로 먼저 푼 다음, 그 코드를 C언어로 다시 작성해서 제출했다고 합니다. 남들보다 더 많은 일을 한 것이죠. 결과는? 수행 속도 면에서도 좋은 점수를 얻었고, 대다수의 사람보다 빨리 제출할 수 있었다고 합니다.

저 역시, 어차피 자바 환경에서 돌아가야할 시스템인데, 일단 파이썬(정확히는 Jython이라고 자바 환경에서 구현된 파이썬)으로 만들고 야금야금 자바로 변환해서 그 효과를 톡톡히 본 적이 몇 번 있습니다. 특히, Jython 같은 환경을 사용하면 첫번째로 만든 4인치 반사경 단계부터 바로 실제 환경에서 그대로 사용가능하고 또 그걸 점진적으로 6인치로 바꾸기 쉽다는 장점이 있습니다.

벤틀리의 기사에 다음과 같은 격언들도 있네요.
Prototyping cuts the work to produce a system by 40 percent. --Larry Bernstein, Bell Communications Research


Translating a working program to a new language or system takes 10 percent of the original development time or manpower or cost. --Douglas W. Jones, University of Iowa

몰입에 대한 연구로 유명한 미하이 칙센트미하이 교수는 말합니다. 우리가 가장 몰입이 잘 되는 때는 지루함과 두려움의 사이에 있을 때라고. 너무 쉬운 것은 지루하고, 너무 어려운 것은 두렵습니다. 또, 외국어 학습 이론에 대한 대가 크라센(Stephen Krashen) 교수 같은 사람은 i+1 이론을 이야기 합니다. 현재 자신의 수준을 i라고 했을 때 거기에서 약간 상위레벨의 지식으로 학습을 해야 가장 좋다, 뭐 이런 어찌보면 상식적인 이야기이죠.

몰입이 잘 되고, 적당히 도전적이고, 재미있고, 교육적이고... 많은 경우 이 표현들은 다 동의어입니다(see also 재미있게 공부하기). 어려운 일을 대면했을 때 "오히려 더 많이 하면서 더 쉽게, 더 빨리 할 수 있는" 길은 없나 자문해 보세요. 꼭 프로그래밍에만 적용되는 이야기는 아닐 것입니다.

많이 해서 더 빨리 하는 경우와 그 근본 원리는 같은데, 좀 다른 법칙으로 "순서를 바꾸면 같은 일도 훨씬 쉽게 또 빨리 할 수 있다"는 게 있습니다(제가 경험적으로 만들었습니다). 하려던 일들의 집합은 유지하지만 그 속에서 순서를 바꾸는 겁니다.

예를 들어, 저는 조직의 문화, 사람들, 그들의 마인드를 바꾸는 일을 해오고 있는데, 제 컨설팅 경험 초기에는 일단 눈에 가장 띄는 문제에 집중 했습니다. 가장 저항이 센 사람들하고 먼저 씨름을 했지요. 그런데 이렇게 하면 컨설턴트도 지치고 컨설팅 받는 사람도 지쳐버립니다. 밖에서 구경하는 사람들도 재미가 없구요. 그래서 처음에 오히려 변화에 대해 욕구가 있는 사람들을 대상으로 시작을 해봅니다. 신기하게도 이렇게 하다보면, 이전에 저항감이 강하던 사람들이 경계심을 풀거나, 우리가 진행하는 일에 관심을 갖기 시작하는 경우가 많았습니다. 미는 것(push)이 아니고 끌어 당기는 것(pull)이지요.

예전에 Contagious Success(전염성 성공)라는 책을 읽었습니다. 전세계에서 하이 퍼포먼스를 보이는 집단을 방대하게 조사한 연구를 토대로 쓴 책입니다. 부제가 Spreading High Performance Throughout Your Organization(조직에 높은 퍼포먼스를 퍼뜨리기)입니다. 제목만으로도 매우 끌리는 책인데요.

이 책의 골자는 다음과 같습니다. 조직을 퍼포먼스 순으로 세 그룹으로 나누었을 때(하이 퍼포먼스 집단 10%, 평균적 퍼포먼스 집단 52%, 낮은 퍼포먼스 집단 38%) 그 중 52%의 중간 그룹, 즉 "거의 하이 퍼포먼스에 도달한" 집단에서 다시 상위 20%에 해당하는 집단의 퍼포먼스를 끌어올리는 것이 가장 효과적이고 전체적으로도 가장 큰 효과를 낼 수 있다고 합니다.

또 다른 적용 분야로는 책읽기가 있습니다. 노스모크의 HowToReadIt이라는 페이지에 있는 조각 그림 읽기 Jig-Saw Puzzle Reading(원래 이런 이름이 있는 건 아니고 제가 이름 붙였습니다)가 그 예가 되겠습니다. 저는 읽다가 지루하거나 혹은 어려워서 진도가 안나가면 책을 후루룩 훑으면서 재미있을만한 부분을 골라서 먼저 읽습니다. 그런식으로 읽다보면 아까 어렵거나 지겨워 건너뛴 부분이 어느새 "재미있거나 이해하기 쉬운" 내용으로 변해있는 것을 발견하게 됩니다. 제 생각으로는 이 방법으로 책읽기 속도가 1.5배 이상 빨라진 것 같습니다. 그 외에 단어공부에도 적용가능합니다(일명 Frontier Zone 방법이라고해서 매일 접하는 단어에서 자기가 확실히 아는 단어, 아예 모르는 단어는 제외하고 어중간한 단어부터 공부하는 겁니다).

벤틀리는 자신의 기사 말미에서 여느때처럼 숙제를 냅니다. 기사에 소개된 격언들에 대해 다음 실험을 해보는 겁니다:
  • 규칙을 좀 더 정확하게 재진술 해보라
  • 규칙을 지지하는 작고 구체적인 예를 제시해 보라
  • 좀 더 큰 프로그램에 대해 적용되는 실제 사례의 무용담을 찾아보라
  • 규칙에 대해 비평해 보라. 언제나 참인 것은 무엇이고 때로는 우리를 오도할 수도 있는 것은 무엇인가?
좋은 과제 같습니다. 여러분들도 자신의 경험을 돌아보세요. 더 많이 하면서 오히려 더 빨리 할 수 있었던, 혹은 일의 순서를 바꾸는 것만으로 전체 속도가 높아졌던 때는 언제였나요? 구체적으로 어떤 상황이었나요? 그 때 어떤 조건과 상황이 그걸 가능하게 했을까요? 오늘날 내가 가진 문제에 비슷한 조건과 상황을 만들어 낸다면 어떨까요?

--김창준

트랙백

덧글|덧글 쓰기|신고