Google Technical Writing Course - 1
Technical Writing에서 가장 중요한 항목 중 하나인 "clarity (명료성)"에 대한 내용.
목차는 아래와 같다.
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
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"가 볼드처리되어 있지 않다면, 문외한 입장에서는 문장 구조가 한 눈에 안 들어올 것 같기 때문이다.
어쨌든 공통점을 뽑아보면, '현상'이나 '결과' 중심의 설명보다는 '주체'와 '동작'이 명시된 표현을 권한다는 것을 알 수 있다.
기술 문서에서 형용사와 부사를 너무 많이 사용하지 말 것.
대신 객관적인 수치 표현을 애용할 것.
당연한 말이다. 기술 문서는 광고가 아니다.