Paul Jialiang Wu agentic-portfolio English 中文 Español 日本語✉️ 무료 리스트
← 포트폴리오로 돌아가기

AI-네이티브 시리즈 · 07

인터뷰 공부 그만하고 — 컴파일하라

1분 요약 — 무엇을 남기는가

직무 기술서는 소스 코드다. 파싱하고, 근거를 확인하고, 실제로 만든 것과 링크시켜라 — 그러면 링커 에러가 준비 계획을 대신 써준다. 인터뷰를 컴파일하는 방법을, 항목 하나하나 짚어본다.

직무 기술서는 소스 코드다. 파싱하고, 근거를 확인하고, 실제로 만든 것과 링크시켜라 — 그러면 링커 에러가 준비 계획을 대신 써준다. ~8분.

The pipeline: job post → compile into a grounded graph → link against your repos → gap report: undefined symbol langgraph → build it in half a day
전체 방법론을 하나의 루프로 요약하면: 파싱 → 근거 확인 → 링크 → 에러가 계획을 쓰게 한다. (애니메이션이니 잠시 기다려보라.)

최초의 이력서는 검증되지 않은 주장들이 쌓인, 그러나 제법 아름다운 무더기였다

1482년, 서른 살의 한 구직자가 밀라노 공작에게 편지를 썼다. 현존하는 가장 오래된 이력서로 알려진 이 편지는 열 개의 번호가 붙은 주장으로 이루어져 있었다: I can dry up the water of the moats. I can build unbreakable bridges. I can make cannon. (번역: 나는 호(濠)의 물을 말릴 수 있다. 부서지지 않는 다리를 지을 수 있다. 대포를 만들 수 있다.) 회화는 열 번째 항목이었다 — 오늘날 그를 오히려 더 유명하게 만든 바로 그 분야인데도 말이다.

이 편지를 쓸 당시 Leonardo da Vinci가 실제로 말린 호(濠)의 수: 거의 0에 가깝다. 역사상 최초의 이력서는 이미 이력서 특유의 습성을 그대로 드러내고 있었다 — 증거 없이 역량을 부풀려 내세우는 일 말이다. 결국 그의 이름을 만든 것은 그 편지가 아니었다. 그것은 그의 노트였다 — 그림, 측정치, 실험으로 채워진 7천 페이지. 편지는 주장했고, 노트는 증명했다.

Leonardo's 1482 letter (claims, stamped CLAIMED) versus his notebooks (receipts, stamped OBSERVED)
1482년: 편지는 이렇게 말한다. "나는 해자의 물을 말릴 수 있다." 우리가 그를 믿게 된 건 노트 때문이다 — 5세기가 지난 지금도.

그로부터 544년이 지난 지금도 인터뷰 준비는 여전히 편지 쓰기다. 프레임워크 문서를 벼락치기하고, 용어집을 암기하고, 자기 자신에 대한 형용사를 리허설한다. 나는 2026년 버전으로 업데이트된 노트 방식을 제안하고 싶다 — 그 시작은 채용 공고 자체를 직접 실행해보는.

멘탈 모델: 채용 공고는 소스 코드다

여기 전체 방법론을 소개한다, 열두 살짜리도 이해할 만큼 단순하게:

채용 공고는 레시피다. 요리책을 통째로 외우지 말고 — 레시피를 읽고, 냉장고를 확인하고, 부족한 것만 사러 가라.

같은 방법론에 엔지니어링 모자를 씌워 다시 쓰면 이렇게 된다. 이것이 내가 실제로 쓰는 버전이다 (이 페이지 맨 위의 애니메이션이 바로 그것이다):

네 개의 동사. 마법은 이 모든 것이 실행 가능하다는 점이다 — 이건 안전모 쓴 은유가 아니다. 이제 실제로 작업한 결과를 보여줄 차례다.

항목별로: 주방이 실제 기계장치로 매핑된다

실행 가능한 코드로 매핑할 수 없는 멘탈 모델은 장식일 뿐이다. 그래서 여기 항목별 매핑을 준비했다 — 모든 행은 오늘 당장 클론해서 돌려볼 수 있는 오픈소스 파이프라인으로 구현되어 있다:

Term-by-term mapping: read the recipe → deterministic parse; check ingredients are real → retrieval grounding with provenance URLs; check the pantry → link against public repos; write the shopping list → gap report and SMART artifact
왼쪽 칸은 열두 살짜리를 위한 것, 오른쪽 칸은 코드 리뷰를 위한 것이다. 같은 아이디어를 군더더기 없이 그대로 옮겼을 뿐이다.

"레시피를 읽는다" = 결정론적 파싱. 컴파일러는 채용 공고를 엄선된 역량 분류체계에 대조해 점수를 매긴다 — 에이전트형 시스템 설계modern AI stack, 여기에 명명된 도구 라이브러리까지 더한다. 매칭은 단어 경계 단위로 일어나서 "rust"가 "trust" 안에서 잘못 걸리는 일은 없다. 결정론적이고 오프라인으로 돌아간다 — 같은 JD를 넣으면 같은 프로필이 나올 뿐, LLM의 기분 따위는 끼어들 틈이 없다.

"재료가 진짜인지 확인하기" = 검색 기반 그라운딩(retrieval grounding). 추출된 각 개념은 공개 출처를 근거로 그라운딩된다 — 정의와 관계는 Wikipedia와 Wikidata, 스킬은 ESCO(EU의 오픈 스킬 택소노미)를 기준으로 삼는다. 결과로 만들어진 지식 그래프의 모든 노드는 실제 정의와 출처 URL을 갖도록 계약상 강제된다: http(s) 출처가 없으면 완전한 노드도 없다. 검색으로 해당 용어를 해소할 수 없다면, 그 노드는 출처 표시 없이 부실한 채로 플래그만 달아 출시된다 — 절대 조작하지 않는다. 노드를 출처까지 추적할 수 없는 지식 그래프는 그저 그럴듯해 보이는 가짜 이미지에 불과하다.

"팬트리 확인하기" = 증빙 자료와의 링킹. 이제 요구되는 각 역량을, 라이브러리를 참조해 심볼을 해소하는 링커처럼, 자신이 공개한 작업물과 대조해 해소한다. 평가 하니스? precision@k로 검색 성능을 채점하고 이를 CI 게이트로 걸어놓은 레포로 해소된다. 가드레일? 승인 체크리스트를 갖춘 보안 프레임워크로 해소된다. 도구 통합? MCP 서버들이 늘어선 서가로 해소된다. 각 해소 결과는 클릭 가능한 증빙 자료이지, 형용사가 아니다.

"쇼핑 리스트 작성하기" = 갭 리포트(gap report). 해소되지 않고 남은 것, 그것이 바로 — 정확하고 증명 가능하게 — 준비해야 할 대상이다. 커리큘럼이 아니다. 쇼핑 리스트다.

세 개의 망원경: 30일, 30년, 300년

"날카롭다"는 것은, 준비 시간을 걸기 전에 세 가지 줌 레벨에서 그 주장을 검증해본다는 뜻이다. 그래서 나는 이 방법론에 세 개의 망원경을 겨눠봤다 — 지금 뜨거운가, 살아남았는가, 오래된 법칙인가?

Three panels: last 30 days (280% posting growth, 34.3% name LangChain, 57.3% agents in production), last 30 years (work samples beat credentials, ATS parsers, knowledge graphs), last 300 years (the guild masterpiece vs the résumé)
최신 신호, 생존 신호, 문명적 신호 — 셋 모두 같은 방향을 가리킨다.

30일 망원경 (지금 뜨거운가?). 에이전트형 AI 채용 공고는 전년 대비 280% 증가했다 — 미국 내 약 9만 건 규모다 — 반면 전통적인 신입급 테크 채용은 오히려 줄었다. 그중 34.3%가 LangChain을 명시하고 있으니, 이제는 기본 요건이 된 셈이다. 게다가 설문에 참여한 팀 중 57.3%가 이미 프로덕션에서 에이전트를 운영 중이다. 즉, JD들이 서술 가능하고 파싱 가능한 스펙으로 수렴하고 있다는 뜻이다. 컴파일러 입장에서는 반가운 소식이다.

30년짜리 망원경 (살아남았는가?). 1998년 선발 메타분석은 업무 표본(work sample)이 직무 성과를 가장 강하게 예측하는 지표 중 하나임을 밝혀냈다 — 그 뒤로 이어진 모든 재현 검증 전쟁에서도 살아남았다. ATS(지원자 추적 시스템)는 1990년대부터 이력서를 키워드로 파싱해왔다. 30년째 로봇이 당신을 컴파일해서 이진 판정을 내려왔다는 뜻이다. (참 무례하다.) 이 방법은 그저 컴파일러를 반대 방향으로 돌릴 뿐이다 — 이번엔 당신이 그들을 컴파일한다. 그리고 지식 그래프 — 2012년의 "문자열이 아니라 사물(things, not strings)" — 도 유행의 정점을 지나 지루한 기반 인프라가 되었다. 기술이 받을 수 있는 최고의 찬사다.

300년짜리 망원경 (태곳적 법칙인가?). 이력서가 등장하기 수 세기 전, 길드는 채용을 단 하나의 규칙으로 운영했다: 마스터가 되려면 도제가 마스터피스를 만들어야 했다 — 속일 수 없는 사람들이 판정하는 단 하나의 결과물. 이력서(1482년, 앞서 언급했듯)는 더 새롭지만 더 나쁜 발명품이다: 판정자 없는 주장일 뿐이다. 모든 세기, 모든 업종에서 살아남는 패턴은 동일하다: 결과물은 편지보다 오래 살아남는다.

세 개의 망원경, 결론은 하나다: 형용사가 아니라 결과물을 가져와라.

최고의 준비 결과물은 에러 메시지다

실제 채용 공고에 이 방법을 적용했을 때 일어난 일을 소개한다 — 30일짜리 망원경이 급증하고 있다고 말하는 그런 종류의, 시니어 "에이전트형 AI 엔지니어" 포지션이었다. 컴파일 결과는 만족스러웠다: 요구된 일곱 개 역량 클러스터 중 여섯 개가 매칭되었고, 대부분의 심볼이 공개 레포 — 오케스트레이션 루프, 평가 하네스, 에이전트 보안 프레임워크, MCP 툴 선반 — 에 대해 깔끔하게 링크되었다.

그리고 링커가 입을 열었다:

A light terminal: jd-compile resolves most symbols against public repos, then reports undefined symbol: langgraph — the fix is one small shippable artifact, exit 0
여섯 개 클러스터는 링크되었고, 심볼 하나가 정의되지 않았다. 이 한 줄이 갈피 못 잡는 일주일치 공부보다 값지다.
$ jd-compile agentic-ai-engineer.md --link ~/repos
resolved: orchestration ✓  evals ✓  guardrails ✓  mcp-tools ✓
ld: undefined symbol — langgraph

채용 공고는 "특히 LangGraph"라고 명시했다. 두 번이나. 그런데 내 포트폴리오에는 LangGraph 코드가 하나도 없었다 — 내가 가진 모든 오케스트레이션 결과물이 직접 만든 엔진이었기 때문이다. 나는 그 프레임워크가 추상화하는 기계 장치 자체를 만든 셈이었다. 그럴듯하게 들리는 것도 잠깐뿐, 자동차 면허 시험장에 직접 만든 차를 몰고 나타났는데 정작 면허가 없다는 걸 깨닫는 순간 이야기는 달라진다. 진짜 배울 게 많았다! 그래도 면허는 없다.

이건 바로 벼락치기가 일주일을 낭비했을 순간이다. 대신 갭 리포트는 두 가지 조치를 처방했다:

에러 메시지 하나. 오후 한나절. exit 0.

SMART하게 만들고, 복리로 불려라

이 루프는 무리 없이 그 약자 그대로 들어맞는다:

A rotating loop of five nodes — Specific, Measurable, Achievable, Relevant, Time-boxed — around the cycle compile → gap → artifact → recompile; side note: cramming resets, compiling accrues
구체적(Specific) · 측정 가능(Measurable) · 달성 가능(Achievable) · 관련성(Relevant) · 시한 설정(Time-boxed) — 그리고 플라이휠 효과까지: 실행할 때마다 갭 리포트가 짧아진다.

그리고 여기, 벼락치기를 영원히 이기는 대목이 있다: 이 루프는 복리로 쌓인다. JD #1을 위해 만들어 낸 모든 아티팩트는 JD #2를 컴파일할 때 이미 라이브러리 안에 들어와 있다. 공고를 하나씩 돌릴 때마다 갭 리포트는 점점 짧아진다. 벼락치기는 인터뷰가 끝날 때마다 다시 0으로 돌아가지만, 컴파일은 축적된다. 이건 공부법이 아니다 — 스스로 몸집을 불려가는 자산이다.

직접 돌려보라 (전부 공개돼 있다)

파이프라인 전체가 오픈소스다 — 결정론적 코어이고, API 키도 필요 없고, 컴파일 단계에는 LLM도 필요 없다:

git clone https://github.com/wjlgatech/FDE-os
cd FDE-os
# 1. drop any job posting into course/target-jds/ as markdown
# 2. compile it → competency profile
python3 skills/jd-compiler/scripts/jd_compile.py compile course/target-jds/your-jd.md
# 3. deepen it → grounded knowledge graph + skills (Wikipedia/Wikidata/ESCO)
python3 skills/jd-compiler/scripts/jd_to_deepen.py course/target-jds/your-jd.md \
  --title "The Role" --url "https://the-posting-url"

그다음, 어떤 스크립트도 대신해 줄 수 없는 단 하나의 단계를 직접 해야 한다: 요구되는 역량 하나하나를 자신의 공개된 작업물과 나란히 놓고, 솔직하게 물어보는 것이다. 이게 영수증으로 이어지는가 — 아니면 형용사로 끝나는가? 형용사로 남는 항목은 전부 적어 둔다. 시한을 정해 그 목록을 실제로 만들어 내는 것, 그것이 할 수 있는 최고의 인터뷰 준비다.

기억해야 할 한 줄

레오나르도는 열 가지 주장을 뒷받침하기 위해 7천 페이지의 노트가 필요했다. 우리에게는 그보다 훨씬 적은 것만 있으면 된다 — 이제는 노트 스스로가 그 직무와 자신을 대조해 검증해 주기 때문이다.

요리책 전체를 공부하지 마라. 레시피를 컴파일하고, 팬트리(pantry)와 대조한 뒤, 부족한 것만 정확히 만들어라.


AI-Native 시리즈 더 보기

이 모든 글은 Writing 섹션(홈페이지)에 있다.

AI-Native 시리즈의 일부다. jd-compiler와 관련된 모든 것은 github.com/wjlgatech/FDE-os에 공개되어 있다 — Publish 버튼을 누르는 건 당신 몫이다. 출처: Leonardo's letter (Wikipedia) · Stanford 2026 AI Index 채용공고 데이터, 출처: JobsByCulture · LangChain State of Agent Engineering · Schmidt & Hunter (1998).