영어 교과서, 논문, 기술 문서를 읽는 과학적 학습법
"영문교과서나 논문 빨리 읽는 사람들은 진짜 비결이 뭐임?????"
한 트위터 친구 분이 이런 질문을 하셨습니다. 물론 진지하게 궁금하다는 게 아니라, 부러움을 표현하는 말일 수도 있지만. 진지하게 궁금하신 분이 계셔서 제가 본 이론과 실험과 연구들을 나름 이야기로 정리해서 풀어보려 합니다.
권위에 호소하기
저는 학습과 전문성, 언어에 많은 관심을 가지고 공부를 해왔습니다. 지금도 제 책장에는 학습에 대한 700페이지 가까이 되는 책이 여러 권 꽂혀 있고요. 대학을 다닐 때에는 대학 도서관에서 인지 심리학 교과서 3권과, 영어 학습 법이니, 제2언어 습득론이니, 교수님이 쓴 대중서, 일반인이 쓴 대중서도 보고, 다양한 외국어 교재와, 멤라이즈, 듀오링고, 드롭스, 산타토익, 스픽, 말해보카 같은 수 많은 외국어 학습 앱을 전전해온 것입니다. kindle로 원서 전자책을 쌓아 놓고 (안 읽고) 그래도 영어 문서는 늘 많이 읽고는 합니다. 논문도 이따금 읽고요.
코칭을 하다 보면 영어가 어렵다는 분을 많이 만납니다. 그래서 영어 코칭도 많이 합니다. 한 달 동안 영어 코칭만 시킨 적도 있고요. 한 달 반 만에 토익 600 점을 800 점으로 만든 적도 있습니다. 이런 시험이 아니라도, 기술 문서 읽는 법이나 영어 발표 영상 듣는 법 같은 곳에 특화된 학습법을 알려드리는데요. 이는 평범한 영어 강사 분들은 하기 어려운 경험이죠. ;)
하지만 이런 권위에 호소하는 오류는 근거를 제시하는 게 아니니까요. 이제 하나 하나 말을 해보겠습니다.
영어로 학술적인 글을 잘 읽으려면, 학술적인 글에 맞는 공부를 해야 합니다
결론부터 말하자면 영어로 된 학술적이거나 정보적인 '글'을 빨리 읽으려면, 그에 특화해서 학습을 해야 합니다. 이는 일반적인 영어를 공부하는 것과는 달라요.
최근 학습 이론에 큰 진전 중에 하나는, 전이(transfer)가 잘 되지 않으며, 영어 실력은 물론이고 "읽기 능력"이나 "독해력" 같은 일반적인 능력은 발달 시키기 어렵다는 것이었습니다. 이에 대해서는 수학적 사고력은 왜 전이되지 않을까?라는 글을 써서 자세히 다뤘는데요.
전이는 쉽게 말해서 한 영역에서 배운 것이 다른 영역에서도 잘 되는 걸 말합니다. 보통 사람들은 단어, 문법, 리딩, 리스닝 같이 크고 일반적인 능력을 생각합니다. "나는 리딩은 잘 되는데 스피킹은 잘 안 되더라~" 같은 식으로 말이죠. 그래서 영어 기사를 읽거나 동화책을 읽거나, 토플이나 토익 같은 시험을 치거나 하면서 "독해력"을 기르려고 그럽니다.
하지만 이렇게 오래 공부를 해도 영어로 교과서나 문서를 읽기는 여전히 어려울 겁니다. 전이되지 않기 때문이죠. 독해력 같은 건 없습니다.
그러니 우리 교과서나 기술 문서나 논문 같은 글의 특성을 생각해봅시다. 그래야 어떻게 공부할지도 감이 잡히니까요.
내 경험과 배경지식을 꺼내서 활성화합니다
보통 "영어 실력이 부족해서 읽는 게 어려워요!"라는 분들을 도와드리면서, 한국어로 번역된 글을 보여드리면 여전히 이해를 못하시는 경우가 많았습니다.
영어도 언어입니다. 사실 논문이나 교과서는 한국어로 읽어도 읽기 어렵습니다. "추상화", "주소 공간", "가상화" 같은 말은 낯설고 추상적이기 때문에, 인간이 생각하기 어렵습니다. 이에 대해서는 앨리스 토끼굴에서 초보자에게 모든 게 어려운 이유를 다루면서 말하기도 했는데요. 문제는 우리 모두가 어떤 분야에 대해서는 초보자라는 겁니다.
사람들마다 다양한 경험을 합니다. 같은 DB에 대한 글을 읽더라도 DB를 사용해본 방식이나 경험, 수준은 모두 다를 겁니다. 10년 차 경력 개발자라도 그렇습니다. ORM만 써서 SQL을 손으로 쓴 적이 거의 없는 분도 있고요. DB는 관계형 데이터베이스만 있는 줄 아는 분도 있고요. 특정 DBMS 제품만 빠삭하신 분도 있을 겁니다.
사람은 익숙한 것을 가지고 낯선 내용을 이해합니다. 글을 읽기 전에 내가 뭘 알고 있고 뭘 모르는지, 관련된 경험을 생각해봐야 합니다. 이를 배경지식을 활성화한다고 하는데요. 더 자세한 이론과 방법을 알고 싶으시면 교육을 바꾸는 사람들의 이찬승 선생님이 쓴 학습과학의 이해와 적용 <원리1> 새로운 지식의 이해는 사전지식과의 연결을 통해 일어난다라는 글을 읽어보시기 바랍니다.
큰 흐름과 구조를 파악하고 추측합니다
시험 공부를 할 때에도 글의 전개 방식이나, 대립 되는 개념을 파악하는 연습 같은 걸 하지요? 보통 우리가 영어를 공부하기 위해 읽는 기사나, 시험 지문은 짧습니다. 반면에 영어로 된 대학 교재나 논문은 그에 비해 매우 길고요. 여러모로 연결된 복잡한 구조를 가지고 있지요. 그래서 도움을 받아야 합니다.
이런 논문이나 교과서에는 도입부의 개요와, table of contents(목차)라거나, 소제목, 핵심 요약 등이 있습니다. 이런 류의 교재를 읽을 때 가장 먼저 해야 할 일이 바로 이런 개요, 목차나 소제목을 자세히 훑어보고, 가능하면 외우는 것입니다. 그래야 머리에 큰 흐름을 잡아 놓고, 세부를 채워가면서 읽으실 수 있어요.
당장 눈 앞의 문장만 해독하고 있으면, 어느새 흐름을 놓치고, "내가 뭘 읽고 있지?" 하는 경험을 하게 되지요. 지금 읽고 계신 제 글의 도입부에도 목차가 있었는데, 대충 넘기신 분들이 많을 겁니다. "난 아닌데?"라고 하시면 축하드려요!
글의 구조를 파악하는 기초를 다지고 싶으시다면, 수험 교재인 [국어의 기술]의 저자 독해력 강화 도구 초판이 무료 공개되어 있으니 연습해보셔도 좋습니다. 그냥 국어의 기술이나 이분 책을 사서 보셔도 좋고요.
물론 수험교재이다보니 기술 문서 읽는 법과는 좀 다른 면들도 많은데요. 제가 더 나은 대안을 아는 게 없습니다.
이 글을 읽는 목적과, 실제 사용할 맥락을 연결합니다
글로 읽은 걸 실무로 잘 전이 하려면, 글을 읽을 때부터 내 경험이나 미래에 사용할 맥락과 연결을 지어야 합니다.
시험용 지문은 다양한 주제가 랜덤으로 나오고 내가 뭘 읽을지 결정하지 않죠. 반면에 어른이 교과서나 논문을 읽는다면, 분명 어떤 이유나, 동기, 기대하는 게 있을 겁니다. 기억에 대한 논문을 읽거나, Database index를 효율적으로 쓰는 법에 대한 글을 무작위로 읽진 않잖아요? (아마도?)
이 분들이 데이터베이스 internal에 대해 공부하려는 목적은 다들 다를 겁니다. 단순히 내가 '면접을 봐야 하는데 CS지식이 부족해!'라는 막연한 생각을 가진 분도 있고요. '회사에서 index를 걸 때마다, 왜 이런 성능 차이가 나는지 이해를 못하겠어!' 같이 좀 더 구체적인 궁금증을 가지신 분도 있을 거에요.
글을 읽기 전에 이런 목적이나 쓸모를 명확하게 하는 시간을 가져보세요. 글을 읽으면서 "아니 이런 게 있었잖아?"하고 깜짝 놀라는 부분들에 주목하고요. 읽은 후에는 "이건 이렇게 써먹을 수도 있겠네?" 활용할 거리들을 정리해보면 좋습니다.
실제로 적용해보기
몇 가지만 말했지만 이를 실제로 적용해봅시다.
예를 들어 코칭하는 분들이랑 Operating Systems: Three Easy Pieces 라고 PDF로 공개된 교과서를 같이 읽은 적이 있습니다. 글 읽기가 낯서신 분들은, 다짜고짜 첫 문장부터 읽으려 하시는 경향이 있습니다. 하지만 저는 소제목을 훑어보면서, 어떤 내용이고 무슨 이야기를 하려 하는지 추측해보는 시간을 가집니다. 4. The Abstraction: The Process 장을 읽는다고 합시다. 먼저 개요를 볼까요? 첫 두 문단을 읽어보세요.
- OS가 제공하는 가장 중추적인 '추상화' 단위인 '프로세스'에 대해 설명한다고 합니다.
- 그러면 궁금합니다. 목차를 보면 4장은 1부 가상화Virtualization에 속해 있어요. 프로세스는 무엇을 추상화하고 가상화 할까요? 나는 프로세스에 대해 얼마나 알고 있나요?
- process는 메모리가 격리된다!는 정도는 압니다.
- 작업 관리자를 열어서 프로세스 목록을 살펴본 적이 있나요?
- 저는 요즘 비동기나 동시성으로 뒤통수를 맞고 있습니다. 비동기에 대한 설명을 보다보면 process, thread와 promise, coroutine 등을 비교하는 경우가 많은데요.
- 회사에서 일렉트론을 쓰면서, 프로세스 간 통신인 IPC도 써보고요. shell script를 실행하려고 node의 process api로 새로운 프로세스를 spawn 해서 쓴 적도 있습니다.
- elixir를 써봤다면 process는 운영체제의 process와 어떻게 다를지 궁금할 수도 있고요. 그쪽은 왜 process라는 이름을 붙였을까요?
- 모두가 저와 똑같은 경험을 하진 않습니다. 여러분의 경험은 어떨까요?
- 프로그램 자체는 디스크에서 '생명 없이', 작동을 기다리고 있는데. OS가 이 프로그램들을 뭔가 쓸모 있는 걸로 변환시켜준다네요.
- 여기서 추론을 합니다. 그러니까 프로세스는 데이터인 프로그램이 실제로 작동하는 단위이고 OS가 만든 개념이네?
- 문제는 한 번에 여러 프로그램이 동작한다는 겁니다! 개인용 컴퓨터 사용자도 웹 브라우저, 게임, 음악 플레이어를 한꺼번에 돌리고요. 서버 개발자도 여러 서버나, scheduler, redis 같은 프로그램을 2 vcpu를 제공하는 aws ec2에서 돌릴지도 모르죠.
- 방금 책에 나오지 않은 제 경험을 연결 지은 걸 보셨나요? 이게 중요합니다.
- 이 책은 친절하게도 문제의 CRUX 핵심을 알려줍니다. "HOW TO PROVIDE THE ILLUSION OF MANY CPUS?" 그러니까 물리 CPU는 몇 개 안 되는데. 어떻게 무한한 CPU가 있는 것처럼 수 십 개의 프로그램이 한 번에 돌아갈 수 있을까?
- 목차를 잘 읽었다면, 이게 가상화와 연결되는 질문인 걸 알 수있겠지요.
- 그러면 프로세스 개념은 성능이나 메모리랑은 어떤 관련이 있을까?
- promise에 태스크 큐나 이벤트 루프 같은 게 있듯이, 운영체제에도 그런 게 있을까?
- 그래서 굵은 글씨로 time sharing, context switch, scheduling policy 같은 단어들이 이제 굵은 글씨로 제시 됩니다.
- 그러면 궁금합니다. 목차를 보면 4장은 1부 가상화Virtualization에 속해 있어요. 프로세스는 무엇을 추상화하고 가상화 할까요? 나는 프로세스에 대해 얼마나 알고 있나요?
- 이제 소제목과 굵은 글씨들을 살펴봅니다.
- The Abstraction: A Process
- Process API, Create Destroy, Wait, Miscellaneous Control, Status
- Process Creation: A Little More Detail
- Process States
- Data Structures
- 마지막으로 4.6 요약에서도 비슷한 이야기를 하는데. low level mechanisms와 higher-level policies 를 구분하고 있어요. 이런 이분법이나 대립하는 요소가 나오면 머리에 새깁니다. "흠 그래 잘 모르지만 저수준 작동 방식이랑 고수준 정책이 나뉘는군?"
- The Abstraction: A Process
저는 글 읽기에 익숙하기 때문에 이런 생각의 과정이 저절로? 일어납니다. 하지만 보통은 습관이 들여져 있지 않아서, 의식적으로 해보시고 연습을 해보셔야 합니다.
처음에는 글 읽는 속도가 느려진다고 생각이 드실 겁니다. (마치 사전을 찾아보는 게 귀찮은 것처럼요.) 하지만 연습을 하실수록... 추상적인 글이 이해가 안 가고, 오독이나 오역을 하면서 몇 번이나 다시 읽는 횟수가 현저하게 줄어들 겁니다.
저는 단어가 약한데요?
하지만 애초에 한 문장을 해독하기도 어렵다는 분들도 계세요. 직독직해가 안 되서 늘 한국어로 번역하면서 퍼즐 맞추기를 하시는 거죠. 단어에서 막히거나 문법에서 막히거나...
그런 경우에도 시중의 단어장을 사서 외우시기 보다는, 교과서나 논문, 기술 문서에 특화된 방식으로 공부하셔야 해요. 나만의 단어장을 만드시면 좋고, 관련된 문장이나 맥락을 같이 정리하시면 좋습니다.
왜 그럴까요? 단어는 사전에 나온 뜻만 가지고 있지 않습니다. 기술 용어는 토익이나 토플과 다른 의미를 가지고 있어요. 예를 들어 코칭하는 분이 redux 문서를 읽으시다가 이런 문장이 해석이 안 된다고 가져오셨어요.
Redux Toolkit also includes a powerful data fetching and caching capability that we've dubbed "RTK Query". It's included in the package as a separate set of entry points.
이 문단을 다음처럼 번역하셨더군요.
또한 Redux Toolkit 에는 "RTK Query"라는 강력한 data fetching 및 caching 기능도 포함되어 있습니다. 패키지에 별도의 진입점 세트로 포함되어 있습니다.
entry는 입구라는 뜻이지요. 하지만 여러 번들러나 빌드 도구, 패키지 등에서는 "해당 패키지의 시작점이 되는 파일"을 말하는 경우가 많아요. index.js
라거나 main.py
처럼 말이죠.
여기서 entry points 가 separate set 이라고 말하는 건 그러면 무슨 뜻일까요? 저는 다음처럼 설명을 드렸어요.
import { createSlice } from '@reduxjs/toolkit'
은 그러니까 toolkit 의 index.js 에서 가져오는 건데
쿼리는
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
에서 가져오거든요.
즉 두 라이브러리가 import하는 경로가 다르다는 뜻이지요. 만약에 createApi
를 '@reduxjs/toolkit'
에서 import하려 하면 삽질을 하시게 될 거에요. ;)
문장과 함께 맥락을 살린 플래시 카드 만들기
이렇게 배운 단어의 용례도 시간이 지나면 까먹습니다. 한 번 보고 모든 걸 기억하는 천재는 많지 않고요. 저희는 복습을 해야 합니다!
한 가지 좋은 방법은 플래시 카드입니다. 요즘은 anki를 비롯해서 나만의 플래시 카드를 만들 수 있는 도구도 많아요. 인터넷에 찾아보시면 anki 의 사용법을 알려주는 글이나 영상도 많습니다. 꼭 혼자서 만드셔야 하는 것도 아니고, 여러 명이 스터디하면서 같이 만들어서 서로 공유해도 좋아요.
플래시 카드를 만드실 때 주의하실 점은 단순히 단어 / 뜻 구조로 정리하시면 안 된다는 거에요. 어떤 학자는 그래서 플래시 카드가 최악의 방법이라고도 했습니다. 단어는 문맥과 문장 속에서 외워야 하는데, 단어 뜻만 암기하면 실제 맥락에서 떠올리기 힘들다는 것이었죠.
그러니 이왕이면 말해보카처럼 문장을 통째로 카드로 만드시고 빈칸을 뚫어 놓는 걸 추천드려요. 생각보다 시간도 많이 안 걸립니다. 우리에게는 복사 붙여넣기가 있으니까요! 예를 들자면...
별로인 예
entry points / 진입점
좋은 예
앞면: Redux Toolkit also includes a powerful data fetching and caching capability that we've dubbed "RTK Query". It's included in the package as a separate set of ___ ___.
뒷면: entry points. 진입점. 여기서는 두 라이브러리를 import하는 경로가 다르다는 뜻! 문서 링크 참조
저는 문법이 약한데요?
복잡한 문장 구조를 파악하기 어려워하는 분들도 있습니다. 이 경우에는 흔히 끊어 읽기라고도 부르는 '구조화'하는 연습을 해야 합니다. 능숙한 독자에 대한 연구를 봅시다. 초보자는 문장을 단어 하나하나에 집중해서 해독하지만, 능숙한 독자는 의미 단위를 찾아서 '덩어리'로 글을 읽습니다. 시선 추적기 같은 장치로 이를 측정할 수도 있어요.
보통 문법을 공부하실 때 많이 실수하시는 부분은, 용어나 설명을 외우는 게 문법을 익히는 거라고 착각하시는 겁니다. "이거는 to 부정사의 명사적 용법이야"라고 외운다고 해서 독해가 잘 되지 않아요. 그보다는 여러 예문들을 쪼개서 읽어보시면서, 그 구조의 '느낌'에 익숙해지시는 게 더 좋습니다. 물론 이해가 안 되면 해석도 참고하시고요.
예를 들어 OSTEP 에는 다음과 같은 문장이 나옵니다.
"The OS creates this illusion by virtualizing the CPU"
저는 이 문장을 이렇게 끊어 읽어요. 괄호는 전치사 구를 뜻합니다.
- The OS creates this illusion
- (by virtualizing the CPU)
그러면 먼저 앞 부분을 읽으면서 그 뜻을 느낍니다. "The OS creates this illusion" 그 뒤에는 뒷 부분까지 함께 읽으면서 by 가 붙으면서 뜻이 어떻게 확장되는지 느껴봐요. "The OS creates this illusion by virtualizing the CPU"
더 복잡한 문장도 해볼까요? OSTEP 4장의 첫 문장입니다.
In this chapter, we discuss one of the most fundamental abstractions that the OS provides to users: the process.
저는 이 문장을 이렇게 끊어 읽어요.
- In this chapter
- we discuss
- One of the most fundamental abstractions
- that the OS provides to users:
- One of the most fundamental abstractions
- we discuss
- the process.
마찬가지로 "we discuss"부터 시작해서. 문장에 살을 붙여나가면서 읽어봅니다. 저자가 문장을 키워나가는 방식이 조금씩 잡히실 거에요.
이런 걸 연습하게 체계적으로 도와주는 교재는 세상에 많습니다. 저는 박상준 선생님의 문장기호 라는 책을 괜찮게 생각하는데요. 아쉬운 부분들도 있어서 강의를 사서 들으시기보다는 책만 보시면서, 내가 평소에 읽는 교과서와 논문, 기술 문서에 적용해보시는 게 더 좋을 수도 있어요. 방법은 다양합니다. 천일문을 보든 끊어 읽기를 하시든. 원하는 방법, 내가 좋아하는 걸 찾으시면 됩니다.
실천하지 않는 학습법은 소용이 없다
노력해도 실력이 늘지 않으면 슬프지요. 과학적인 근거에 기반한 학습법은 노력한 만큼 성과가 나오게 도와주고, 효율을 높여줍니다.
하지만 아무리 좋은 학습법만 찾아다녀도, 교재와 강의를 사도, 갑자기 원서를 줄줄 읽게 해주진 않습니다.
저는 원래 교사가 되려 했었고. 학습법에 대해서는 이런저런 이론을 잘 알고 있습니다. 하지만 그렇다고 제가 영어를 원어민처럼 구사하진 않습니다. 밥 벌어 먹고 살 정도는 되지만요.
그 이유는? 저는 교육학과 학습 이론에 대한 두꺼운 교과서를 읽는 만큼, 영어 공부를 체계적으로 하진 않았기 때문입니다. 사람들에게 안키를 추천하지만, 저는 정리하는 걸 귀찮아 해서... 나만의 기술 용어 단어장은 없습니다. 사람들에게 설명하는 게 저에겐 복습이지요. 이 글에 세세한 참고문헌 목록이 누락된 것도 그런 이유입니다. 도서관에서 읽은 책도 정리를 안 했고요. 사 놓은 책도 집에서 찾아보려 했는데, 책 더미 속에서 못 찾겠더라고요.
학교에서 국영수 같은 기본기를 잘 다질 걸 그랬다고 후회하시는 분도 계시지만, 기술 영어를 읽는 법은 학교 공부와는 많이 다릅니다. 학교 시절에 제 영어 성적은 3등급이었습니다. 높은 편이라고 생각하실 수도 있고 낮은 편이라 생각하실 수도 있는데요. 저도 기술 문서를 처음 읽을 때에는 뭔 소린지 이해가 가지 않았어요. 수능이나 토익의 유형과 복잡하게 긴 글 사이에는 차이도 많았지요. 어차피 공부를 해야 하는 건 모두 마찬가지입니다.
이 글에서 여러 학습법을 제시했고, 더 읽어보실 글이나 자료도 추천했습니다. 이제 하루 아침에 학습법이 변화하기는 어려울 겁니다. 그보다는 매일 한 두 가지를 정해서 삶 속에 조금씩 녹여보세요. 일일회고를 쓰시면서, 작은 목표를 정하고 실천해보시는 거죠.
실제로 해보니 무엇이 어렵고 문제라고 여겨지는지? 새롭게 시도해보고 싶으신 건 무엇인지? 생각해보시고, 궁금하시면 저에게 질문을 남겨주세요. 댓글도 좋고, 트위터 멘션이나 디엠도 좋습니다.
저는 예전에 언어교환을 하는 아랍권 친구와 "미국인에게 유리한 비공식 세계 공용어인 영어"를 까면서 농담을 하고는 했습니다. 한국인으로 태어나서 영어를 배우는 건 쉬운 일이 아닙니다. 여러분의 노력이 결실을 보시기를 바라며. 언어가 열어주는 새로운 기회를 잘 활용하실 수 있으시면 좋겠습니다.