Split View: 개발자 글쓰기 완전 가이드: Design Doc, RFC, Blog, 책, 컨퍼런스 발표까지 (2025)
개발자 글쓰기 완전 가이드: Design Doc, RFC, Blog, 책, 컨퍼런스 발표까지 (2025)
들어가며 — "코딩은 최고인데 왜 승진 안 됩니까?"
Senior Engineer 5년차:
"기술은 팀 최고예요. 코드 품질도 탑이에요. 근데 Staff 승진 패킷에서 매번 떨어져요."
답: Staff+ 레벨은 글로 평가된다. 당신이 쓴 Design Doc, Postmortem, RFC, 블로그, 메모가 당신의 영향력. 코드 1만 줄보다 잘 쓴 Design Doc 한 장이 승진에 유리하다.
구글의 유명한 내부 연구: Staff+ 레벨의 글쓰기 시간 비중은 30~50%. "개발자"라기보단 "기술 작가".
이 글은:
- Design Doc — 구조, 템플릿, 실패 사례
- RFC 프로세스 — Rust/Python/Node 비교
- 기술 블로그 — Julia Evans, Dan Luu, Stratechery 해부
- 기술서 — O'Reilly, Manning, 자가 출판
- 컨퍼런스 발표 — CFP부터 발표까지
- Staff+ 승진 패킷
- AI 시대 글쓰기 — Claude/Copilot 활용법
- 한글 vs 영어 — 한국 개발자 전략
을 다룬다. Season 3 Episode 7. 지난 편에서 OSS 메인테이너의 README를 이야기했는데, 그 위로 개발자의 모든 글을 포괄한다.
Chapter 1: Design Doc — 코드 쓰기 전 쓰는 글
1.1 Design Doc이란
Google이 1999년경부터 정착시킨 문화. 복잡도 있는 코드 쓰기 전 4~30페이지 문서 작성 + 리뷰.
목적:
- 생각을 명료화 (글로 못 쓰면 이해 못 한 것)
- 더 나은 리뷰어 의견 수집
- 조직 학습 (미래에 검색 가능)
- 신입 온보딩 교재
1.2 Google의 Design Doc 템플릿
1. Title
2. Author(s) + Date + Status
3. Summary (1 paragraph, 해결 문제 + 제안)
4. Background (용어, 현재 시스템, 문제)
5. Goals / Non-Goals
6. Design Overview (그림 + 주요 컴포넌트)
7. Detailed Design
- Data Model
- API
- 알고리즘
- 에러 처리
8. Considered Alternatives (대안 2-3개 + 비교 + 왜 선택 안 함)
9. Cross-cutting Concerns (보안, 프라이버시, 성능, 비용, 관측)
10. Rollout Plan (단계, 롤백, 마이그레이션)
11. Open Questions
12. Appendix (Raw data, 벤치마크)
1.3 좋은 Design Doc의 특징
- 문제부터 시작: 무엇이 왜 문제인가. "마이크로서비스를 도입하자"가 아니라 "배포 시간이 45분 → 사용자 불만"
- 측정 가능한 목표: "더 빠르게"가 아니라 "p99 < 200ms"
- 대안 비교 솔직: "우리 것만 좋아"가 아니라 "A는 빠르지만 비용 2배, B는 싸지만 복잡도 높음"
- 반대 의견 반영: FAQ 섹션에 "이렇게 생각하실 수 있는데..."
- 숫자로 근거: 벤치마크, 비용 추정, QPS 추정
1.4 나쁜 Design Doc의 흔한 실수
- "What"만 있고 "Why" 없음: 무엇을 할지만, 왜 하는지 빠짐
- 분량 너무 많음: 50페이지 → 아무도 안 읽음
- 분량 너무 적음: 1페이지 → 세부 사항 누락
- 용어 혼란: 같은 개념을 다른 이름으로
- 결론 없음: 논의만 하고 결정 없음
1.5 리뷰 받기
리뷰어 선택:
- 직접 영향 받는 팀의 Tech Lead
- Cross-functional (Security, SRE)
- Staff+ 엔지니어 (전체 방향 체크)
리뷰 기간: 1~4주. 짧으면 피드백 부족, 길면 타이밍 놓침.
피드백 처리:
- 모든 코멘트에 응답 (동의/부분 동의/반대)
- 주요 변경은 변경 로그에 기록
- 해결 안 되는 이슈는 Open Questions에
1.6 실제 사례 — Amazon의 Narrative
Amazon은 6-page narrative memo. 구조 덜 엄격하지만:
- 서술형 문장 (bullet 금지)
- 구체적 데이터
- 반대 의견 선제 대응 (FAQ)
- 고객 관점
Jeff Bezos의 평가 기준:
"A great memo reads like it was written by a good journalist covering a complex story."
Chapter 2: RFC — 커뮤니티 단위 결정
2.1 RFC가 필요한 순간
- 여러 팀/조직에 영향
- 파괴적 변경 가능성
- 장기 방향에 중요
- 외부 커뮤니티 합의 필요
Design Doc은 팀/조직 내부. RFC는 더 넓은 커뮤니티 + 공식 프로세스.
2.2 Rust의 RFC 프로세스
- Discussion: Rust Internals forum에서 아이디어 브레인스토밍
- PR 제출:
rust-lang/rfcs저장소에 Markdown PR - 커뮤니티 토론: 수 주~수 개월
- Final Comment Period (FCP): 10일간 최종 의견
- Merge or Postpone: Core team 합의
공개된 예시: async/await, GAT(Generic Associated Types), const generics.
2.3 Python의 PEP
- PEP 1: 프로세스 자체
- PEP 8: 스타일 가이드
- PEP 20: Zen of Python
- PEP 8016: Steering Council 모델
PEP은 Rust보다 더 공식적. 유명한 PEP:
- PEP 492 (async/await 추가)
- PEP 572 (Walrus operator :=)
- PEP 657 (Fine-grained error locations)
2.4 Node.js의 TSC
Node는 RFC 대신 TSC(Technical Steering Committee) 투표 + Collaborator 합의.
- 작은 변경: Collaborator PR
- 큰 변경: TSC 회의 + 투표
2.5 IETF RFC vs Project RFC
혼동 주의: IETF RFC (인터넷 표준, HTTP/TCP 등)와 프로젝트 RFC는 다름.
- IETF: 인터넷 표준 문서. 영구 번호. 예: RFC 9110 (HTTP/1.1)
- Project RFC: 개별 프로젝트 제안서.
2.6 RFC 쓸 때의 팁
- 원샷 완벽 지양: 초안 공개, 피드백 반영 여러 버전
- 동기 설명 충분: "왜 지금, 왜 이 방식"
- Alternative considered: 반드시
- Migration path: 파괴적 변경이면 마이그레이션 경로
- Backwards compatibility: 호환성 명시
Chapter 3: 기술 블로그 — 장기 자산
3.1 왜 블로그인가
Staff+ 엔지니어의 공통점: 블로그. 이유:
- 글쓰기 연습: 가장 저렴한 훈련
- 사고 정리: 쓰면서 이해 깊어짐
- 네트워크: 독자 → 동료 → 기회
- 검색 유인: Google 타고 기회 옴
- 승진 증거: 외부 영향력
3.2 블로그 유형
1) Deep-dive 타입: 한 주제에 1만 자. 예: Julia Evans의 "How does a database work?"
2) Notes 타입: 배운 것 빠르게 정리. 예: Simon Willison의 weblog.
3) Opinion 타입: 업계 분석. 예: Stratechery (Ben Thompson), Overreacted (Dan Abramov).
4) Tutorial 타입: Step-by-step. 예: Josh Comeau, Kent C. Dodds.
5) Newsletter 타입: 정기 큐레이션. 예: Pointer, TLDR.
3.3 Julia Evans 분석
- 2013년 블로그 시작
- 특징: 만화 같은 기술 설명 ("zines")
- 주제: Linux, Systems, Debugging
- 수입: Zines 판매 (40), Ruby Central 컨설팅
- 2022년 Stripe 퇴사 → 전업 작가
교훈: 전문 영역 + 독특한 스타일 = 팬덤.
3.4 Dan Luu 분석
- Stack/Hardware/Performance 전문
- 특징: 긴 글(1~3만 자), 논문 수준 리서치
- "Why are computers slow?" 등 deep research
- 연간 20개 글 남짓
- 수입: 주로 본업 (Microsoft → Twitter → 현재)
교훈: 희귀 주제 + 깊이 = 권위.
3.5 Stratechery (Ben Thompson)
- 테크 비즈니스 분석 blog + podcast
- $12/월 구독 모델로 독립
- 연 수백만 달러 추정
- "Aggregation Theory" 같은 프레임워크 제시
교훈: 뉴스를 쫓지 않고 분석 프레임워크를 만듦.
3.6 블로그 시작하기
플랫폼 선택:
- 자체 호스팅: Next.js + Vercel, Astro, Hugo (이 블로그처럼)
- Medium: 쉬움, 발견 쉬움, 하지만 통제 못 함
- Substack: 뉴스레터 + 블로그 결합
- dev.to: 개발자 커뮤니티
- Hashnode: 커스텀 도메인 무료
자체 호스팅 권장: 장기 자산은 본인 소유여야.
3.7 글감 찾기
- 본인이 최근 배운 것 (가장 좋음 — 설명하면 각인)
- 자주 받는 질문
- 잘못 알려진 것 바로잡기
- 업계 논쟁에 의견 보태기
- Deep-dive 한 주제 (다른 블로그/논문 10개 + 자기 경험)
3.8 발행 주기
- 주 1~2회: 너무 바쁨, 품질 저하
- 월 1~2회: 지속 가능, 품질 유지
- 분기 1개: 깊이 있는 long-form
일관성 > 양. 매주 허덕이기보다 월 1편 양질.
3.9 SEO와 배포
SEO:
- 제목에 키워드
- Description 메타
- H2/H3 구조
- 내부 링크 (관련 글)
- 이미지 alt
배포:
- Twitter/X
- Hacker News (적절한 시간대: 평일 미국 오전)
- Reddit (관련 서브)
- LinkedIn (업계 독자)
- 슬랙 커뮤니티
Chapter 4: 기술서 출간
4.1 출판사 선택
O'Reilly:
- 업계 최고 브랜드 ("동물 책")
- 선인세 30K
- 로열티 10~15%
- 편집 엄격, 브랜드 활용
- 출간까지 1~2년
Manning:
- 실용서 중심
- Early Access Program (MEAP): 미완성도 판매
- 독자 피드백 빠름
- O'Reilly보다 문턱 낮음
Pragmatic Bookshelf:
- 프로그래머 대상
- 기술적 깊이
- 저자 친화적 조건
Packt:
- 빠른 출간, 다작
- 품질 편차 큼
Self-publishing (Leanpub, Gumroad):
- 로열티 80~95%
- 완전 통제
- 마케팅도 본인 몫
4.2 책 쓰는 시간
현실: 평균 1000~1500시간. 18개월 기준으로 주 15시간 (평일 저녁 + 주말).
**20~$30. 본업보다 훨씬 적음.
왜 쓰는가?: 돈이 아니라 브랜드, 권위, 커리어. 책 저자 타이틀은 평생 갑.
4.3 성공 사례 — DDIA (Designing Data-Intensive Applications)
- Martin Kleppmann 저
- O'Reilly 2017년
- 20만 부+ 판매
- 실리콘밸리 면접 준비 필독서
- 저자는 케임브리지 리서처 + 여러 컨설팅
비결: 한 분야(분산 시스템)의 결정판.
4.4 성공 사례 — Rust 관련 책들
- The Rust Programming Language (무료 + 유료 출판)
- Rust for Rustaceans (Jon Gjengset)
- Programming Rust (O'Reilly)
- Zero to Production in Rust (Luca Palmieri, self-publish)
교훈: 공식 책 + 심화 + 응용의 조합.
4.5 글의 진화 경로
블로그 글 → 시리즈 → eBook → 종이책
↓
컨퍼런스 발표 → 강의 → 북
블로그가 반응 좋으면 확장. 빅뱅 출간보다 점진적 성장.
Chapter 5: 컨퍼런스 발표
5.1 왜 발표인가
- 블로그의 20배 임팩트 (집중된 청중)
- YouTube로 영구 자산
- 네트워크 폭발적 확장
- 승진 패킷의 큰 무기
5.2 CFP (Call for Proposal)
- 발표 제목 + 초록 제출
- 합격률 5~20% (유명 컨퍼런스)
- 초록의 질이 합격 좌우
좋은 초록:
- 구체적 제목 ("우리가 X를 Y로 전환하며 배운 것")
- 문제 + 해결 + 교훈
- 청중 Takeaway 명시
- 발표자 크레덴셜
5.3 한국의 주요 컨퍼런스
- FEConf: 프론트엔드
- JSConf Korea: JavaScript
- 파이콘 한국: Python
- SIF (Samsung Innovation Forum)
- NHN FORWARD
- NAVER DEVIEW
- Kakao if(kakao)
- 우아콘: 배민
- Toss PLANET
5.4 글로벌 컨퍼런스
- KubeCon (CNCF): K8s/cloud-native
- Strange Loop (2023 종료): deep CS
- QCon: 실무 중심
- RustConf, GopherCon, PyCon, RubyConf
- JSConf, React Summit, Next.js Conf
- Monktoberfest: 개발자 문화/커리어
5.5 발표 준비
8~12주 전:
- 초록 제출
- 초안 슬라이드
6주 전:
- 내부 리허설 (동료 2~3명)
- 데모 스크립트
2주 전:
- 외부 리허설 (유사 커뮤니티)
- 타임 체크
당일:
- 1시간 일찍 도착
- 장비 테스트
- 백업 노트북
5.6 슬라이드 디자인
- 1 아이디어 = 1 슬라이드
- 텍스트 최소 (발표자가 말하게)
- 폰트 28pt+
- 고해상도 스크린샷
- 복잡한 아키텍처는 여러 단계로 빌드업
5.7 Q&A 다루기
- 답 모르면 "좋은 질문인데 확실치 않다, 나중에 공유" OK
- 논쟁적 질문: 감정 배제
- 긴 질문: 요약 후 답변
5.8 성공 사례 — Bryan Cantrill (Oxide CTO)
- Sun Microsystems에서 DTrace 공동 개발
- 발표가 이야기 형식, 유머 강함
- "Scheduling Policy Hang" 류 기술 드라마
- YouTube 조회수 수십만+
교훈: 기술 + 스토리텔링.
Chapter 6: Staff+ 승진 패킷
6.1 Google Promo Packet
- 10~50페이지
- 매니저 + 본인이 공동 작성
- 4~7명 Peer review
- Calibration committee 심사
6.2 구성
- Summary: 한 줄 추천
- Impact: 6~12개월 동안의 주요 기여
- Complexity: 기술 난이도
- Scope: 팀 → 조직 → 회사 레벨
- Leadership: 멘토링, 인터뷰, 외부
- Feedback: Peer 코멘트
6.3 각 기여를 서술하는 포맷 (STAR)
Situation: 맥락 Task: 내 책임 Action: 내가 한 행동 Result: 측정 가능한 결과
예:
"[S] 결제 시스템 p99 800ms로 사용자 이탈률 12%. [T] Staff Eng로 성능 개선 오너십. [A] 분산 캐시 도입 + 쿼리 최적화 + async 처리. [R] p99 150ms, 이탈률 5% 감소, 매출 $2M 증가."
6.4 Scope의 중요성
- Senior: 팀 문제 해결
- Staff: 팀을 넘어 영향
- Senior Staff: 조직 전체
- Principal: 회사 전체
같은 프로젝트도 "혼자 만들었다" vs "5개 팀과 협업해 표준화" 설명 차이.
6.5 Peer Feedback 요청
- 다양한 시각 (상/하/동급)
- 구체적 사례 부탁
- 양보다 질
6.6 떨어진 후
- 매니저와 솔직한 대화
- Gap 파악 (Impact? Leadership? Writing?)
- 6개월 계획 수립
- 다음 사이클 재도전
Chapter 7: AI 시대의 글쓰기
7.1 AI로 하지 말 것
- 전체 글 생성: 금방 들키고, 개성 없음
- 대충 출력 복붙: 할루시네이션 위험
- 내 생각 없이 의존
7.2 AI로 하면 좋은 것
1) 아이디어 브레인스토밍:
"이 Design Doc 주제로 대안 3가지만 제안해줘. 장단점 포함."
2) 구조 피드백:
"이 블로그 초안의 논리 구조 약점을 지적해줘."
3) 문법/어색함 교정:
"이 문장을 자연스러운 영어로 다듬어줘. 원래 뜻 유지."
4) 예상 질문:
"이 RFC에 기술 리드가 할 수 있는 반론 5개."
5) 요약 작성:
"긴 포스트의 TL;DR 3줄."
7.3 AI를 쓸 때의 윤리
- 공개: "이 글 초안은 AI 도움 받았음" 선언
- 사실 검증: AI 출력은 반드시 확인
- 개성 유지: 본인 문체 우선
7.4 Copilot in Writing
- VS Code에서 Markdown도 자동완성
- 문장 완성, 불릿 생성
- 주의: 문장을 끝맺어 주되, 의미는 본인 결정
7.5 Claude/GPT 활용 워크플로우
- 나: 초안 쓰기
- AI: 구조 피드백
- 나: 수정
- AI: 문법/표현 다듬기
- 나: 최종 확인, 개성 복원
- AI: 제목 10개 제안 → 나: 1개 선택
Chapter 8: 한글 vs 영어
8.1 한글만 쓸 때
장점:
- 한국 독자 100% 소화
- 감정, 뉘앙스 자유
- 커뮤니티 더 가까움
단점:
- 글로벌 기회 제한
- 세계적 브랜드 어려움
8.2 영어만 쓸 때
장점:
- 글로벌 독자
- 해외 채용/컨설팅 유리
- 영어 실력 향상
단점:
- 한국 독자 감소
- 초기 어려움
8.3 한영 병행 전략
옵션 A: 영어 원본 → 한글 번역 요약 옵션 B: 한글 원본 → 영어 짧은 요약 옵션 C: 주제별 언어 구분 (로컬 이슈 한글, 글로벌 이슈 영어)
이 블로그처럼 완전 이중 언어도 가능하지만 품 많이 듦.
8.4 한국 개발자의 영어 글쓰기 팁
- 단문 중심: 복잡한 관계사절 회피
- 능동태: "We decided to..." > "It was decided that..."
- 명료함 > 화려함: 어려운 단어 ≠ 좋은 글
- 교정 도구: Grammarly, Claude, DeepL Write
8.5 한글 블로그 좋은 예
- 박재성 (자바지기)
- 김영한 (인프런 강의 + 블로그)
- 우아한형제들 기술 블로그
- 카카오 테크 블로그
- 토스 테크 블로그
- 당근 기술 블로그
8.6 영어 글 한국 개발자 좋은 예
- Dan Luu (영상 인터뷰, Twitter)
- Evan You (Vue 창시자, 중국계지만 글로벌)
- 김재진 / Jake Seo 등 해외 활동 한국 개발자 소수
한국 개발자 영어 블로그 활성화는 아직 여지 큼.
Chapter 9: 좋은 Documentation
9.1 Divio의 4가지 문서 유형
Divio Documentation System이 제안:
- Tutorials: 배우기 위해 (초심자 대상)
- How-to guides: 특정 작업 완수
- Reference: 정확한 기술 정보
- Explanation: 배경, 왜
4가지를 섞으면 혼란. 분리해서 작성.
9.2 좋은 README
- Hero: 뭐 하는 프로젝트인지 1줄
- Install: 3줄 이내 시작
- Quickstart: 코드 예시
- Badges: CI, 버전, 라이선스
- Table of Contents: 긴 경우
- Contributing, License, Acknowledgments
9.3 Changelog
- Keep a Changelog 스타일
- Added / Changed / Deprecated / Removed / Fixed / Security
- 사용자 중심 표현 ("Breaking: ..." 명시)
9.4 API 문서
- OpenAPI/Swagger 자동 생성
- 예시 요청/응답 필수
- 에러 코드 전체
- 레이트 리밋 명시
Chapter 10: 글쓰기 근력 키우기
10.1 매일 100단어
중요한 건 일관성. 매일 100단어 = 1년에 36,500단어 ≈ 블로그 30~40편.
10.2 읽기 = 쓰기
좋은 글 읽기. 분석하며 읽기. "이 문장을 왜 이렇게 썼을까" 생각하기.
추천 읽기:
- Paul Graham essays (간결함)
- Dan Luu (깊이)
- Julia Evans (명료함)
- Simon Willison (꾸준함)
10.3 피드백 받기
- 같은 글 쓰는 동료
- Discord/Slack 글쓰기 채널
- 가족/친구 (비전문가가 이해하는지)
10.4 퇴고의 기술
1차: 의미가 통하는가 2차: 구조가 명료한가 3차: 단어가 정확한가 4차: 리듬이 자연스러운가
최소 하루 묵힌 후 다시 읽기.
Chapter 11: 글쓰기 안티패턴 10가지
1) "왜"를 빼먹음
무엇을 할지만 적고, 왜 하는지 없음. "Why" 먼저, "What" 나중.
2) Jargon 남발
독자가 모르는 용어 설명 없이 사용. 첫 등장 때 설명.
3) 수동태 과다
"결정되었다"보다 "팀이 결정했다". 주체 명확.
4) Bullet 남용
모든 문장이 bullet. 서사 없음. 서술형 문단이 논리를 강제.
5) Hedge 말
"maybe", "perhaps", "might". 자신감 부족. 확실하면 단언.
6) 불필요한 서론
"이 글에서는 이러이러한 것들을 다룰 예정입니다"는 나쁜 서론. 바로 핵심.
7) 그림 없음
아키텍처 다이어그램, 시퀀스 다이어그램 없음. Excalidraw/Mermaid 활용.
8) 결론 없음
논의만 길게, "그래서 뭐?"가 없음. Call to action 또는 takeaways.
9) 교정 생략
오타, 문법 오류. 신뢰 깎임. 발행 전 2회 읽기.
10) Audience 혼선
초심자를 위한 글인지 전문가용인지 불명확. 첫 단락에 명시.
Chapter 12: 12항목 글쓰기 체크리스트
- 제목: 구체적, 검색 가능
- 첫 단락: 왜 읽어야 하는지 명확
- 목차: 긴 글이면 필수
- Why → What → How 순서
- 그림/다이어그램: 복잡한 개념마다
- 코드 예시: 실제로 돌아가는
- 대안 논의: 선택하지 않은 이유
- 숫자: 추측 대신 측정
- Takeaways: 독자가 뭘 얻었는가
- 참고 문헌: 원본 링크
- 교정: 맞춤법, 링크
- SEO 메타데이터: Description, OG image
마치며 — 글쓰기는 엔지니어링 스킬
원칙 1: 쓰는 것 = 생각하는 것
글로 못 쓰면 이해 못 한 것. Einstein: "If you can't explain it simply, you don't understand it well enough."
원칙 2: 자주 쓴다 > 잘 쓴다
완벽주의 버리기. 첫 100편은 어색해도 계속. 복리 효과.
원칙 3: 다양한 형식
Design Doc, RFC, Blog, Book, Talk — 형식별 근육. 한 가지만 잘하면 한계.
원칙 4: 피드백이 가장 빠른 성장
동료/독자 피드백 적극 요청. 부끄러움 이기기.
원칙 5: 진정성 > 유려함
가식 없는 경험담이 최고의 콘텐츠. 실패담 공유 망설이지 말기.
원칙 6: 원본을 읽어라
- On Writing Well - William Zinsser
- Designing Data-Intensive Applications - Martin Kleppmann
- Writing docs as a developer - Julia Evans zines
- Design Docs at Google - Malte Ubl
- Staff Engineer's Path - Tanya Reilly
- Storytelling with Data - Cole Knaflic
다음 글 예고 — "개발자 재정 완전 가이드: 연봉, 스톡옵션, RSU, 401k, 창업 자금까지"
Season 3 Ep 8은:
- 연봉 협상의 과학 (Levels.fyi, Blind 활용)
- RSU vs Stock Option: 행사 시점, 세금
- ESOP과 한국 세법
- 401k / IRA (미국), 퇴직연금 (한국)
- 스타트업 지분 — Vesting Cliff, Exit 시나리오
- 부동산 vs 주식 vs 회사 지분
- 미국 진출 시 세무 (H1B, L1 비자 이슈)
- FIRE (Financial Independence Retire Early)
- 창업 시 자금 흐름과 희석
- 40대 개발자의 재정 계획
다음 글에서.
The Complete Developer Writing Guide: Design Doc, RFC, Blog, Book, Conference Talk (2025)
Intro — "My coding is the best on the team. Why can''t I get promoted?"
A 5-year Senior Engineer:
"My technical skills are top on the team. My code quality is top. But every time, I get rejected for Staff promo."
The answer: Staff+ levels are evaluated by writing. The Design Docs, postmortems, RFCs, blog posts, and memos you''ve written — that''s your influence. A single well-written Design Doc helps more with promotion than 10,000 lines of code.
A well-known Google internal study: Staff+ engineers spend 30–50% of their time writing. They''re less "developers" and more "technical writers."
This post covers:
- Design Doc — structure, templates, failure modes
- RFC process — Rust/Python/Node compared
- Tech blogs — dissecting Julia Evans, Dan Luu, Stratechery
- Tech books — O'Reilly, Manning, self-publishing
- Conference talks — from CFP to the podium
- Staff+ promo packets
- Writing in the AI era — Claude/Copilot workflows
- Korean vs English — strategy for Korean developers
Season 3 Episode 7. The previous post covered OSS maintainer README files; this one zooms out to cover every form of developer writing.
Chapter 1: Design Doc — the writing that comes before the code
1.1 What is a Design Doc?
A Google-rooted culture since around 1999. Before writing non-trivial code, you write a 4–30 page document and get it reviewed.
Purpose:
- Clarify your thinking (if you can''t write it, you don''t understand it)
- Gather better reviewer feedback
- Organizational learning (searchable in the future)
- Onboarding material for new hires
1.2 Google''s Design Doc template
1. Title
2. Author(s) + Date + Status
3. Summary (1 paragraph: problem + proposal)
4. Background (terminology, current system, problem)
5. Goals / Non-Goals
6. Design Overview (diagram + main components)
7. Detailed Design
- Data Model
- API
- Algorithms
- Error handling
8. Considered Alternatives (2-3 alternatives + comparison + why not chosen)
9. Cross-cutting Concerns (security, privacy, performance, cost, observability)
10. Rollout Plan (stages, rollback, migration)
11. Open Questions
12. Appendix (raw data, benchmarks)
1.3 What a good Design Doc looks like
- Start from the problem: what is wrong and why. Not "let''s adopt microservices" but "deploy time is 45 min, users are complaining."
- Measurable goals: not "faster" but "p99 under 200ms."
- Honest alternative comparison: not "ours is the best" but "A is faster but costs 2x; B is cheaper but more complex."
- Address dissent: include a FAQ section that anticipates "you might be thinking..."
- Evidence via numbers: benchmarks, cost estimates, QPS estimates.
1.4 Common bad Design Doc mistakes
- "What" without "Why": only says what will be done, not why
- Too long: 50 pages, no one reads it
- Too short: 1 page, missing details
- Terminology drift: same concept named differently in different places
- No conclusion: lots of discussion, no decision
1.5 Getting it reviewed
Reviewer selection:
- Tech Lead of the directly impacted team
- Cross-functional (Security, SRE)
- Staff+ engineers (overall direction check)
Review period: 1–4 weeks. Too short, insufficient feedback; too long, you miss the window.
Handling feedback:
- Respond to every comment (agree / partially agree / disagree)
- Log major changes in a changelog
- Unresolved issues go into Open Questions
1.6 Case study — Amazon''s narrative memo
Amazon uses a 6-page narrative memo. Less structural, but:
- Prose sentences (no bullets)
- Concrete data
- Preempts dissent (FAQ)
- Customer perspective
Jeff Bezos''s bar:
"A great memo reads like it was written by a good journalist covering a complex story."
Chapter 2: RFC — community-wide decisions
2.1 When you need an RFC
- Impacts multiple teams / organizations
- Potentially breaking changes
- Critical to long-term direction
- Requires external community consensus
Design Docs stay within a team or org. RFCs target a broader community + a formal process.
2.2 Rust''s RFC process
- Discussion: brainstorm on Rust Internals forum
- Submit PR: Markdown PR to the
rust-lang/rfcsrepository - Community discussion: weeks to months
- Final Comment Period (FCP): 10-day final feedback window
- Merge or Postpone: core team consensus
Public examples: async/await, GAT (Generic Associated Types), const generics.
2.3 Python''s PEP
- PEP 1: the process itself
- PEP 8: style guide
- PEP 20: Zen of Python
- PEP 8016: Steering Council model
PEPs are more formal than Rust RFCs. Notable PEPs:
- PEP 492 (async/await)
- PEP 572 (walrus operator
:=) - PEP 657 (fine-grained error locations)
2.4 Node.js TSC
Node uses no formal RFC; instead it relies on the TSC (Technical Steering Committee) vote + Collaborator consensus.
- Small changes: Collaborator PR
- Large changes: TSC meeting + vote
2.5 IETF RFC vs Project RFC
Don''t confuse them: IETF RFCs (internet standards like HTTP/TCP) and project RFCs are different beasts.
- IETF: internet standard documents. Permanent numbers. Example: RFC 9110 (HTTP/1.1)
- Project RFC: individual project proposals.
2.6 Tips when writing an RFC
- Don''t aim for a perfect one-shot: publish a draft, iterate across versions
- Motivate fully: "why now, why this approach"
- Alternatives considered: mandatory
- Migration path: if it breaks things, show the migration
- Backwards compatibility: state it explicitly
Chapter 3: Tech blog — long-term asset
3.1 Why blog?
A common trait among Staff+ engineers: a blog. Because it gives you:
- Writing practice: the cheapest training
- Clarified thinking: writing deepens understanding
- Network: readers → colleagues → opportunities
- Search pull: opportunities find you through Google
- Promo evidence: external influence
3.2 Types of blogs
1) Deep-dive: 10,000+ words on one topic. Example: Julia Evans''s "How does a database work?"
2) Notes: quickly writing up what you learned. Example: Simon Willison''s weblog.
3) Opinion: industry analysis. Example: Stratechery (Ben Thompson), Overreacted (Dan Abramov).
4) Tutorial: step-by-step. Example: Josh Comeau, Kent C. Dodds.
5) Newsletter: regular curation. Example: Pointer, TLDR.
3.3 Julia Evans analysis
- Blogging since 2013
- Signature: comic-style technical explanations ("zines")
- Topics: Linux, systems, debugging
- Income: zine sales (40), Ruby Central consulting
- Left Stripe in 2022 → full-time writer
Lesson: niche expertise + distinctive style = fandom.
3.4 Dan Luu analysis
- Stack / hardware / performance specialist
- Signature: long posts (10k–30k words), paper-grade research
- "Why are computers slow?" and other deep research pieces
- About 20 posts per year
- Income: mostly from his day job (Microsoft → Twitter → current)
Lesson: rare topics + depth = authority.
3.5 Stratechery (Ben Thompson)
- Tech business analysis blog + podcast
- Independent via a $12/month subscription model
- Estimated several million in annual revenue
- Introduced frameworks like "Aggregation Theory"
Lesson: don''t chase the news cycle; build analytical frameworks.
3.6 Starting a blog
Platform options:
- Self-hosted: Next.js + Vercel, Astro, Hugo (like this blog)
- Medium: easy, discoverable, but you don''t control it
- Substack: newsletter + blog combined
- dev.to: developer community
- Hashnode: free custom domain
Recommend self-hosting: long-term assets should be yours.
3.7 Finding topics
- Something you learned recently (best — explaining locks it in)
- Questions you get asked often
- Correcting misunderstandings
- Adding your take to an industry debate
- A topic you deep-dove (10 other blogs/papers + your own experience)
3.8 Publishing cadence
- 1–2 per week: too much, quality drops
- 1–2 per month: sustainable, maintains quality
- 1 per quarter: deep long-form
Consistency beats volume. One monthly quality piece beats five rushed weekly posts.
3.9 SEO and distribution
SEO:
- Keywords in the title
- Meta description
- H2/H3 structure
- Internal links (related posts)
- Image alt text
Distribution:
- Twitter/X
- Hacker News (good times: weekday US morning)
- Reddit (relevant subs)
- LinkedIn (industry readers)
- Slack communities
Chapter 4: Publishing a tech book
4.1 Choosing a publisher
O'Reilly:
- Top industry brand ("the animal books")
- Advance: 30K
- Royalty: 10–15%
- Rigorous editing, strong brand leverage
- 1–2 years to publication
Manning:
- Practitioner-focused
- MEAP (Manning Early Access Program): sells unfinished drafts
- Fast reader feedback
- Lower bar than O'Reilly
Pragmatic Bookshelf:
- Developer audience
- Technical depth
- Author-friendly terms
Packt:
- Fast turnaround, high volume
- Variable quality
Self-publishing (Leanpub, Gumroad):
- 80–95% royalty
- Full control
- Marketing is on you
4.2 How long it takes
Reality: 1000–1500 hours on average. Over 18 months that''s 15 hours/week (weekday evenings + weekends).
A **20–$30/hour. Far less than your day job.
So why write one?: not the money — brand, authority, career. "Published author" is a lifetime asset.
4.3 Success story — DDIA (Designing Data-Intensive Applications)
- Author: Martin Kleppmann
- O'Reilly, 2017
- 200,000+ copies sold
- Required reading for Silicon Valley interviews
- Author is a Cambridge researcher + various consulting gigs
Secret: the definitive book for one field (distributed systems).
4.4 Success story — Rust books
- The Rust Programming Language (free + paid publisher edition)
- Rust for Rustaceans (Jon Gjengset)
- Programming Rust (O'Reilly)
- Zero to Production in Rust (Luca Palmieri, self-published)
Lesson: official book + deep-dive + applied — the full combo.
4.5 The evolution path of writing
Blog post → Series → eBook → Print book
↓
Conference talk → Course → Book
If a blog post resonates, expand it. Gradual growth beats a big-bang launch.
Chapter 5: Conference talks
5.1 Why speak?
- 20x the impact of a blog post (focused audience)
- YouTube turns it into a permanent asset
- Explosive network expansion
- A major weapon for a promo packet
5.2 CFP (Call for Proposal)
- Submit talk title + abstract
- Acceptance rate: 5–20% at major conferences
- The abstract quality decides your fate
A good abstract:
- Specific title ("What we learned migrating X to Y")
- Problem + solution + lessons
- Explicit audience takeaways
- Speaker credentials
5.3 Major Korean conferences
- FEConf: frontend
- JSConf Korea: JavaScript
- PyCon Korea: Python
- SIF (Samsung Innovation Forum)
- NHN FORWARD
- NAVER DEVIEW
- Kakao if(kakao)
- Woowacon: Baemin
- Toss PLANET
5.4 Global conferences
- KubeCon (CNCF): K8s/cloud-native
- Strange Loop (ended 2023): deep CS
- QCon: practitioner-focused
- RustConf, GopherCon, PyCon, RubyConf
- JSConf, React Summit, Next.js Conf
- Monktoberfest: developer culture/career
5.5 Preparing the talk
8–12 weeks out:
- Submit abstract
- Draft slides
6 weeks out:
- Internal rehearsal (2–3 colleagues)
- Demo scripts
2 weeks out:
- External rehearsal (similar community)
- Time check
Day of:
- Arrive 1 hour early
- Test equipment
- Bring a backup laptop
5.6 Slide design
- 1 idea = 1 slide
- Minimal text (let the speaker talk)
- 28pt+ font
- High-resolution screenshots
- Build up complex architecture diagrams in stages
5.7 Handling Q&A
- "Good question, I''m not sure — I''ll follow up" is fine if you don''t know
- Contentious questions: leave emotion out
- Long questions: summarize, then answer
5.8 Success story — Bryan Cantrill (Oxide CTO)
- Co-created DTrace at Sun Microsystems
- Talks are story-driven, heavy on humor
- Technical drama like "Scheduling Policy Hang"
- Hundreds of thousands of YouTube views
Lesson: technical depth + storytelling.
Chapter 6: Staff+ promotion packet
6.1 Google''s promo packet
- 10–50 pages
- Written jointly by manager + self
- 4–7 peer reviews
- Reviewed by a calibration committee
6.2 Structure
- Summary: one-line recommendation
- Impact: major contributions over 6–12 months
- Complexity: technical difficulty
- Scope: team → org → company level
- Leadership: mentoring, interviewing, external work
- Feedback: peer comments
6.3 The STAR format for each contribution
Situation: context Task: your responsibility Action: what you did Result: measurable outcome
Example:
"[S] Payment system p99 was 800ms, user drop-off was 12%. [T] As Staff Eng, I owned the performance effort. [A] Added distributed caching, optimized queries, moved to async processing. [R] p99 dropped to 150ms, drop-off fell 5%, revenue up $2M."
6.4 Scope matters
- Senior: solves team problems
- Staff: impacts beyond the team
- Senior Staff: entire org
- Principal: entire company
Same project, different framing: "I built it alone" vs "I standardized it across 5 teams."
6.5 Requesting peer feedback
- Diverse perspectives (up / down / lateral)
- Ask for specific examples
- Quality over quantity
6.6 If you didn''t make it
- Honest conversation with your manager
- Identify the gap (Impact? Leadership? Writing?)
- Draft a 6-month plan
- Go for the next cycle
Chapter 7: Writing in the AI era
7.1 What not to do with AI
- Generate entire posts: easy to spot, no personality
- Copy-paste rough output: hallucination risk
- Lean on it without your own thinking
7.2 What AI is great for
1) Idea brainstorming:
"Suggest 3 alternatives for this Design Doc topic, with pros and cons."
2) Structural feedback:
"Point out the logical weaknesses in this blog draft."
3) Grammar / awkward phrasing:
"Polish this sentence into natural English, keeping the meaning."
4) Anticipating questions:
"List 5 pushbacks a tech lead might have on this RFC."
5) Summary drafting:
"Write a 3-line TL;DR of this long post."
7.3 AI ethics
- Disclose: say "the draft was AI-assisted"
- Fact-check: always verify AI output
- Preserve voice: your style comes first
7.4 Copilot in writing
- Autocomplete for Markdown in VS Code
- Sentence completion, bullet generation
- Caution: let it finish sentences, but decide the meaning yourself
7.5 Claude/GPT workflow
- You: write a draft
- AI: structural feedback
- You: revise
- AI: grammar/phrasing polish
- You: final check, restore your voice
- AI: suggest 10 titles → you: pick one
Chapter 8: Korean vs English
8.1 Writing only in Korean
Pros:
- 100% reach for Korean readers
- Emotional nuance flows naturally
- Tighter community connection
Cons:
- Limits global opportunities
- Hard to build a global brand
8.2 Writing only in English
Pros:
- Global readership
- Leverage for overseas hiring / consulting
- English skills improve
Cons:
- Fewer Korean readers
- Painful early on
8.3 Bilingual strategies
Option A: English original → Korean summary translation Option B: Korean original → short English summary Option C: Split by topic language (local issues in Korean, global issues in English)
A fully bilingual site like this blog is possible but expensive.
8.4 English writing tips for Korean developers
- Short sentences: avoid deeply nested relative clauses
- Active voice: "We decided to..." beats "It was decided that..."
- Clarity over flourish: hard words do not equal good writing
- Editing tools: Grammarly, Claude, DeepL Write
8.5 Good Korean-language blogs
- Park Jae-sung (Javajigi)
- Kim Young-han (Inflearn lectures + blog)
- Woowahan Brothers tech blog
- Kakao Tech blog
- Toss Tech blog
- Daangn Tech blog
8.6 Korean developers writing in English
- Dan Luu (video interviews, Twitter)
- Evan You (Vue creator — Chinese, but globally active)
- A few Korean developers active abroad (Jaejin Kim, Jake Seo, etc.)
English blogging by Korean developers is still wide open.
Chapter 9: Good documentation
9.1 Divio''s 4 documentation types
Divio Documentation System proposes:
- Tutorials: learning-oriented (for beginners)
- How-to guides: complete a specific task
- Reference: precise technical information
- Explanation: background and why
Mixing the four causes confusion. Write them separately.
9.2 A good README
- Hero: what the project is, in one line
- Install: start in under 3 lines
- Quickstart: code example
- Badges: CI, version, license
- Table of contents: for longer READMEs
- Contributing, License, Acknowledgments
9.3 Changelog
- Keep a Changelog style
- Added / Changed / Deprecated / Removed / Fixed / Security
- User-centric wording (call out "Breaking:" explicitly)
9.4 API docs
- OpenAPI/Swagger auto-generation
- Request/response examples are mandatory
- All error codes
- Rate limits spelled out
Chapter 10: Building writing muscle
10.1 100 words a day
Consistency is the point. 100 words per day = 36,500 per year ≈ 30–40 blog posts.
10.2 Reading = writing
Read good writing. Read analytically. Ask "why did they write this sentence this way?"
Recommended reading:
- Paul Graham essays (conciseness)
- Dan Luu (depth)
- Julia Evans (clarity)
- Simon Willison (consistency)
10.3 Getting feedback
- Peers who also write
- Writing channels on Discord/Slack
- Family/friends (does a non-expert understand?)
10.4 The art of revision
Pass 1: does the meaning land? Pass 2: is the structure clear? Pass 3: are the words precise? Pass 4: does it flow?
Let it sit for at least a day before rereading.
Chapter 11: 10 writing antipatterns
1) Missing the "Why"
Only the "what," no "why." Why first, what second.
2) Jargon overload
Using terms the reader doesn''t know without definitions. Define on first use.
3) Passive-voice abuse
"It was decided" versus "The team decided." Make the actor clear.
4) Bullet overuse
Every sentence is a bullet. No narrative. Prose paragraphs force logical flow.
5) Hedging language
"maybe," "perhaps," "might." Lack of confidence. Assert when you''re sure.
6) Unnecessary preamble
"In this post I will cover the following topics..." is a weak intro. Go straight to the point.
7) No diagrams
Missing architecture or sequence diagrams. Use Excalidraw/Mermaid.
8) No conclusion
Long discussion with no "so what?" Add a call to action or takeaways.
9) Skipping proofreading
Typos and grammar errors erode trust. Read through twice before publishing.
10) Audience confusion
Unclear whether it''s for beginners or experts. State the audience in the first paragraph.
Chapter 12: The 12-item writing checklist
- Title: specific, searchable
- First paragraph: clear on why to read
- TOC: required for long posts
- Why → What → How order
- Diagrams: for every complex concept
- Code samples: they actually run
- Alternatives discussed: why you didn''t pick them
- Numbers: measurement, not guessing
- Takeaways: what the reader gained
- References: link the originals
- Proofreading: spelling, links
- SEO metadata: description, OG image
Closing — writing is an engineering skill
Principle 1: writing is thinking
If you can''t write it, you don''t understand it. Einstein: "If you can''t explain it simply, you don''t understand it well enough."
Principle 2: writing often beats writing well
Drop the perfectionism. The first 100 posts will be awkward — keep going. Compounding wins.
Principle 3: multiple formats
Design Doc, RFC, blog, book, talk — each is a different muscle. Mastering only one caps you.
Principle 4: feedback is the fastest path to growth
Ask peers and readers. Swallow the embarrassment.
Principle 5: authenticity over polish
Unvarnished experience is the best content. Don''t be shy about failure stories.
Principle 6: read the originals
- On Writing Well — William Zinsser
- Designing Data-Intensive Applications — Martin Kleppmann
- Writing docs as a developer — Julia Evans zines
- Design Docs at Google — Malte Ubl
- Staff Engineer''s Path — Tanya Reilly
- Storytelling with Data — Cole Knaflic
Next post — "The complete developer finance guide: salary, stock options, RSU, 401k, startup funding"
Season 3 Ep 8 will cover:
- The science of salary negotiation (using Levels.fyi, Blind)
- RSU vs stock options: exercise timing, taxes
- ESOP and Korean tax law
- 401k / IRA (US), retirement pensions (Korea)
- Startup equity — vesting cliffs, exit scenarios
- Real estate vs stocks vs company equity
- US relocation taxes (H1B, L1 visa issues)
- FIRE (Financial Independence, Retire Early)
- Cash flow and dilution when founding a company
- Financial planning for developers in their 40s
See you in the next post.