1-4. Clear sentences

Google Technical Writing Course - 1

by 잡초

Technical Writing에서 가장 중요한 항목 중 하나인 "clarity (명료성)"에 대한 내용.

목차는 아래와 같다.




Choose strong verbs


Weak Verb 대신 Strong Verb를 사용할 것.

Weak Verb의 대표적인 예시는 be동사 / occur / happen 등이 있으며, 이를 아래와 같이 Strong Verb로 사용할 수 있다.



Exercise 문제 2개와 모범 답안은 아래와 같다.

내가 먼저 바꿔본 것과 비교해서 모범 답안을 분석해보았다.


1. When a variable declaration doesn't have a datatype, a compiler error happens.

→ When a variable declaration doesn't specify a datatype, the compiler generates an error message.

→ If you declare a variable but don't specify a datatype, the compiler generates an error message.


나는 "Variable declaration without a datatype raises a compiler errors."라고 바꿨는데, 이를 통해 'happens'의 모호함을 왜 피해야 하는지 알 수 있었다. 비개발자는 'compiler error'가 구체적으로 무엇인지 모르기에, 'generates an error message'라는 생각을 떠올릴 수가 없다.


그리고 'have' 도 'specify'로 바꿈으로서 변수 선언을 하는 그 시점에 해야 하는 행위를 보다 명확하게 지시하고 있다. 이 관점에서 내 답변인 'without'도 여전히 애매모호하다.


2. Compiler errors occur when you leave off a semicolon at the end of a statement.

→ Compilers issue errors when you omit a semicolon at the end of a statement.

→ A missing semicolon at the end of a statement triggers compiler errors.


이번 모범답안에서의 변경점은 아래와 같은데, 사실 와닿지는 않는다.

경험과 연습으로 감을 잡아가야 하는 부분인 것 같다.

(참고로 내 답은 두 번째 모범답안과 거의 유사한데, triggers 대신 raises를 쓴 부분만 다르다.)


occur → issue / trigger

leave off → omit / missing



Reduce there is / there are


There과 be동사 모두 그 자체로는 의미가 없는 'generic'한 단어들로, 문장 시작부터 글을 루즈하게 만든다.

그렇기에 there is/are의 사용을 줄이고, 실제 의미가 있는 명사와 동사를 사용한다.


아래는 there is/are이 들어간 문장을 고치는 구체적인 예시들이다.


1. There is a variable called met_trick that stores the current accuracy.

→ A variable named met_trick stores the current accuracy.

→ The met_trick variable stores the current accuracy.


2. There are two disturbing facts about Perl you should know.

You should know two disturbing facts about Perl.


실제 주어인 "You"를 문장 앞으로 가져옴으로서 강조 효과를 끌어올릴 수 있다. (당신은 알아야 한다)


3. There is no guarantee that the updates will be received in sequential order.

→ Clients might not receive the updates in sequential order.


주어가 명확하지 않은 경우에는, 가장 적합한 주어를 직접 만들어야 한다.

이 경우에는 업데이트를 받는 대상(receiving entity)가 누구일지 고려해보고, 그 대상이 'clients'임을 명시해주면 문장이 훨씬 명료해진다.



한편, 이번 Exercise 문제는 꽤 까다로웠다. 원문의 의미를 파악하기 어려웠기 때문이다.


1. There is a lot of overlap between X and Y.

→ X and Y overlap a lot.


나는 "A lot of overlap exists between X and Y"라고 했는데, 모범답안에 비하면 한참 부족하다..


2. There is no creator stack for the main thread.

→ The main thread does not provide a creator stack.


나는 이걸 "Creator stack doesn't exist for the main thread."라고 바꿨는데, 개발 지식이 있었다면 "provide"라는 단어를 사용할 수 있었을까? 모범답안과 원문을 비교하니 그 의미가 확연히 다른데, 내가 바꾼 답은 원문과 거의 유사하다.


3. There is a low-level, TensorFlow, Python interface to load a saved model.

→ TensorFlow provides a low-level Python interface to load a saved model.


이 문장은 처음에 무슨 의미인지 파악이 되지 않아서 고치지 못했다.


원문을 번역하면 "저장된 모델을 불러오기 위한, 저수준의 TensorFlow Python 인터페이스가 있다." 가 될텐데, "low-level", "TensorFlow", "Python"가 콤마로만 붙어있으니 TensorFlow와 Python의 개념이나 관계를 모르는 사람 입장에서는 이 3가지가 동급인지? 서로 어떻게 수식 관계가 이루어지는건지? 의미뿐 아니라 문장 구조부터가 복잡하다.


별도로 찾아보니 TensorFlow란 파이썬 환경에서 사용하는 라이브러리로, 조금 더 쉽게 풀어쓰자면


"Python"이라는 언어를 이용해 "TensorFlow"라는 도구를 사용할 수 있도록, "TensorFlow"에서는 "Python interface (API)"를 제공한다.


즉 TensorFlow를 모른다면 원문은 도저히 이해할 수 없는 문장이었다.


하지만 모범답안에서는 "TensorFlow"가 "a low-level Python interface"를 제공한다고 되어 있기 때문에 TensorFlow가 무엇인지 모르는 사람도 대략적인 뉘앙스를 파악할 수 있다.


4. There is a sharding function named distribute that assigns keys.

→ The distribute sharding function assigns keys.


내가 바꾼 답은 "Sharding function named distribute assigns keys."

이 경우는 내가 바꾼 답이 더 명료하다는 생각이 든다. 모범답안에서 "distribute"가 볼드처리되어 있지 않다면, 문외한 입장에서는 문장 구조가 한 눈에 안 들어올 것 같기 때문이다.



어쨌든 공통점을 뽑아보면, '현상'이나 '결과' 중심의 설명보다는 '주체'와 '동작'이 명시된 표현을 권한다는 것을 알 수 있다.



Minimize certain adjectives and adverbs (optional)


기술 문서에서 형용사와 부사를 너무 많이 사용하지 말 것.

대신 객관적인 수치 표현을 애용할 것.

당연한 말이다. 기술 문서는 광고가 아니다.



keyword
매거진의 이전글1-3. Active voice