9강 · 프로젝트 설계법Lesson 9 · Project Design
Rule No.9 — 시작 전에 설계하라Rule No.9 — Design before you start
강의 요약Summary
솜씨 좋은 목수는 톱을 들기 전에 도면을 그립니다. 한 번 자른 나무는 되돌릴 수 없으니까요. Claude에게 "이거 만들어줘" 한 마디를 던지면 빠르게 시작은 합니다. 그런데 틀린 가정 위에 빠르게 쌓아 올립니다. 파일을 만들고, 고치고, 또 고치다가 한참 뒤에 "제가 가정한 구조가 요구와 달랐네요"라고 되돌리기 시작합니다. 이 되돌림이 낭비한 컨텍스트이고, 낭비한 시간이며, 틀어진 방향입니다. 문제는 Claude의 능력이 아니라 시작하는 순서입니다.A skilled carpenter draws the plan before lifting the saw — because a cut board can't be uncut. When you tell Claude "just build this," it starts fast. But it builds fast on top of wrong assumptions. It creates files, edits them, edits them again, then much later says "the structure I assumed didn't match the requirement" and starts reverting. That reverting is wasted context, wasted time, and a derailed direction. The problem is not Claude's capability — it is the order of starting.
해법은 단순합니다. 시작 전에 의도를 맞추고 설계를 적어라. 브레인스토밍으로 무엇을, 왜 만드는지 펼친 다음, 그것을 스펙 한 장과 파일 맵으로 글에 못 박습니다. 그제서야 코드에 손을 댑니다. 앞의 두 단계는 말과 글이라는 싼 매체에서 진행하고, 코드는 합의가 끝난 뒤에만 씁니다. 이 순서를 지키면 빠르게 질주하던 것이 확실한 직진이 됩니다. 더 빠르게 시작하는 것보다 옳게 시작하는 것이 결국 더 빠릅니다.The fix is simple: align on intent and write the design before you start. Spread out what and why through brainstorming, then pin it into text as a one-page spec and a file map. Only then touch the code. The first two stages happen in the cheap medium of words and text; code comes only after agreement is done. Follow this order and a fast sprint turns into a sure, straight line. Starting right ends up faster than starting fast.
다만 모든 일을 다 설계해야 하는 것은 아닙니다. 설계에도 비용이 있습니다. 여러 파일에 걸쳐 있고 요구가 불확실하며 되돌리기가 비싸면 설계합니다. 반대로 한 파일에서 한 줄만 고치고 요구가 명확하면 그냥 바로 시작하는 것이 맞습니다. 이 판단이 오늘 강 전체를 하나로 묶는 메타 규칙입니다. 설계가 항상 더 나은 게 아니라, 일의 크기와 불확실성, 되돌림 비용에 따라 고릅니다.That said, not everything needs to be designed. Design has a cost. If work spans many files, requirements are unclear, and undoing is costly — design it. If you are fixing one line in one file and requirements are clear — just dive in. This judgment is the meta-rule that ties the whole session together. Design is not always better; you choose based on the size, uncertainty, and cost of undoing the work.
핵심 개념 5가지Five key concepts
-
01
질주의 대가 — 빠르게 시작하면 늦게 되돌린다The cost of sprinting — start fast, revert late
"이거 만들어줘" 한 줄에 Claude는 멈추지 않고 달립니다. 스마트할수록 자신 있게 엉뚱한 방향으로 달립니다. 설계 없이 바로 시작하면 세 가지를 잃습니다. ① 방향 — 첫 가정이 틀리면 그 위에 쌓아 올린 코드가 통째로 흔들립니다. 틀린 가정은 늦게 발견할수록 비쌉니다. ② 컨텍스트 — 달리다 되돌리고 다시 작업하는 과정이 대화창을 가정·시도·번복으로 가득 채워 Rule No.2(컨텍스트를 지켜라)를 무너뜨립니다. ③ 합의 — "알아서 잘 만들어줘"라고만 하면 사람과 Claude가 서로 다른 그림을 머릿속에 그린 채 진행합니다. 이건 버그가 아니라 순서 없이 시작한 결과입니다.At "just build this," Claude does not pause — it runs. The smarter it is, the more confidently it sprints in the wrong direction. Starting without a design costs three things. (1) Direction — if the first assumption is wrong, all the code stacked on top shakes. Wrong assumptions get more expensive the later you find them. (2) Context — sprinting, reverting, and reworking fills the chat with assumptions, attempts, and reversals, undermining Rule No.2 (protect the context). (3) Alignment — "make something good" leaves you and Claude each holding a different picture, proceeding at cross-purposes. This is not a bug; it is the result of starting without an order.
-
02
의도 합의 — 브레인스토밍으로 방향을 먼저 잡는다Intent alignment — lock direction through brainstorming first
시작은 답이 아니라 질문으로 엽니다. "만들어줘" 대신 "같이 설계해보자"로 시작합니다. 예를 들면 "구현하기 전에, 접근법을 두세 개 주고 각각의 장단점부터 알려줘"라고 합니다. 그러면 Claude가 코드가 아니라 질문과 옵션, 트레이드오프를 내놓습니다. 이 브레인스토밍 단계에서 무엇을, 왜 만드는지를 활짝 펼치고 하나로 모읍니다. 의도가 흐릿해서 막히면 Claude가 의도를 캐는 질문을 던지게 해서 방향을 먼저 잡습니다. Rule No.5(명령하지 말고 설계하라)를 시작 단계에 그대로 적용하는 것입니다.Open the start with a question, not an answer. Instead of "build it," open with "let's design this together." For example: "before implementing, give me two or three approaches and the trade-offs of each." Then Claude leads with questions, options, and trade-offs instead of code. In this brainstorming stage you spread out what and why, then converge on one direction. If intent is fuzzy, have Claude ask intent-digging questions to lock the direction first. This is applying Rule No.5 (design, don't command) directly to the starting stage.
-
03
스펙 한 장 — 가정을 글로 못 박는다One-page spec — pin assumptions into text
스펙은 코드보다 훨씬 싼 곳에서 틀린 가정을 미리 잡아냅니다. 글은 코드보다 고치기 쉬우니까요. 좋은 스펙에는 네 가지를 담습니다. ① 무엇을 만들지 — 목표와 완료 기준. ② 무엇은 안 만들지 — 범위 밖(건드리지 말 것). ③ 제약 — 스택, 규칙, 환경. ④ 미해결 질문 — 아직 답이 없는 것들. 이 네 가지를 한 장에 적어 Claude와 합의한 뒤에야 구현으로 넘어갑니다. 암묵적 가정을 글로 드러내는 것만으로도 나중에 충돌할 오해의 절반을 미리 없앨 수 있습니다.A spec catches wrong assumptions somewhere far cheaper than code, because text is easier to fix than code. A good spec holds four things: (1) what you will build — the goal and done criteria; (2) what you will not build — the out-of-scope, including what must not be touched; (3) constraints — stack, rules, environment; (4) open questions — things still without answers. Write these four on one page, agree on them with Claude, and only then move into building. Simply making implicit assumptions explicit in writing eliminates half the misunderstandings that would otherwise collide later.
-
04
파일 맵 — 어디에 무엇을 둘지 먼저 그린다File map — draw where things go before writing any code
파일 맵은 코드를 짜기 전에 어떤 폴더·파일이 생기고 각자 무엇을 담당하는지를 미리 그려두는 지도입니다. 예를 들어 "reports/weekly는 주간 재고 보고서를 새로 만드는 곳, data/inventory는 수정만 하고 새 파일을 만들지 않음, docs/spec은 방금 합의한 스펙" 이런 식입니다. 파일 맵이 하는 일은 두 가지입니다. ① 어디를 건드릴지 미리 합의해 범위를 좁힙니다. ② 빠진 부분이나 중복을 코드를 짜기 전에 드러냅니다. 지도가 있으면 Claude는 길을 잃지 않습니다.A file map is drawn before any code: which folders and files will exist and what each is responsible for. For example: "reports/weekly is where we create new weekly inventory reports; data/inventory is edit-only, no new files; docs/spec is the spec we just agreed on." The file map does two things: (1) it makes Claude agree in advance on where it will touch, narrowing the scope; (2) it surfaces missing pieces or duplication before any code is written. With a map, Claude does not get lost.
-
05
설계할 일인가, 바로 할 일인가Design it, or just do it
이 판단이 오늘 강 전체를 묶는 메타 규칙입니다. 설계가 항상 더 나은 게 아니라, 일의 성격에 따라 고릅니다. 설계가 필요한 신호 — 여러 파일과 모듈에 걸쳐 있다, 요구가 불확실하다, 되돌리기가 비싸거나 위험하다. 바로 시작해도 되는 신호 — 한 파일에서 한 줄만 고친다, 요구가 명확하다, 되돌리기가 싸다. 설계에도 비용이 들기 때문에 작고 명확한 일에까지 스펙을 쓰면 과설계입니다. Rule No.7(매번 설명하지 마라)에서 파일이냐 대화냐를 가르던 절제의 원리를 이번에는 설계냐 바로 시작이냐로 확장한 것입니다.This judgment is the meta-rule that ties the whole session together. Design is not always better — you choose based on the nature of the work. Signals that design is needed: the work spans many files and modules, requirements are unclear, and undoing is costly or risky. Signals that diving in is fine: fixing one line in one file, requirements are clear, undoing is cheap. Because design has a cost, writing a spec even for small clear work is over-engineering. This extends the restraint principle from Rule No.7 (stop re-explaining) — file versus chat — now applied to design versus dive-in.
실습 예제Exercise
본인의 리테일 업무 1건을 골라, 5점검 중 ② 스펙 한 장과 ③ 파일 맵을 Claude와 직접 작성해 보는 실습입니다. 코드나 설정 파일은 필요 없습니다. 아래 프롬프트를 Claude 대화창에 붙여 넣으면 Claude가 먼저 계획을 제시하고, 여러분이 확인한 뒤에야 다음 단계로 넘어갑니다. 예시 업무는 '주간 재고 보고서 자동화'이지만 실제로는 자신이 매주 반복하는 아무 리테일 업무로 바꿔도 됩니다.Pick one retail task of your own, then work with Claude to write out check items ② (one-page spec) and ③ (file map) from the five design checks. No code or config needed. Paste the prompt below into a Claude chat: Claude will present a plan first, and only move to the next step after you confirm. The example task is "automate the weekly inventory report," but you can swap it for any retail task you repeat every week.
성공 기준: Claude가 작업을 시작하기 전에 먼저 스펙(목표·범위 밖·제약·미해결 질문)과 파일 맵(폴더·파일별 역할)을 한 장으로 정리해서 내 확인을 요청하면 성공입니다.Success criteria: Claude presents a one-page summary of the spec (goal, out-of-scope, constraints, open questions) and file map (folder/file roles) and asks for your confirmation before starting any work.
막혔을 때: Claude가 바로 작업을 시작하려 하면 "잠깐, 먼저 계획을 한 장으로 정리해서 내 확인을 받아줘. 코드는 그 다음이야"라고 다시 지시합니다.If stuck: If Claude tries to start working immediately, redirect with: "Hold on — first organize the plan on one page and get my confirmation. Code comes after that."
다음 업무의 스펙을 함께 만들어줘. 코드·작업 시작 전에 ①목표 ②범위(건드리지 말 것 포함) ③산출물 형식 ④미해결 질문을 한 장으로 정리해서 내 확인을 받아줘. 확인이 끝나면 파일 맵(어디에 무엇을 둘지)도 한 장으로 제시해줘. 파일 맵도 내가 승인한 뒤에 작업을 시작해줘.Help me build the spec for the following task. Before starting any code or work, organize ① goal ② scope (including what must not be touched) ③ output format ④ open questions onto one page and ask for my confirmation. After that is confirmed, present a file map (what goes where) on one page as well. Only start work after I approve the file map too.
업무: 주간 재고 보고서 자동화
매주 월요일 재고 데이터(data/inventory.xlsx)를 읽어 전주 대비 증감을 계산하고, 요약 보고서를 reports/weekly 폴더에 저장한다. 보고서 형식은 (1) 한 줄 요약 (2) 품목별 증감 표 (3) 재주문 필요 품목 목록이다.Task: automate the weekly inventory report
Every Monday, read inventory data (data/inventory.xlsx), calculate week-over-week change, and save a summary report to the reports/weekly folder. Report format: (1) one-line summary (2) item-by-item change table (3) list of items needing reorder.
## 규칙## Rules
- 스펙과 파일 맵 각각에 대해 내 확인을 받기 전에는 절대 코드를 짜거나 파일을 수정하지 마.Do not write any code or modify any file until I confirm each of the spec and the file map separately.
- 내가 준 정보에 없는 내용을 임의로 추가하지 마. 모르면 '미해결 질문'에 적어서 물어봐.Do not add anything not in the information I gave you. If unsure, put it in "open questions" and ask me.
- 시프트 탭(Plan 모드)을 쓸 수 있으면 활성화해서 진행해줘. 버전에 따라 이름이 다를 수 있으니 공식 문서를 확인해.If Shift+Tab (Plan mode) is available, activate it before proceeding. The name may differ by version — check the official docs.
- 프롬프트 붙여넣기: Claude 대화창을 열고 위 프롬프트를 그대로 붙여 넣습니다. Claude가 스펙을 제시하면, 목표·범위 밖·제약·미해결 질문 네 항목이 모두 있는지, 내가 주지 않은 내용을 지어내지 않았는지 확인합니다. 수정할 게 있으면 지금 고칩니다.Paste the prompt: Open a Claude chat and paste the prompt above. When Claude presents the spec, check that all four items (goal, out-of-scope, constraints, open questions) are present, and that nothing was invented beyond what you gave. Fix anything that needs changing now.
- 파일 맵 검토: 스펙을 승인한 뒤 Claude가 제시하는 파일 맵을 검토합니다. 폴더·파일별 역할이 명확한지, 건드리지 말아야 할 곳이 수정 불가로 표시됐는지, 빠진 폴더나 중복이 없는지 확인합니다. 이상이 없으면 승인합니다.Review the file map: After approving the spec, review the file map Claude presents. Check that each folder and file has a clear role, that read-only areas are marked as such, and that there are no missing paths or duplicates. Approve when satisfied.
- 설계 여부 판단 연습: 파일 맵 승인 후 실제 구현 전에 잠깐 멈추고 5점검을 직접 해봅니다. 이 일이 여러 파일에 걸쳐 있나? 요구가 명확한가? 되돌리기가 비싼가? 세 질문 중 하나라도 '그렇다'면 설계를 먼저 한 것이 옳은 결정이었음을 확인합니다. 반대로 '한 줄 고치기' 수준의 일이라면 설계 없이 바로 시작해도 되는 경우임을 기억합니다.Practice the design-or-dive-in judgment: After approving the file map but before implementation, pause and run the five checks yourself. Does the work span multiple files? Are requirements unclear? Is undoing costly? If any of the three is yes, confirm that designing first was the right call. Conversely, if the task is at the level of changing one line, note that diving in without design would have been appropriate.