개발자 영어

코드로 감 잡다

개발자가 이해하기 좋은 영문법

이 책은 영어 문장의 구조를 프로그래밍 코드로 표현한다. 그래서 개발자가 이해하기에 수월하다. 또한 문장을 만드는 과정을 부품을 조립해 제품을 만들어 나가는 과정에 비유한다. 이 과정에서 복잡한 영문법 용어를 사용하지 않고, 간결하게 다섯 가지 부품 및 몇 가지 용어만 사용해 영문법을 설명한다. 그리고 쉬운 단어로 구성된 예문을 반복적으로 사용함으로써 학습자가 영문법을 이해하는 데 집중하게 해준다.

★ 이런 분에게 추천합니다 ★

- 영어로 된 기술문서를 읽어야 하는 분 - 영문법 용어가 익숙지 않거나 부담스러운 분 - 영어 단어의 뜻을 찾아도 문장의 의미를 이해하기 어려운 분

★ 이 책에서 다루는 핵심 내용 ★

- 영어 문장 구성요소의 개수 및 순서 - 영어 문장을 코드로 나타내기 - 짧은 문장을 긴 문장으로 만들어가는 양상 - 명사와 동사, 절을 활용해 문장의 구성 요소를 만드는 방법 - 관계절, 부사절을 만드는 방법 - 수동태, 능동태 표현의 이해 - 맨날 봐도 헷갈리는 as, of, ~ing 등 짚고 넘어가기

『개발자 영어, 코드로 감 잡다』 페이스북 페이지

<책 속으로>

그간 개발자 영어 활동을 통해 느낀 바에 따르면 한국의 개발자에게 가장 시급하고 유용한 능력은 독해능력(reading skill)이라고 생각합니다. 그다음으로 유용한 능력은 작문능력(writing skill), 그다음이 듣기(listening skill), 마지막으로 말하기(speaking skill) 능력입니다. 물론 개별적인 상황이나 업무 등에 따라 우선순위가 다른 경우는 있겠지만 전반적으로 보기에 그렇다고 생각합니다. 개별 능력을 떠받치고 있는 영어 지식은 어휘 지식과 문법 지식입니다. 어느 능력을 계발하든 어휘 지식과 문법 지식이 뒷받침돼 있어야 합니다.

이 두 가지 중에서도 문법 지식에 초점을 맞춘 책을 쓰고 싶었습니다. 특히, 어떤 시험의 문법 파트를 준비하는 목적의 문법 지식이 아니라 영어 문장을 읽고 이해하는 데 중요한 문법 지식에 초점을 맞춘 책을 쓰고 싶었습니다.

가끔 제가 프로그래머인지 묻는 분들이 있습니다. I wish I was. 저도 그랬으면 좋겠습니다만 아닙니다. 하지만 프로그래밍을 배워보려고 시도는 했습니다. 뭔가 대단한 프로그램을 만들 수준은 못되더라도 뭔가 이 세계를 어느 정도는 이해해야 하지 않나 하는 생각을 했습니다. 그래서 이런저런 프로그래밍 책이나 웹 문서를 뒤적거리면서, 생활코딩의 동영상 강좌를 보면서 프로그래밍을 조금 배웠습니다. 그런데 그 과정에서 함수, 메서드라는 것에 대해 알게 됐습니다. 저는 이것이 영어의 동사와 비슷하다고 생각했습니다. 이 점을 활용해 영어 문법의 동사와 목적어 등을 설명하면 좋겠다고 생각했습니다.

개발자 영어 활동을 하면서 만들었던 콘텐츠 가운데 '줄바꿈 영어독해'라는 것이 있습니다. 기존에 영어 공부를 할 때 사선을 그으면서 의미덩어리를 구분하는 것과 비슷한 방법입니다. 다만 차이점은 구분이 되는 지점에서 사선을 긋는 것이 아니라 아예 줄을 바꾸고 들여쓰기 칸으로 문장 내 의미의 위상을 표시한다는 점입니다. 그리고 색깔로 전치사구나 부사절 등을 회색으로 바꿔서 검은색으로 남아 있는 핵심적인 부분의 의미를 먼저 이해하는 방법입니다. 이런 방식이 도움됐다는 피드백을 받으면서 이를 문장 구조에 관한 문법을 설명할 때 활용하면 좋겠다고 생각했습니다. 하지만 문제는 줄바꿈하는 방식으로는 문장 구성요소의 역할을 표시할 수 없다는 점이었습니다.

마지막으로, 이 책을 쓰기 직전에 생활코딩의 이고잉님과 이런저런 이야기를 나눴는데, 두 가지 이야기가 기억에 남았습니다. 하나는 문법 용어가 헷갈리다는 것이었고, 다른 하나는 문장 내 역할을 부품에 비유해서 부품을 조립해서 제품을 만들어가는 과정에 비유하는 것도 좋겠다는 것이었습니다.

결국 다음의 세 가지 생각을 녹여낸 것이 이 책입니다.

동사를 메서드에 비유하고 메서드를 표현하는 기호를 활용하는 것 줄바꿈 영어 독해 방식을 활용하는 것 문장을 쓰는 것을 부품을 조립해서 제품을 만드는 과정에 비유하는 것

1번과 2번을 녹인 방식은 문장 구조를 프로그래밍 코드처럼 표현하는 방법입니다. 그리고 3번은 부품 종류에 이름을 붙여 기존 영문법 용어를 단순화해서 대체했습니다.

결국 이 책은 개발자가 이미 알고 있는 개념과 기호를 활용해 영어 문장의 구조에 대해 감을 잡게 합니다. 기존의 문법서로 영어 문장 구조의 감을 잡을 수 있는 분에게는 이 책이 굳이 필요하지 않을 것입니다. 하지만 기존의 문법서를 봐도 영어 문장 구조에 대한 감이 안 온다고 느끼시는 분은 이 책으로 한번 시도해볼 가치가 있을 것입니다. 이 책으로 감을 잡으신 후, 세부적인 내용에 대해서는 기존의 문법서를 참조해서 보시면 좋을 것입니다.

이 책의 제목을 골라달라고 개발자 영어의 회원분들께 부탁드렸더니 여러 가지 후보가 올라왔습니다. 올라온 후보 중 다음 세 가지가 기억에 남습니다.

  • 원서 보는 개발자가 보는 영문법
  • 더 이상 구글 번역은 그만!
  • C언어도 배웠는데 영어라고 못 배우겠냐!

음... 개발자분들의 염원이 느껴집니다. 이 책이 개발자분들이 원서를 읽으시는 데, 그리고 좋은 웹 문서를 읽으시는 데 작은 도움이 되기를 희망합니다.

저자 서문 중에서

김나솔

고려대학교 노어노문학과를 졸업했고 국제영어대학원대학교에서 교재개발학과 석사과정에 재학 중이며, 개발자 영어 웹사이트와 개발자 영어 페이스북 그룹을 운영하고 있다.

▣ 개발자 영어: http://engfordev.com

▣ 개발자 영어 페이스북 그룹: http://facebook.com/groups/engfordev

  • ▣ 섹션 1: 이 책에 나오는 용어
    • 문장을 완제품이라고 부르기
    • 완제품을 코드로 나타내기
    • 부품의 종류와 단어의 종류
    • 종류가 다양한 어케부품
    • 코드로 나타낼 때 사용하는 기호
    • 기존 영문법에서는!
  •  
  • ▣ 섹션 2: 뼈대완제품에 옵션부품 추가하기
    • 뼈대완제품에서 시작 - 사용자는 올렸다(댓글을)
    • 어떤부품 추가 - [새로운]사용자는 올렸다(댓글을);
    • 어떤부품 추가 - [페이스북의]사용자는 올렸다(댓글을);
    • 어떤부품의 위치는 객체의 앞이나 뒤
    • 어떤부품 추가 - [나를 추가한]사용자는 올렸다(댓글을);
    • 어떤부품 추가 - [내가 추가한]사용자는 올렸다(댓글을);
    • 어떤부품 추가 - 사용자는 올렸다([나를 격려해 준] 댓글을);
    • 언제부품 추가 - 사용자는 올렸다(댓글을, [어제]);
    • 언제부품 추가 - 사용자는 올렸다(댓글을, [<내가 드라마를 본 후에>]);
    • 완제품 연결하기 - 사용자는 올렸다(글을) 그리고 나는 올렸다(댓글을);
    • 기존 영문법에서는!
    • 섹션을 마무리하며
  •  
  • ▣ 섹션 3: 부품을 만드는 다양한 방법
    • 객체를 가지고 어떤부품 만들기 - ‘구글의’ 직원
    • 객체를 가지고 어떤부품 만들기 - ‘질문이 들어 있는’ 댓글
    • 객체를 가지고 어케부품 만들기 - ‘프레임워크를 가지고’
    • 메서드를 가지고 뭐는부품 만들기 - ‘사용하는 것은’
    • 메서드를 가지고 뭐를부품 만들기 - ‘사용하는 것을’
    • 메서드를 가지고 어떤부품 만들기 - ‘사용할’ 프레임워크
    • 메서드를 가지고 어떤부품 만들기 - ‘실행하고 있는’ 앱
    • 메서드를 가지고 어케부품 만들기 - ‘사용하기 위해, 사용해서’
    • <객체 메서드>를 가지고 뭐는부품 만들기 - ‘프로그래머가 앱을 만들었다는 것은’
    • <객체 메서드>를 가지고 뭐를부품 만들기 - ‘프로그래머가 앱을 만들었다는 것을’
    • <객체 메서드>를 가지고 뭐를부품 만들기 - ‘사용자가 댓글을 올린 이유를’
    • <객체 메서드>를 가지고 어떤부품 만들기 - ‘프로그래머가 만든’ 앱
    • <객체 메서드>를 가지고 어떤부품 만들기 - ‘앱을 만든’ 프로그래머
    • <객체 메서드>를 가지고 어떤부품 만들기 - ‘프로그래머가 앱을 만들었다는’ 소식
    • <객체 메서드>를 가지고 어케부품 만들기 - ‘사용자가 좋은 생각이 있어서’
    • 기존 영문법에서는!
    • 섹션을 마무리하며
  •  
  • ▣ 섹션 4: 메서드에 대한 몇 가지 이야기
    • is(속성) : ‘이다’메서드
    • is([어디에], [누구와], ) : ‘있다’메서드
    • is_당하는([뭐에 의해서]) : ‘당하다’메서드
    • 필수인자가 없는 ‘뭐한다’메서드
    • 하게하다(뭐를, 뭐하다) : ‘하게하다’메서드
    • 주다(뭐에게, 뭐를) : ‘주다’메서드
    • 기존 영문법에서는!
    • 섹션을 마무리하며
  •  
  • ▣ 섹션 5: 맨날 봐도 헷갈리는 것들
    • to make : 만들기 위해서? 만드는 것은?
    • running app : 앱을 실행시키는 것? 실행하고 있는 앱?
    • 사용자‘를’ 추가한 건지, 사용자‘가’ 추가한 건지?
    • 볼 때마다 헷갈리는 as
    • as_ : ~로서, ~처럼인지 구분하기
    • as_< > : 때문에? 할 때? 하듯?
    • 이런 때에는 that을 생략하지 않습니다!
    • that을 생략하는 경우들
    • 함수’가’ 정의하는? 함수’를’ 정의하는?
    • function defined : 둘 다 ‘함수는 정의하였다’ 아닌지?
    • with framework : 프레임워크를 가진? 프레임워크를 가지고서?
    • 섹션을 마무리하며
  •  
  • ▣ 섹션 6: 그밖에 다른 문법 사항
    • 객체 - comment, comments - 댓글, 댓글들
    • 객체 - a comment, the comment
    • 객체 - comment를 가리킬 땐 it, comments를 가리킬 땐 they
    • 메서드 - post(), posted과거(), will_post() - 한다, 했다, 할 것이다
    • 메서드 - 한 적 있다, 해왔다, 하는 중이다
    • 메서드 - can_post() - 올릴 수 있다
    • 메서드 - users post(), user posts()
    • 어떤부품 - 더 빠른, 더 편리한, 가장 빠른, 가장 편리한
    • ‘작동한다’를 ‘작동하나요?’로
    • ‘개발했나요?’를 ‘무엇을 개발했나요?’로
    • ‘사용한다’를 ‘사용하지 않는다’로
    • ‘만든다’를 만드세요’로
    • 기존 영문법에서는!
    • 섹션을 마무리하며
  •  
  • ▣ 섹션 7: 진짜 문장을 가지고 읽고 쓰는 연습하기
    • 문장 읽기(1)
    • 문장 읽기(2)
    • 문장 읽기(3)
    • 문장 읽기(4)
    • 문장 쓰기(1)
    • 문장 쓰기(2)
    • 문장 쓰기(3)
    • 섹션을 마무리하며
  • 목차 - 섹션 6

    212 - 만드세요 앞에 ' 추가

  • 161페이지 문제 1번 답 수정

    2번 -> 1번

  • 105페이지 3.(1) 답 수정

    Programmer like feedback user sent. => Programmer like feedback that user sent.

  • 153페이지 1,2번에 대한 문장 의미 설명이 잘못 되었습니다.

    [running]app.requires(iOS) -> 실행 중인 앱은 iOS가 필요하다.

    running(app).requires(iOS) -> 앱을 실행하는 것은 iOS가 필요하다.

  • 154페이지 01.1 문제

    오타는 아니지만 '뼈대완제품'은 '옵션부품'이 들어있지 않은 완제품이라는 점 참고해 주세요!

  • 155페이지

    1,2번 코드로 나타낸 부분에서, 밑줄의 위치가 잘못되었습니다. 또한 1,2번 각각의 의미를 정리해서 넘어가면 좋겠다는 의견이 있어서 추가합니다. 취소선 표시가 안되어서, 취소선은 단어 바로 위에다가 _____로 표시했어요.

                 ______
    frient[that_<friend.added(user)>].posted(comment): 사용자를 추가했던 친구가 댓글을 달았다.
    ---------------------------------
    
                            ______ 
    frient[that_<user.added(friend)>].posted(comment): 사용자가 추가했던 친구가 댓글을 달았다.  (친구를 추가한 사용자가 의견을 게시한 게 아니에요!)
    ---------------------------------