| name | write-career |
| description | 경력기술서(5페이지+) 작성이 필요할 때 |
경력기술서 작성
작성 원칙 및 STAR+I 가이드:
/writing-guide참조 Professional Summary 명세:docs/career/PROFESSIONAL_SUMMARY_SPEC.md참조
기술 상세 상한선 규칙
원칙: 모든 것을 쓰지 않는다. 면접에서 말할 여지를 남긴다.
| 항목 | 상한선 | 근거 |
|---|---|---|
| Troubleshooting | 최대 1개 이슈만 상세 | 나머지는 면접에서 |
| 코드 스니펫 | 핵심 설계 판단이 드러나는 1곳만 | 코드는 보조 수단 |
| Architecture Diagram | 대표 프로젝트 2~3개만 허용 | 복잡도 제한 |
| 기술 스택 상세 | 버전 제외, 역할만 | Spring Boot 3.2.1 ❌ → Spring Boot ✅ |
프로젝트 구성 전략 (Tier 1/Tier 2)
Tier 1: 서사형 프로젝트 (3개, 각 1-2페이지)
면접에서 가장 많이 물어볼 대표 프로젝트
- STAR+I 상세 (모든 항목 포함)
- 아키텍처 다이어그램
- 트러블슈팅 상세 (시도-실패-성공)
- 기술 의사결정(WHY) 포함
- Lesson Learned 포함
Tier 2: 요약형 프로젝트 (2-3개, 각 5-10줄)
임팩트는 있으나 깊이 설명할 필요 없는 프로젝트
- 한 줄 요약 + 핵심 성과 2-3개
- 기술 스택만 나열
- WHY 제외 (면접 질문 시 대답)
선정 기준
| Tier 1 조건 | Tier 2 조건 |
|---|---|
| 비즈니스 임팩트 명확 | 기술적 깊이는 있으나 임팩트 약함 |
| 기술 의사결정 복잡 | 단순 구현 위주 |
| 면접 확장 설명 가능 | 추가 질문 가능성 낮음 |
| 조직/팀에 영향 | 개인 업무 효율화 |
Professional Summary 작성
경력기술서 상단의 Professional Summary 작성 시:
[문제] → [해결 방법] → [정량 성과] 패턴 적용
❌ "ChatOps 구축으로 운영 반복 업무 40% → 0% 완전 자동화"
✅ "운영팀 인터뷰로 발굴한 컨텍스트 스위칭 병목 → Slack ChatOps 구축으로 반복 업무 40% → 0% 자동화"
상세 작성 가이드는 /writing-guide 섹션 11 또는 PROFESSIONAL_SUMMARY_SPEC.md 참조
경력기술서 vs 이력서
| 구분 | 경력기술서 (이 스킬) | 이력서 |
|---|---|---|
| 분량 | 5페이지 이상 | 2-3페이지 |
| 목적 | 상세 역량 검증 | 빠른 스크리닝 |
| 내용 | STAR+I 상세 + 기술적 깊이 | 핵심 성과 요약 |
| 스킬 | /write-career |
/create-resume-document |
경력기술서 특화 섹션
경력기술서는 이력서와 달리 기술적 깊이를 보여주는 섹션이 포함됩니다.
1. 아키텍처 다이어그램
Architecture
┌─────────────────────────────────────────────────────────┐ │ Data Sources │ ├─────────────┬─────────────┬─────────────┬──────────────┤ │ TikTok │ Ensemble │ EchoTik │ Web Scraper │ │ API │ API │ API │ (Selenium) │ └──────┬──────┴──────┬──────┴──────┬──────┴───────┬──────┘ └─────────────┴─────────────┴──────────────┘ │ ▼ ┌───────────────────────┐ │ Collector Service │ │ (Spring Batch) │ └───────────┬───────────┘ │ ┌──────────────────┼──────────────────┐ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ MySQL │───▶│Elasticsearch│ │ Redis │ │ (Master) │ │ (Search) │ │ (Lock) │ └─────────────┘ └─────────────┘ └─────────────┘
2. 데이터 플로우
Data Flow
수집 (Collection) Schedule Trigger → Lock Acquire → API Request → Response Parse
정제 (Processing) Validation → Deduplication → Normalization → Image Download
적재 (Storage) MySQL Insert → ES Index Sync → S3 Upload (Images)
서빙 (Serving) Search Request → ES Query → Result Format → Response
3. 트러블슈팅 상세 ⭐
시니어 수준에서 가장 중요한 섹션입니다.
Troubleshooting
문제: 200만 건 검색 시 10초 이상 타임아웃
발견:
- 마케팅팀 피드백: "필터 적용하면 로딩이 안 끝나요"
- Slow Query Log:
WHERE followers > 10000 AND country = 'US' AND ...12초분석:
- EXPLAIN 결과: type=ALL (Full Table Scan)
- 복합 인덱스 추가 시도 → 4초로 개선되었으나 부족
- 원인: 동적 필터 조합이 100가지 이상 → 인덱스 효율 저하
시도한 방법들:
- [실패] Covering Index → 5초로 개선되었으나 여전히 느림
- [실패] Query Caching → 조건 조합이 많아 Hit율 5% 미만
- [성공] Elasticsearch 도입 → 역색인 기반 1초 이내 달성
최종 해결:
- Elasticsearch 클러스터 구성 (3 nodes)
- 실시간 동기화 파이프라인 구축 (MySQL → ES)
- 검색 API 전환 및 Fallback 로직 구현
검증:
- Load Test: 1000 TPS에서 p99 < 200ms
- 모니터링: 2주간 안정성 확인
Lesson Learned (필수):
- "초기 설계 시 검색 확장성 고려 부족 → 이후 프로젝트에서 데이터 규모 예측 기반 설계"
Lesson Learned 작성 규칙
필수: 실패를 통해 얻은 인사이트 1줄 이상
| 좋은 예 | 나쁜 예 |
|---|---|
| "모니터링 없이 배포 → APM 필수 적용 원칙 수립" | "다음엔 잘 하겠다" |
| "초기 설계 시 확장성 고려 부족 → Scale-out 전제 설계" | "ES가 빠르다" |
| "장애 발생 후 Fallback 미비 인지 → Circuit Breaker 패턴 도입" | "테스트를 더 해야 한다" |
4. 기술 구현 상세 (코드 스니펫)
필수: 코드가 해결한 핵심 문제를 "의도 주석"으로 포함
코드 스니펫 규칙
| 항목 | 규칙 |
|---|---|
| 개수 | 프로젝트당 최대 1개 |
| 길이 | 10줄 이내 |
| 필수 포함 | 의도 주석 (이 코드가 해결한 문제) |
| 금지 | import문, getter/setter, 단순 CRUD |
예시 (의도 주석 포함)
### Implementation Details
**Redis Distributed Lock**:
```java
// 문제: 멀티 인스턴스 환경에서 동일 인플루언서 중복 수집
// 해결: TTL 기반 분산락으로 데드락 방지 + 멱등성 확보
String lockKey = "collector:" + platform + ":" + targetId;
long ttl = 60_000L; // 평균 작업시간 25초의 2.5배
RLock lock = redisson.getLock(lockKey);
boolean acquired = lock.tryLock(0, ttl, TimeUnit.MILLISECONDS);
설계 근거:
- Lock 단위: 인플루언서 ID → 최대 병렬성 확보
- TTL 60초: 작업 실패 시 자동 해제로 데드락 방지
- 재시도 없음: 다음 배치에서 처리 (멱등성)
---
### 5. Challenges & Solutions 테이블
```markdown
### Challenges & Solutions
| Challenge | Solution |
|-----------|----------|
| API Rate Limit | Token Bucket + Exponential Backoff |
| 멀티 인스턴스 중복 | Redis Distributed Lock |
| 이미지 CDN 만료 | S3 직접 업로드 |
| ES 동기화 지연 | Near Real-time Sync (< 1분) |
실행 단계
Step 1: 프로젝트 선별
/writing-guide섹션 5. 파레토 원칙 참조
현재 프로젝트 목록 → 상위 20% (5-6개) 선별
Step 2: STAR+I 작성
/writing-guide섹션 3. STAR+I 각 섹션별 가이드 참조
각 프로젝트마다:
- 한 줄 요약 (비즈니스 임팩트)
- Situation (조직 손실 명확히)
- Task (AS-IS → TO-BE)
- Action (기술 선택 근거 필수)
- Result (Before/After 테이블)
- Impact (조직 레벨 효과)
Step 3: 기술적 깊이 추가
핵심 프로젝트 2-3개에 대해:
- 아키텍처 다이어그램
- 트러블슈팅 상세 (시도-실패-성공)
- Challenges & Solutions 테이블
Step 4: 검증
프로젝트마다 자문:
"이게 없었다면 조직이 잃는 것은?"
→ 한 줄로 정리 못하면 제거 대상
Step 5: 동기화
/update-resume
체크리스트
기본 품질 (필수)
/writing-guide섹션 10. 작성 체크리스트 참조
- 프로젝트 5-6개 선별 완료
- 각 프로젝트 STAR+I 작성 완료
- Before/After 테이블 성과 포함
- 시니어 톤 사용
기술적 깊이 (경력기술서 특화)
- 핵심 프로젝트 아키텍처 다이어그램 포함
- 트러블슈팅 상세 (시도-실패-성공) 포함
- Challenges & Solutions 테이블 포함
- 코드 스니펫 + 설계 근거 포함
데이터 정합성 (SSOT)
상세 가이드:
/writing-guide섹션 18 참조
모든 수치와 성과는 my_career_data.md를 원본으로 사용
임의 변경/추정 금지, 변경 시 /update-resume 실행 필수
관련 스킬
/writing-guide: STAR+I 작성 원칙, 시니어 톤, 파레토 기준, SSOT, 업데이트 원칙/create-resume-document: 이력서 작성 (2-3페이지, 세트 생성)/write-portfolio: 포트폴리오 작성 (10-15페이지, 기술 백서)/svg-diagram: SVG 아키텍처 다이어그램 (Before/After)/mermaid-diagram: Mermaid 다이어그램 (플로우, 시퀀스, ER)/export: PDF/PPT 내보내기
문서 세트 구조
이력서/경력기술서/포트폴리오는 동일한 원본 데이터(SSOT)를 기반으로 작성
| 문서 | 분량 | 목적 | 대상 |
|---|---|---|---|
| 이력서 | 2-3페이지 | 빠른 스크리닝 | 인사/채용담당 |
| 경력기술서 | 5페이지+ | 상세 역량 검증 | 실무 면접관 |
| 포트폴리오 | 10-15페이지 | 기술 의사결정/리더십 | Tech Lead/CTO |
중복 방지 원칙
| 항목 | 이력서 | 경력기술서 | 포트폴리오 |
|---|---|---|---|
| 프로젝트 성과 | 1줄 요약 | STAR+I 상세 | Decision Log |
| 기술 선택 이유 | 제외 | 1-2줄 언급 | Why/Why NOT 상세 |
| 아키텍처 | 제외 | 다이어그램 포함 | Before/After 비교 |
| 실패 경험 | 제외 | Lesson Learned | Failure & Revisit |