Skip to content

필사 모드: 엔지니어링 글쓰기의 시대 — RFC·ADR·Design Doc·Amazon 6-pager·Eng Blog·Changelog·Slack·LLM 시대 글쓰기 심층 가이드 (2025)

한국어
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

왜 글 잘 쓰는 엔지니어가 10배 이긴다고 말하는가

한 엔지니어가 뛰어난 기술적 아이디어를 낸다. 팀에서 발표 못하고 문서도 없으면 그 아이디어는 **한 사람 머리에서 끝난다**. 같은 아이디어를 잘 정리된 RFC로 쓰면 **팀 전체가 판단**할 수 있다. 더 잘 쓰면 **조직 전체**가 본다. 엔지니어링 블로그에 내보내면 **산업 전체**의 기준이 바뀌기도 한다. AWS Nitro 하이퍼바이저, Google Borg, Netflix Chaos Monkey, Airbnb BinaryAlert — 모두 기술 자체만큼이나 **그걸 글로 풀어낸 사람의 능력**이 파급력을 만들었다.

2025년은 특히 글쓰기가 엔지니어 가치의 축이 되는 해다. 이유 3가지.

1. **원격/하이브리드 근무**가 고착되면서 비동기 문서가 동기 회의를 대체

2. **AI 동료**(Cursor·Claude Code·Copilot)와 **AGENTS.md·CLAUDE.md** 같은 메타 문서가 코드베이스의 일급 시민이 됨

3. **LLM에게 맥락을 잘 주는 능력**이 곧 생산성 (좋은 프롬프트 = 잘 쓴 요구사항)

이 글은 RFC·ADR·Design Doc·6-pager·엔지니어링 블로그·Slack/Email·AI 시대의 글쓰기까지 — 기술 글쓰기 모든 면을 다룬다.

> 이 글은 앞선 **코드 리뷰 가이드**의 자연스러운 동반자다. 코드를 잘 쓰는 법을 다뤘다면, 이제는 그 코드에 대해 **설득력 있게 쓰는 법**.

1부. 엔지니어링 글쓰기의 기본 원칙

1.1 Writing is Thinking

- 머릿속에 있는 아이디어가 **글로 쓸 때 처음 검증**된다

- "왜 이 방안을 택했나"를 쓰다가 이유가 없음을 발견 → 방안 폐기

- 제프 베조스가 Amazon 파워포인트 금지, **6-pager narrative**를 강제한 이유

1.2 독자 모델

- **초보자**가 읽는가, **동료 전문가**가 읽는가

- 상사 1명 vs 팀 전체 vs 사외 독자 — 각기 어휘·깊이·맥락 수준이 다름

- 잘 쓴 문서는 **"첫 3분"**에 독자에게 "이 글이 당신에게 중요한 이유"를 준다

1.3 BLUF — Bottom Line Up Front

군·컨설팅·임원 소통 관행. 결론을 맨 위에. 수평 구조 조직일수록 중요. 밑에서 소개·맥락부터 깔면 바쁜 리더는 스킵.

1.4 Plain English·명확성·동사 우위

- 수동태보다 능동태

- 단어 `utilize` → `use`, `in order to` → `to`, `due to the fact that` → `because`

- 짧은 문장이 좋지만 리듬이 죽지 않게 변주

- 원어민이 아닌 독자도 고려 (글로벌 팀)

1.5 Show, Don't Tell

- "시스템이 느립니다"가 아니라 "p99 latency 2.3s → SLO 500ms 초과"

- 데이터·숫자·다이어그램·실제 코드 스니펫

2부. RFC — Request for Comments

2.1 RFC의 기원과 현대

- IETF(인터넷 표준)의 RFC 프로세스가 원형(1969~)

- Rust RFC, Ember RFC, Python PEP, Go Design Docs이 소프트웨어 오픈소스로 이식

- 사내 RFC — Shopify, GitLab, Coinbase, Stripe가 공개한 사례

2.2 RFC 템플릿 (사내용)

RFC: [제목]

- Author: 이름

- Status: Draft / Review / Accepted / Rejected / Superseded

- Date: 2026-04-15

- Target release: v3.2 (optional)

요약 (TL;DR)

3문장 이내

문제 (Problem)

지금 무엇이 아픈가. 측정 가능한 고통.

목표 / Non-goals

- 이 제안이 해결하는 것

- 일부러 포함 안 한 것

제안 (Proposal)

구체적 설계 — API, 데이터 모델, 시퀀스, 에러 핸들링

대안 (Alternatives)

고려했지만 기각한 옵션 + 기각 이유

영향 (Impact)

- Backward compatibility

- Migration plan

- Performance

- Security

오픈 질문 (Open Questions)

아직 답이 없는 것

참고 자료

2.3 RFC 프로세스

1. **Draft** — 저자가 초안, 팀 공유

2. **Comment Period** — 1~2주, 서로 질문/반론

3. **Decision Meeting** (비동기 투표로도 가능)

4. **Accepted/Rejected/Deferred**

5. **Implementation** — 머지 전 최종 검토

2.4 좋은 RFC의 특징

- **대안을 3개 이상** 나열 — 진지하게 고민했다는 신호

- **Non-goals** 섹션 — 범위 명시로 무한 논쟁 방지

- **오픈 질문**을 숨기지 않기 — 모르는 걸 인정

- **측정 가능한 성공 기준** — "배포 후 p99 30% 감소" 같은

2.5 RFC가 실패하는 이유

- 너무 긺 (50페이지) → 아무도 안 읽음

- 너무 짧음 → 대안 분석 없음 → 첫 회의에서 박살

- 의사결정자가 명시 안 됨 → 표류

- 기각 이유가 공유 안 되어 같은 논의 반복

3부. ADR — Architecture Decision Record

3.1 왜 ADR이 별도 개념인가

- RFC는 **제안** — 앞으로 할 일

- ADR은 **기록** — 이미 내린 결정을 **이력**으로 저장

"왜 Postgres가 아니라 MongoDB인가", "왜 gRPC가 아니라 GraphQL인가" — 6개월 뒤 신규 엔지니어가 물을 때 답할 수 있어야 한다.

3.2 Michael Nygard 템플릿 (2011 원조)

ADR-042: Use PostgreSQL for User Service

Status

Accepted (2026-03-15)

Context

[배경·제약·고려사항]

Decision

[무엇을 결정했나]

Consequences

[결정의 결과 — 좋은 것, 나쁜 것, 중립적인 것]

3.3 구조

- 레포 안 `docs/adr/` 폴더에 `adr-NNNN-제목.md` 형식

- 파일명·번호 순서대로 시간 이력

- **상태 전이**: Proposed → Accepted → Deprecated → Superseded

- Superseded는 "어떤 ADR이 대신함" 링크

3.4 도구

- **adr-tools** (Jeff Nickoloff) — 커맨드라인 생성기

- **Log4brains** — ADR 웹 렌더링

- **Backstage TechDocs** — ADR을 포털에 자동 인덱싱

3.5 ADR이 만드는 문화

- "회의에서 결정한 걸 녹음본으로 찾기" 지옥 종료

- 신규 엔지니어 온보딩이 ADR 5개 읽기로 해결

- "그 결정 왜 그렇게 했어?" 질문이 사라짐

4부. Design Doc — 구글이 대중화한 형식

4.1 Design Doc vs RFC

- 대부분 조직에서 두 용어가 섞임

- 통상: Design Doc이 더 큼(시스템 전체), RFC가 더 좁음(API/프로토콜)

- Google "Design Doc"이 유명 → 책 "Software Engineering at Google" 참조

4.2 좋은 Design Doc 구성

- **Context / Background**

- **Goals / Non-goals**

- **Overview** — 다이어그램 1장

- **Detailed Design** — 컴포넌트별

- **Data Model**

- **APIs**

- **Sequence Diagrams**

- **Alternatives Considered**

- **Security / Privacy / Compliance**

- **Migration / Rollout Plan**

- **Metrics / Success Criteria**

- **Risks / Open Questions**

4.3 도구 생태계

- Google Docs — 코멘트 협업 강점, 버저닝 약함

- Notion — 깔끔, 검색 약함

- Confluence — 엔터프라이즈 표준, UX 낡음

- Outline (OSS) — 가볍고 깔끔, 2024 급성장

- GitBook — 기술 문서에 최적

- Obsidian (개인) → 팀: Foam, Dendron

- 사내 팀의 **Markdown in Git** 운영 — 작성 문턱 낮고 이력 완전

4.4 다이어그램

- **Mermaid** — 코드로 그리는 다이어그램, Markdown 기본 지원

- **Excalidraw** — 손그림 느낌, 협업 가능, OSS

- **draw.io / diagrams.net** — 복잡한 아키텍처

- **D2** (Terrastruct 2023 OSS) — 코드 기반 + 자동 레이아웃

- **Whimsical**, **FigJam** — 팀 whiteboarding

5부. Amazon 6-pager — 회의 시작 20분의 침묵

5.1 규칙

1. 미팅 시작하면 처음 20~30분은 **전원 조용히** 6-pager 읽기

2. 모두 같은 맥락으로 참여

3. 파워포인트 금지 (bullet 이상의 사고 강제)

4. 저자는 반박을 받아 "답변본"을 만들기도

5.2 왜 효과적인가

- 파워포인트는 **연사의 쇼**, 6-pager는 **내용의 검증**

- 생각의 뼈대가 드러남 — 논리 구멍, 가정, 대안 평가

- 읽는 데 30분이지만, 회의 효율 2배

5.3 6-pager 구조

1. Opening (한 문단)

2. Background

3. Problem Statement

4. Options considered

5. Recommendation

6. FAQ (예상 반론 + 답)

7. Appendix (데이터, 상세)

5.4 팀에 도입하는 법

- 모든 회의를 바꿀 필요 없음 — 의사결정 회의만

- 저자는 최소 24시간 전 공유

- "리더가 먼저 모범"을 보여야 문화가 됨

6부. 엔지니어링 블로그 — 외부 커뮤니케이션의 정점

6.1 왜 회사가 엔지니어링 블로그를 운영하는가

- **채용 브랜딩** — 최고의 채용 자석

- **기술 권위** — 고객 신뢰

- **내부 지식 정리** — 외부용으로 쓰면서 자체 정리

- **커뮤니티 기여** — OSS 조직 생태계

6.2 레퍼런스 블로그

- **Stripe** — 단행본 수준 깊이, 디자인 훌륭

- **Shopify** — Ruby/Rails 세계의 표준 사례

- **Uber** — 대규모 인프라 사례

- **Airbnb** — 데이터·ML 중심

- **Netflix TechBlog** — Chaos Engineering, 스트리밍 인프라

- **Pinterest / Slack / Dropbox** — 실전 중심

- **Cloudflare** — 매일 포스팅, 깊이와 속도의 균형

- **GitHub Engineering**, **Meta Engineering**

- **Vercel** — Edge/Next.js 생태계

6.3 콘텐츠 유형

- **Incident Postmortem** — 신뢰의 정점

- **Architecture Deep Dive** — "우리는 이렇게 만들었다"

- **Tooling·Migration 스토리** — "Perl → Rust 전환기"

- **Open Source 소개**

- **Performance Case Study**

- **Research / Experiments**

6.4 운영 체계

- **Editor** 1명 전담 (엔지니어 겸직 많음)

- 월 2~4개 목표, 분기별 리뷰

- 작성자에 대한 **시간 보상** — 20% time, 스프린트 편성

- 브랜딩 팀과 조율 (로고·SEO·소셜)

- **Syndication**: Hacker News, Twitter/X, LinkedIn, Reddit r/programming

6.5 개인 엔지니어링 블로그

- 많은 엔지니어에게 **커리어 최고 레버리지**

- Hacker News front page 1회 = LinkedIn 수천 팔로워

- "1년에 12개, 매달 하나"가 현실적 목표

- 주제 발굴: 최근 트러블슈팅, 반복되는 설명, 논쟁 지점

7부. Changelog·Release Notes

7.1 Keep a Changelog 형식

Changelog

[Unreleased]

Added

- new feature A

[1.4.0] - 2026-04-15

Added

- feature B

Changed

- default timeout 30s → 60s

Deprecated

- /v1/users (removed in v2.0)

Fixed

- race condition in login

Security

- CVE-2026-1234 mitigated

7.2 자동화

- **semantic-release** — Conventional Commits → 버전·changelog 자동 생성

- **changeset** (atlassian) — monorepo 친화

- **release-please** (Google) — PR로 릴리스 관리

7.3 사용자 대상 Release Notes

- Changelog는 기술적, Release Notes는 사용자용

- 스크린샷, 예제, **영향받는 사람은 누구인가** 명시

- Breaking change는 별도 강조 + 마이그레이션 가이드 링크

7.4 API Deprecation

- 공지 → 경고 기간(최소 6개월) → 제거

- Deprecation header: `Deprecation: true`, `Sunset: <date>`

- Stripe·GitHub API가 모범

8부. 비동기 커뮤니케이션 — Slack·Email·Linear·GitHub

8.1 동기 회의의 비용

- 8명 1시간 회의 = 8시간 인력. 연봉 $150K 기준 약 $500

- "이 회의 대신 5분 글로 끝낼 수 있는가?"

8.2 비동기 원칙

- **질문을 맥락과 함께** — "에러 나요" 금지, 로그·환경·시도한 것

- **Rubber Duck 먼저** — 질문 쓰다 답을 찾는 경우 많음

- **SLA 합의** — "24시간 내 응답" 같은

- **Thread 유지** — Slack 메인 채널 폭탄 금지

8.3 좋은 Slack 메시지 공식

[요약 1문장]

배경:

- 상황 X

- 원인 Y

질문:

1. ...

2. ...

시도:

- A → 실패 이유

- B → 결과

대기 중: @이름

8.4 Email의 복귀

- Slack 피로 이후 "진지한 결정은 email로" 트렌드

- Amazon PR/FAQ, 긴 업데이트

- HEY·Superhuman 등 세련된 이메일 툴이 IDE 수준 경험

8.5 프로젝트 관리와 문서의 연결

- Linear·Jira·Asana 이슈에 Design Doc·ADR·RFC 링크 필수

- Notion database로 "프로젝트 → 관련 문서" 관계 유지

9부. AI 시대의 엔지니어링 글쓰기

9.1 AI를 **도구**로 쓰는 법

- 초안 뼈대 → AI에게 확장 시키기

- 긴 문서 → 요약 + 에디터 피드백

- 문법·어투 교정

- 다국어 번역 (특히 영어로 쓰는 한국·일본 엔지니어)

9.2 **목소리**는 인간이 지켜야 한다

- AI 생성 문장은 "무해하지만 무미건조"

- 블로그 독자는 **저자의 관점**을 사러 온다

- AI 결과물 그대로 게시는 **신뢰 파괴**

- "AI 초안 → 저자가 재작성"이 안정적

9.3 AGENTS.md / CLAUDE.md / GEMINI.md 문화

- 2024 이후 표준 파일

- AI 에이전트에게 코드베이스 맥락·규칙을 전달

- 사실상 "AI를 위한 기술 글쓰기"

9.4 프롬프트는 요구사항이다

- 좋은 프롬프트 = 잘 쓴 요구사항 명세

- 엔지니어링 글쓰기 훈련 = 프롬프트 실력 향상

- 애매한 요구를 쓰는 팀은 AI에게도 애매하게 지시 → 결과 나쁨

9.5 AI 검출과 학술 윤리

- 학회·컨퍼런스는 AI 보조 글쓰기 공시 의무

- 회사 블로그는 "편집 보조로 AI 사용" 공시 트렌드

10부. 글쓰기가 커리어에 미치는 기하급수 효과

10.1 내부 기하급수

- RFC 1개 → 팀원 10명이 읽음

- 좋은 RFC → 조직 전체 (100명)

- ADR 패턴 정착 → 모든 신규 엔지니어 영구 학습

10.2 외부 기하급수

- 블로그 1개 HN 1면 → 10만 읽음, 수백 채용 리드

- 컨퍼런스 톡 → 영상 YouTube 100만 뷰까지 가능

- 책 → 커리어를 바꾸는 사건 (Martin Kleppmann DDIA 사례)

10.3 개인 브랜드의 경제학

- 블로그 구독 1만 → 구직 역제안 월 수 건

- 기술 책 인세는 미미하지만 **signal**

- 스타트업 창업 시 초기 라운드에 결정적

10.4 반례 — "글만 쓰는 엔지니어"

- 코드 실제 출하 없이 글만 쓰면 **신뢰 누적 실패**

- 좋은 비율: **70% 빌드, 30% 쓰기**

11부. 글쓰기 훈련 — 매일 할 수 있는 것

11.1 매일 습관

- **아침 5분**: 오늘 할 일 3줄 공개 (Slack status)

- **끝에 5분**: 오늘 배운 것 1줄 (팀 채널)

- **주 1회**: 한 주 배운 것 요약 (개인 블로그 초안 후보)

11.2 월 1회

- 업무 중 발견한 트러블슈팅 1건 → **internal 블로그 포스트**

- 사외용으로 각색 가능한 것 → **공개 블로그**

11.3 분기 1회

- RFC 또는 Design Doc 1건 작성

- 발표·라이트닝 톡 1회

11.4 연 1~2회

- 외부 컨퍼런스 톡 제안

- 대형 기술 글 (5,000~10,000 단어)

12부. 글쓰기 도구 — 2025년의 필수

12.1 쓰기

- **Typora / iA Writer / Obsidian** — Markdown 중심

- **Notion / Bear / Craft** — 리치 노트

- **HackMD / Dillinger** — 온라인 Markdown

- **Cursor / VS Code** with AI assist

- **Vim/Neovim + plugins** (개인 취향)

12.2 교정

- **Grammarly** — 표준, AI 기능 확대

- **Vale** — OSS, 스타일 가이드 커스터마이즈

- **LanguageTool** — OSS, 다국어

- **Claude/Cursor** — 스타일 변환·단순화

12.3 발행

- **Mintlify** — 2024 SaaS docs 급성장 (OpenAI·Cursor 도입)

- **Docusaurus** (Meta) — 오픈소스 문서 표준

- **MkDocs Material** — Python 생태계

- **VitePress** — Vue/Vite 생태계

- **Astro + Starlight** — 2024 뜨는 조합

- **Next.js + Contentlayer** — 이 블로그가 쓰는 스택

12.4 SEO·측정

- Google Search Console

- Ahrefs / SEMrush / Plausible / Fathom

- Google Analytics 4 (복잡)

- **Twitter/X Analytics** — 기술 글 영향력의 1차 지표

13부. 실패 패턴 — 쓰는 사람이 망하는 10가지

1. Wall of text — 섹션 없는 2,000단어

2. 결론이 마지막에만 (BLUF 위반)

3. 전문가 독자 가정 — 모든 글이 "고수용"

4. 인용·레퍼런스 부재 — 출처 없음

5. AI 생성 그대로 게시

6. 악마의 옹호(devil's advocate) 섹션 없음

7. 시각 자료 부재

8. 3개월 방치된 Changelog

9. RFC/ADR을 회의 끝나고 쓰지 않음

10. "왜"를 빼고 "무엇"만 기록

14부. 체크리스트 12 · 안티패턴 10

✅ 체크리스트 12

1. 주요 결정에 **RFC/ADR**이 있는가?

2. 새 기능 시작 전에 **Design Doc**이 리뷰됐는가?

3. ADR이 **레포 안 `docs/adr/`**에 파일로 남아 있는가?

4. **Changelog**가 semantic-release 등으로 자동 생성되는가?

5. 엔지니어링 **블로그**가 월 2개 이상 게시되는가?

6. 모든 PR 제목이 **Conventional Commits** 규칙을 따르는가?

7. 사내 회의에 **Agenda 문서**가 붙는가?

8. 비동기 질문 시 **맥락 포함**이 습관인가?

9. 팀 **Style Guide**(Google/Microsoft 등 기반)가 있는가?

10. **AI 사용**이 편집 보조 수준에 머무르고 공시가 있는가?

11. 신규 엔지니어 온보딩이 **글 문서**로 완료되는가?

12. **AGENTS.md / CLAUDE.md**가 최신인가?

⚠️ 안티패턴 10

1. "쓰기보다 말하기가 빠르다"로 문서화 회피

2. 전원 동기 회의만 → 원격 팀 배제

3. Confluence·Notion·Google Docs 3개 중복

4. RFC를 형식만 맞추고 대안 분석 없음

5. AI 생성 블로그 그대로 게시해 신뢰 훼손

6. 팀 위키 검색 불가 → 존재해도 못 찾음

7. 엔지니어링 블로그 발행 멈춤 (6개월+)

8. Slack DM에만 결정 → 기록 휘발

9. 사외 블로그에 숫자·결과 과장

10. Deprecation을 공지 없이 단행

다음 글 예고 — "테스트의 현대: 단위·통합·E2E·Playwright·Property-based·Mutation·Fault Injection·AI 생성 테스트" — 품질의 마지막 보루가 바뀌고 있다

글쓰기 다음은 **테스트**다. 2020년대 중반 테스트 판이 크게 달라지고 있다.

- **Testing Pyramid**의 진화 — Trophy, Diamond

- **단위 테스트** — 진짜 필요한 것과 잉여

- **통합 테스트** — Testcontainers·Ephemeral Env

- **E2E 테스트** — Playwright의 독주, Cypress 쇠락

- **Property-based Testing** — Hypothesis, fast-check, proptest

- **Snapshot Testing**의 함정

- **Visual Regression** — Chromatic·Percy·Lost Pixel

- **Contract Testing** — Pact

- **Mutation Testing** — Stryker, PIT

- **Fault Injection / Chaos** — Gremlin, LitmusChaos

- **Fuzz Testing** — AFL++, libFuzzer, Jazzer

- **AI로 테스트 자동 생성** — Qodo, Diffblue Cover

- **플래키 테스트 대응** — 업계의 10년 숙제

테스트는 엔지니어링의 **운영 보험**이다. 다음 편에서 2025년의 보험 상품 전부를 본다.

현재 단락 (1/278)

한 엔지니어가 뛰어난 기술적 아이디어를 낸다. 팀에서 발표 못하고 문서도 없으면 그 아이디어는 **한 사람 머리에서 끝난다**. 같은 아이디어를 잘 정리된 RFC로 쓰면 **팀 전...

작성 글자: 0원문 글자: 9,006작성 단락: 0/278