fkdl0048 / BookReview

It's a repo that reads and organizes books
MIT License
7 stars 0 forks source link

1장: 개발자가 알아야 할 글쓰기 기본 #274

Closed fkdl0048 closed 2 months ago

fkdl0048 commented 3 months ago

1장: 개발자가 알아야 할 글쓰기 기본

문장과 단락을 구조화하는 법

문장을 구조화하는 법

문장을 만드는 방법은 여러 가지다. '나는 김철수다'와 같이 '주어+서술어'가 가장 기본이지만 '김철수가 사랑하는 사람은 이소연이 아니다.'처럼 '주어+보어+서술어'로 확장되기도 한다. 그런데 이 문장은 '이소연은 김철수가 사랑하는 사람이 아니다.'처럼 주어절과 보어를 교체할 수 있다.

색상 RGB 값을 각각 사용하기 때문에 입력 데이터는 3차원 벡터다.

이 문장을 쓰려면 머릿속에 '색상 RGB 값을 사용한다.'와 '입력 데이터는 3차원 벡터다.'를 떠올린 다음 두 문장의 관계를 연결하는 것까지 생각해야 한다. 이렇게까지 생각해서 문장을 만드려면 시간과 수고가 많이 든다.

따라서 문장의 주어인 '입력데이터'를 문장의 처음으로 뺄 수 있다.

입력 데이터는 색상 RGB 값을 각각 사용하기 때문에 3차원 벡터다.

이 문장은 인과관계가 있는 복문이므로 두 문장으로 나눌 수 있다. 복문이란 두 개 이상의 절(주어와 술어를 포함하는 문장 단위)을 포함한 문장

입력 데이터는 색상 RGB 값을 각각 사용한다. 그래서 입력 데이터는 3차원 벡터다.

이 문장을 쓰려면 머릿속에서 본인이 잘 아는 내용, 즉 '입력 데이터는 3차우너 벡터다'를 떠올리고 바로 쓴다. 그럼 다음과 같은 문장이 만들어진다.

입력 데이터는 3차원 벡터다.

이제 입력 데이터가 3차원 벡터인 이유를 어떻게 설명할 것인지를 결정하면 된다. 색상은 보통 RGB의 세 값을 사용하므로 그래픽을 조금이라도 이해한다면 당연히 3차원 벡터를 알 것이기에 '입력 데이터는 3차원 벡터다'라고만 써도 충분할 것이다.

[입력 데이터]
입력 데이터는 3차원 벡터다. 색상 RGB 값을 각각 사용하기 때문이다.

문장을 쉽게 쓰려면 이처럼 간단한 문장 구조로 핵심만 말한 뒤, 필요에 따라 부가 설명을 하면 된다. 이때 첫 문장의 주어를 가져다가 소제목으로 만들면 자연스럽게 문단이 구성할 수 있다.

서술식, 개조식, 도식의 차이

개발자의 생각을 글로 표현하는 데는 크게 세 가지 방법이 있다.

첫째는 서술식이다. 서술식은 바로 앞의 문장처럼 '~다'로 끝나는 완전한 문장으로 구성된 글을 말한다. 무엇을 설명하거나 논증할 때 주로 사용하는 방식이다. 소설이나 신문 기사처럼 개발 가이드 문서는 대부분 서술식으로 쓴다.

둘째는 개조식이다. 개조식은 신문의 헤드라인을 쓰거나 어떤 사항을 나열할 때 사용한다. 행사의 개요를 적을 때 일자, 장소, 참가자 등을 종결 어미 대신 명사나 용언의 명사형('~했음')으로 끝내는 것을 개조식이라고 한다. 주로 릴리스 문서나 장애 보고서를 쓸 때 개조식으로 쓴다.

셋째는 도식이다. 도식은 사물의 구조나 관계, 상태를 그림이나 서식으로 보여주는 것이다. 이때 가장 간단한 형태의 도식은 행과 열로 이뤄진 표다. 행렬에 글만 있으면 표라고 하고, 막대 같은 그림이 있으면 도표라고 한다. 여기서 도식은 주로 표를 의미한다.

"00 메신저에는 4가지 푸시 알림이 있습니다. 공지 알림은 서비스 변경이나 장애, 이벤트 등 메신저 운영사가 직접 보냅니다. 오전 9시부터 오후 6시 사이에만 발송합니다. 메시지 알림은 등록된 친구가 메시지를 보냈을 때 자동으로 시스템이 전송합니다. 친구 등록 알림은 새로운 친구가 등록되었을 때 알려줍니다. 친구 해제 알림은 친구가 탈퇴했을 때 알려줍니다."

이렇게 여러 사항이 유사한 패턴으로 반복될 때는 다음과 같이 개조식으로 쓰는 것이 보기도 좋고 이해하기도 쉽다.

전보다는 훨씬 명확하고 이해하기 좋지만 개조식 표현에는 중복과 누락이 있음을 알 수 있다. 메신저 알림, 친구 등록 알림, 친구 해제 알림은 모두 시스템이 자동으로 전송한다(중복). 하지만 친구 등록 알림과 해제 알림으 누가 전송했는지 알 수 없다. 이 때 내용을 도식(표)로 표현하면 더 분명하게 드러낼 수 있다.

알림 종류 상황 발송 방식 발송 시간
공지 서비스 변경, 장애, 이벤트 운영사(수동) 오전 9시 ~ 오후 6시
메시지 등록된 친구가 메시지 전송 시스템(자동) 제한 없음
친구 등록 새로운 친구 등록 시스템(자동) 제한 없음
친구 해제 친구 탈퇴 시스템(자동) 제한 없음

가장 중요한 점은 내용과 형식이 일치해야 한다는 것이다. 줄거리가 있는 설명이나 이야기라면 서술식으로 써야 한다. 여러 가지 종류의 항목과 내용이 반복되거나 서술식에서 강조가 필요한 내용이라면 개조식, 각 항목이나 사항의 관계를 명확히 규정하고 싶으면 도식을 사용하면 된다.

개조식 서술 방식과 글머리 기호

글을 개조식으로 쓸 때는 글머리 기호를 꼭 써야 한다. 글머리 기호는 네모, 동그라미, 점, 막대를 비롯해 숫자 화살표까지 다양하다. 이런 기호는 쓰임새가 모두 달라서 적절하게 사용해야 한다. 쓰임새를 무시하고 아무렇게나 사용한다면 말머리 기호 체계가 무너져서 독자가 이해하기 어렵다.

단락을 구조화하는 위계

비즈니스 문서에는 문단과 문단 사이에 위계가 있어야 한다. 비즈니스 문서에 위계가 없으면 비즈니스 문서가 아니라 소설이 된다. 이때 위계는 위치와 계층을 합한 말이다.

위치는 2차원 평면 좌표를 말하며, 전 직원이 사진을 찍는다고 하면 보통 사장이 가운데에 위치한다. 회의실도 출입구에서 먼 곳에서 부터 높은 직급이 앉곤 한다. 문서도 마찬가지로 급이 낮은 문장은 더 들여쓰기를 함으로 위치를 맞춘다.

계층은 3차원 입체의 높이를 뜻한다. 무대는 객석보다 항상 높다. 높은 곳의 의자는 낮은 곳의 의자보다 크고 고급스럽다. 문서에서 계층은 굵기, 모양, 밑줄, 줄 간 거리 등으로 표현한다.

개발자가 사용하는 개발 툴은 예문의 위치는 맞출 수 있지만 계층은 맞출 수 없다. 따라서 개발자가 일반 문서를 작성할 때 위치는 과도하게 맞추지만, 계층은 거의 표현하지 않는다. 컴퓨터 개발자의 코드를 처음부터 순서대로 읽으면서 순식간에 체계를 잡아낸다.

하지만 사람은 계층이 표현되지 않은 문서를 보면서 체계를 잡아내기 매우 어렵다. 계층이 없는 문서를 읽고 이해하는 데 시간이 더 걸리고 오해도 자주 생긴다. 그래서 비즈니스 문서에는 반드시 계층을 표현한다. 계층을 표현하면 문서의 체계를 먼저 이해할 수 있으므로 읽는 시간이 덜 걸린다.

쉽게 쓰는 띄어쓰기와 문장 부호

가장 쉬운 띄어쓰기 원칙

개발자가 한글 문서를 쓸 때 가장 어려워하는 것 중 하나가 띄어쓰기다. 영어는 독립적인 낱말이 모여 문장을 만들어 내지만, 한글은 문장마다 달라질 수 있다.

"조사, 순서, 숫자, 하다, 기호만 붙이고 나머지는 띄어 쓴다."

이 문자에서 조사는 모두 앞 낱말에 붙인다.

코딩에서는 조사와 비슷한 것이 쉼표다. 쉼표는 앞 낱말에 붙어야 한다.

auto obj = {
    arg1: 1,
    arg2: 2,
    arg3: 3
};

일, 이, 삼과 같은 한글 숫자가 순서나 단계를 나타낼 때는 뒤 낱말과 붙인다.

숫자는 모두 뒤 낱말과 붙인다.

'~하다'는 모두 앞 낱말과 붙인다.

마지막으로 기호는 모두 앞 낱말과 붙인다.

함수를 선언할 때 함수 이름 끝에 괄호를 쓰고 그 안에 인수를 쓰는데, 이때도 붙여 쓴다. wordSpacing(arg1, arg2, arg3);

띄어쓰기를 좀 더 꼼꼼하게 보고 싶다면 맞춤법 검사기를 추천한다.

오해하기 쉬운 문장 부호(큰따옴표, 작은따옴표)

개발 언어마다 문장 부호의 용도와 의미가 조금씩 다르다. 그래서 개발자 사이에서 문장 부호의 쓰임새를 두고 격론이 벌어질 때도 있다.

그 중에서 따옴표는 더욱 언어마다 상이하다. C언어에서는 작은 따옴표는 단일 문자에 사용하고 큰 따옴표는 문자열에 사용한다. 자바스크립트에서는 큰 따옴표와 작은 따옴표를 모두 문자열에 사용한다.

한글에도 따옴표 규정이 있다. 큰 따옴표는 직접 대화를 표시하거나 말이나 글을 인용할 때 사용한다. 작은 따옴표는 인용한 말 안에 있는 인용한 말, 또는 마음속으로 한 말을 쓸 때 사용한다.

하지만 비즈니스 문서에서 따옴표의 용도는 조금 다르다. 우선 책이나 제목이나 신문 이름을 나타내는 겹낫표와 겹화살표<>대신에 큰 따옴표를 사용한다.

소제목이나 예술 작춤의 제목, 상호, 법률, 규정 등을 나타낼 때 쓰는 홋낫표, 홑화살괄호 대신에 작은 따옴표를 사용한다. 또한 어떤 내용을 강조하거나 비교하기 위해서 드러내야 할 때도 작은 따옴표를 사용한다.

영어 단어 선택과 외래어 표기법

비슷한 듯 다른 듯, 단어 선택

개발을 하다 보면 반대되는 영어 단어를 선택해야 할 때가 많다. 예를 들어 hide라는 단어로 감추기로 표시했다면 반대로 show로 정확히 사용해야 한다. hide 대신 invisiable을 쓰면 안된다. invisiable의 반대말은 visiable이기 때문이다.

반대말이 있으면 비슷한말도 있다. 비슷한말은 서로 의미는 비슷하지만 개발에서 사용하는 의도는 다르다. 예를 들어 중단이라는 의미를 가진 영어 단어로는 stop, end, finish, pause, suspend, hold 등이 있다. stop은 잠시 중단 하는 것이어서 언제든 재시작할 수 있다. 완전히 중단되어서 재시작할 가능성이 없다면 end를 써야 한다. finish는 끝장을 본 상태여서 재시작을 고려할 필요도 없다. pause는 아주 잠시 일시적으로 중단된 것이어서 금방이라도 다시 시작할 것 같은 상황이다. suspend는 다음 단계의 시작을 중단한 것이고 hold는 어떤 의도가 있어서 중단한 것이다.

이외에도 get, return, set 등 비슷하면서 완전히 다른 의미를 가지는 영어단어가 많기 때문에 개발자는 주의해서 선택해야 한다.

수정을 나타내는 change, modify, revise도 의도가 다른 말이다. change는 내용을 단순히 바꾸는 것이다. modify는 잘못된 것을 바로잡을 때 쓴다. revise는 기존에 없던 새로운 정보나 아이디어를 덧붙여 기존 내용과 달라졌음을 분명히 할 때 사용한다.

parameter는 매개변수로, 함수에 정의한 변수를 뜻하고 argument는 전달 인자로, 함수를 호출할 때 전달되는 값을 의미한다.

must와 should는 우리말로 '~해야 한다'라고 번역되만 의미가 다르다. must는 반드시 해야 하는 것이고 should는 권장하는 것이다.

외산 제품 표기와 외래어 표기법

일관성 있게 써야 하는 것 중에서 가장 대표적인 것이 외산 제품 표기다. 예를 들어 Windows 10을 보면 제품의 공식적인 이름은 'Windows 10'이다. 하지만 우리말로 쓸 때는 여러 표현들이 나오기도 한다.

개발자에게 친숙한 릴리즈, 릴리스와 같은 표현이나 파이썬도 마찬가지다. 확실하게 말하자면 글쓰기에서 지켜야할 것은 외래어 표기법이 아니라 일관성이다. 따라서 한 문서 안에서만 통일한다면 굳이 어색한 외래어 표기법에 짜맞추지 않아도 된다.

"이미 굳어진 외래어는 관용을 존중하되, 그 범위와 용례는 따로 정한다."

느낀점

인터넷에서 책을 구매하기 전 여타 다른 책에서 다루는 코드 작성법에 대한 내용이 많을 것 같아서 걱정했지만 걱정과 달리 내가 필요로 했던 내용이 많아서 순식간에 읽은 것 같다.

저자가 한국인+개발자라 개발자들이 글쓰기를 어려워 하는 이유에 대한 명확한 분석과 글을 잘써야 하는 이유 그리고 가장 많이 하는 실수를 중심으로 챕터를 잘 나눠서 설명해주신 것 같다.

책을 읽고 글로 많이 정리하는 편이라 알게 모르게 2년전과 비교해서 글을 작성하는 솜씨나 구사력이 좋아졌다고 생각했는데, 그것이 왜 그런지를 적절한 정의와 단어로 설명이 되어서 이해할 수 있었다.

특히 문장을 구조화하는 법의 내용은 내가 쓴 글이 복잡하다면 꼭 다시 읽어볼 생각이다.