김철수 지음 | 위키북스 | 2019년 10월
✅ 해당 도서를 읽고 영감을 주는 부분 및 학습한 내용을 요약한 기록입니다.
개발자가 쓰는 글은 주로 클래스나 함수의 이름, 주석, 에러 메시지, 릴리스 문서, 개발 가이드 등이다. SM 일을 한다면 장애 보고서를 쓰기도 하고 SI 일을 한다면 제안서를 쓰고 프로젝트 완료 후 ERD나 기능 명세서 같은 각종 개발 산출물을 쓴다. 요즘 개발자 중에 블로거가 많아서 개발과 관련한 게시물도 쓴다.
🍀 이런 개발자의 글과 문서는 정확하고 간결하며 가독성이 높아야한다.
정확성 : 틀림이 없이 확실한 것을 말한다. 글로 쓰인 대로만 개발하면 버그 없이 실행돼야 한다.
간결성 : 글에 군더더기가 없고 간단하고 깔끔한 것을 말한다. 구구절절 설명하는 것이 아니라 핵심만 써야 한다.
가독성 : 쉽게 읽히는 것을 말한다. 쉬운 용어를 사용하고 필요하다면 표나 그림으로 잘 정리해야 한다. 문단과 문서 전체에 체계와 위계가 갖추어져야 한다.
문장을 만드는 방법이 이렇게 다양하므로 문장을 어떻게 만드느냐에 따라 글을 쓰는 속도가 달라진다. 예를 들어 다음 문장을 보자.
ex) 색상 RGB 값을 각각 사용하기 때문에 입력 데이터는 3차원 벡터다.
ex) 입력 데이터는 색상 RGB 값을 각각 사용하기 때문에 3차원 벡터다.
이 문장은 인과관계가 있는 복문이므로 두 문장으로 나눌 수 있다.
ex) 입력 데이터는 색상 RGB 값을 각각 사용한다. 그래서 입력 데이터는 3차원 벡터다.
이제 입력 데이터가 3차원 벡터인 이유를 어떻게 설명할 것인지 결정하면 된다.
ex) 입력 데이터는 3차원 벡터다.
ex) [입력데이터] 입력데이터는 3차원 벡터다. 색상 RGB 값을 각각 사용하기 때문이다.
개발자의 생각을 글로 표현하는 데는 크게 세가지 방법이 있다.
첫째는 서술식이다.
둘째는 개조식이다.
셋째는 도식이다.
비즈니스 문서에서 위치와 계층은 항상 붙어 다난다. 위치만 있어서도 안되고 계층만 있어서도 안 된다. 글을 쓸 때는 항상 위계가 잘 드러나게 글을 쓰고 표현해야 한다.
패키지, 클래스, 모듈, 함수, 변수를 망라해 좋은 이름인지를 확인하는 5가지 기준을 SMART로 정했다.
🍀 글은 의미를 전달하는 수단이다. 코드도 마찬가지다.
개발자가 어떤 의도를 전달하는 이유는 다른 개발자를 위한 것이다. 코드를 왜 이렇게 작성했는지 설명하고 뜻밖의 발견을 제시하거나 새로운 아이디어를 보여주거나 어떤 방법이 더 좋은지 알려주는 것은 모든 다른 개발자를 배려하는 마음이다.
개발하다 보면 개발자용 에러 메시지와 사용자용 에러 메시지를 섞어서 쓰곤한다. 보통은 로그를 사용하지만 가끔 알림창을 쓸 때도 있다. 이런 경우를 피하려면 처음부터 개발자용 에러 메시지와 사용자용 에러 메시지를 분리해 작성하는 것이 좋다.
사용자가 개발자의 의도대로 프로그램을 사용해야 하는데, 실제로는 그렇지 않은 경우가 많다.
에러 메시지의 목적은 사용자에게 에러가 났음을 알려주는 것이 아니라 사용자 스스로 에러를 해결하게 하는 것이다. 따라서 사용자 에러 메시지에는 에러의 내용, 에러의 원인, 에러 해결 방법이 포함돼야 한다.
모든 개발자는 사용자가 에러 없이 프로그램을 사용하게 만들고 싶어 한다. 하지만 에러가 한 번도 발생하지 않게 프로그램을 온전히 개발할 수 있는 개발자는 없다. 사용자마다 사용법이 제각각이고, 아무리 매뉴얼이나 도움말을 충실히 적어도 사용자가 무시하고 마음대로 사용하기 일쑤다.
🍀 그래서 에러를 줄이려면 개발자도 사용자의 사용방식을 이해해야 한다. 사용자가 어떻게 사용할지를 충분히 이해하고 조사하고 분석해야 에러를 줄일 방법을 찾을 수 있다.
어떤 일을 하고 나서 그 일의 내용을 상사나 고객에게 글로 보고해야할 때가 있다. 이때 글을 지나치게 줄여 쓰면 일을 안 한 것처럼 보인다. 그렇다고 해서 일의 내용을 하나씩 구체적으로 다 쓰면 아무도 읽지 않는다. 체인지 로그가 이런 경우에 해당한다. 간단히 쓰면 한 일이 없어 보이고 자세히 쓰면 아무도 읽지 않아 쓸모가 없다.
🍀 체인지 로그를 적절한 양으로 쓰려면 일단은 체인지 로그를 최대한 많이 써야한다. 그다음에는 일정한 기준으로 선정하고 비슷한 것 끼리 분류한 뒤 문장을 요약하는 기술이 필요하다.
1단계 : 선정하기
2단계 : 분류하기
3단계 : 요약하기
4단계 : 종합하기
개발자가 기술 블로그를 잘 못 쓰는 이유 중 하나는 블로그에 글을 쓰는 방법이 학생이었을 때 배운 글쓰기 방법과 다르기 때문이다. 우리가 학생이었을 때 배운 글쓰기 방법과 다르기 때문이다. 우리가 학생이었을 때 배운 글쓰기 방법은 주로 논설문이나 설명문을 쓰는 방법이었다.
🍀 필자는 개발자가 블로그에 글을 쓸 때 개발자에게 적합한 방법 세 가지를 제시한다.
- 첫째, 소재 우선 글쓰기
- 둘째, 자기 수준 글쓰기
- 셋째, 재미있는 글쓰기
소재 우선 글쓰기는 주제 의식이 아니라 소재 의식을 갖고 쓰는 것이다. 주제 의식이 민족이나 권선징악, 자존감이나 자본주의 같은 추상적 가치를 기반으로 한다면 소재 의식은 특정한 대상이나 상황에 대한 자기만의 관점이나 생각이나 해결 방안을 뜻한다.
ex) 우아한 형제들 기술 블로그에 올라온 글 중에 "데이터베이스의 자동증가 값을 기본키로 사용할 수 없을 때는?"이 있다.
글쓰기 전문가들은 다른 글을 쓸 때 초등학생도 이해할 수 있도록 쉽게 풀어서 쓰라고 한다. 하지만 직장에서 하는 일을 초등학생이 이해할 수 있게 풀어서 글을 쓰는 사람은 없다.
개발자가 기술 블로그를 쓸 때는 독자를 생각해서 어려운 용어를 일부러 해석해 풀어쓰거나 쉬운 용어로 바꿀 필요가 없다. 원래 사용하는 용어로 그냥 표기하되 필요하다면 용어를 정의한 위키피디아 페이지나 세부 내용을 볼 수 있는 사이트나 문건을 링크로 걸어두면 된다.
🍀 기술 블로그란 것은 결국 실력이 비슷한 독자를 위한 것이다. 독자에게 다 설명하느 것이 아니라 핵심 내용만 쓰고 나머지는 독자가 공부할 수 있게 길만 터놓는 것이 현명한 방법이다. 그래야 개발자도 자기가 쓰려는 글의 본질에 집중할 수 있다.
논문이나 기술 매뉴얼, 사용 설명서를 쓸 때는 자신의 경험을 녹여내거나 글의 기교를 부릴 여지가 별로 없다. 이런 글은 정확하고 군더더기가 없이 깔끔하지만, 글 쓰는 재미나 읽는 재미가 별로 없다.
글쓰기 기교는 글을 아름답게 만들고 쉽게 읽히게 한다. 기교를 부리다 보면 글쓰기가 재미있고 글도 재미있어진다. 글에 재미가 있으면 독자가 활발히 반응하고 독자의 반응이 활발하면 블로거는 글을 계속 쓸 동력을 얻는다. 글쓰기 기교는 이렇게 선순환을 만든다.
🍀 API 레퍼런스가 위키피디아처럼 인공지능 컴퓨터가 담담하게 쓴 것 같다면 기술 블로그는 그 글을 쓴 사람의 경험을 독자가 온몸으로 공감하고 끄덕이게 만들어야 한다.
저 著 : 직접 경험하고 실헌한 과정이나 결과
- ex) 개발기, 도입기, 적용기
술 述 : 어떤 것을 분석하며 의미를 풀이하고 해석한 것
- ex) 기술 소개, 용어 분석, 에러 해결 방법 등
편 編 : 산만하고 복잡한 자료를 편집해 질서를 부여한 것
- ex) 프로그램 설지/설정 방법, 튜토리얼, 세미나 후기, 책 리뷰
집 輯 : 여러 사람의 견해나 흩어진 자료를 한데 모아 정리한 것
- ex) 명령어 모음, 팁, OO가지 규칙
개발자 혼자 공부해서는 실력이 나아지기가 쉽지 않다. 회사가 개발자에게 글쓰기를 체계적으로 교육해야 개발자의 글쓰기 수준이 높아진다. 그러면 버그의 비용이 줄어들고, 생산성과 고객 만족도가 높아진다. 회사의 교육 수준이 개발자의 개발수준인 셈이다.