From 3b23510d2751c59bd913b6a1b1d61b4424598c68 Mon Sep 17 00:00:00 2001 From: jangwonyoon Date: Mon, 20 Apr 2026 17:12:26 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=201~4=EC=9E=A5=20=EC=9B=90=EB=AC=B8?= =?UTF-8?q?=20=ED=95=B5=EC=8B=AC=20=EC=84=B9=EC=85=98=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=20(PDF=20=EB=B3=91=EB=A0=AC=20=EC=97=90=EC=9D=B4=EC=A0=84?= =?UTF-8?q?=ED=8A=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 각 챕터 Verdict 앞에 ### 📖 원문 핵심 서브섹션 삽입. 책을 읽지 않은 독자도 McConnell 주장 파악 후 판정으로 이어질 수 있게. Co-Authored-By: Claude Sonnet 4.6 --- docs/foundations/1-construction.mdx | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/docs/foundations/1-construction.mdx b/docs/foundations/1-construction.mdx index 2c8a9aa..94ada5c 100644 --- a/docs/foundations/1-construction.mdx +++ b/docs/foundations/1-construction.mdx @@ -10,6 +10,10 @@ ai_assisted: - summary.lead - summary.bullets - verdict.rationale + - chapter1.book_summary + - chapter2.book_summary + - chapter3.book_summary + - chapter4.book_summary source: notion-pull source_page_id: 16dde71a-aa9f-83d2-a989-014e17b8d7de chapters_in_book: [1, 2, 3, 4] @@ -46,6 +50,18 @@ import DevilsAdvocate from '@site/src/components/DevilsAdvocate'; ## Chapter 1. Welcome to Software Construction +### 📖 원문 핵심 + +**구현(Construction)의 범위**: 소프트웨어 구현은 단순히 코딩만을 뜻하지 않아요. 상세 설계, 코딩, 디버깅, 단위 테스트, 통합 테스트가 모두 구현에 포함돼요. + +**구현은 유일하게 반드시 일어나는 활동**: 요구사항 분석이나 아키텍처 설계는 프로젝트 사정에 따라 생략되기도 하지만, 구현은 어떤 프로젝트에서도 건너뛸 수 없어요. + +**구현은 전체 개발 시간의 30~80%를 차지해요**: 프로젝트 규모에 따라 구현이 차지하는 비중이 크기 때문에, 구현 품질이 프로젝트 성패에 직접적인 영향을 미쳐요. + +**소스 코드가 유일하게 항상 최신 상태인 문서예요**: 요구사항 명세서나 설계 문서는 낡아지지만 소스 코드는 언제나 실제 동작을 반영하기 때문에, 코드 품질에 가장 공을 들여야 해요. + +**개인 생산성 격차가 구현 단계에서 가장 크게 벌어져요**: Sackman, Erikson, Grant의 연구에 따르면 프로그래머 간 생산성 차이가 구현 단계에서 10~20배에 달하며, 좋은 구현 기법을 익히면 이 격차를 줄일 수 있어요. + Date: Mon, 20 Apr 2026 17:36:05 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=205~34=EC=9E=A5=20=EC=9B=90=EB=AC=B8?= =?UTF-8?q?=20=ED=95=B5=EC=8B=AC=20=EC=84=B9=EC=85=98=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=20(PDF=2016=EA=B0=9C=20=EB=B3=91=EB=A0=AC=20=EC=97=90=EC=9D=B4?= =?UTF-8?q?=EC=A0=84=ED=8A=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ch5-6 (2-design.mdx): 설계 원칙, ADT, 캡슐화 - Ch7-9 (1-routines.mdx): 루틴 품질, 방어적 프로그래밍, PPP - Ch20-23 (2-quality.mdx): 품질 전략, 협업 구축, 개발자 테스팅, 디버깅 - Ch24-26 (1-refactoring.mdx): 리팩터링, 코드 튜닝 전략/기법 - Ch31-34 (2-craftsmanship.mdx): 레이아웃, 자기문서화, 개인 성격, 장인정신 Co-Authored-By: Claude Sonnet 4.6 --- docs/foundations/2-design.mdx | 26 +++++++++++++++++ docs/good-code/1-routines.mdx | 39 +++++++++++++++++++++++++ docs/good-code/2-quality.mdx | 52 +++++++++++++++++++++++++++++++++ docs/growth/1-refactoring.mdx | 39 +++++++++++++++++++++++++ docs/growth/2-craftsmanship.mdx | 52 +++++++++++++++++++++++++++++++++ 5 files changed, 208 insertions(+) diff --git a/docs/foundations/2-design.mdx b/docs/foundations/2-design.mdx index 7dc0206..f4e4ff6 100644 --- a/docs/foundations/2-design.mdx +++ b/docs/foundations/2-design.mdx @@ -11,6 +11,8 @@ ai_assisted: - summary.bullets - verdict.rationale - checklist.text + - chapter5.book_summary + - chapter6.book_summary source: notion-pull source_page_id: 561de71a-aa9f-8296-b752-8162200acdb6 chapters_in_book: [5, 6] @@ -45,6 +47,18 @@ import DevilsAdvocate from '@site/src/components/DevilsAdvocate'; ## Chapter 5. Design in Construction +### 📖 원문 핵심 + +**설계는 사악한 문제(Wicked Problem)다**: 소프트웨어 설계는 풀어봐야 비로소 명확히 정의할 수 있는 문제로, 틀린 방향을 가보고 되돌아오는 과정 자체가 설계의 본질이에요. + +**소프트웨어의 제1 기술 명령은 복잡성 관리다**: 프로젝트가 기술적 이유로 실패할 때 그 근본 원인은 대부분 통제되지 않은 복잡성이며, 좋은 설계의 목표는 한 번에 다뤄야 할 복잡성의 양을 최소화하는 것이에요. + +**정보 은닉(Information Hiding)**: 각 클래스는 설계·구현 결정을 다른 클래스로부터 숨겨야 하며, 이 원칙이야말로 복잡성을 감추는 가장 강력한 휴리스틱이에요. + +**느슨한 결합(Loose Coupling)**: 클래스 간 연결을 최소화하도록 설계해야 하며, 연결이 늘어날수록 한 부분의 변경이 전체에 미치는 영향이 커져 유지보수 비용이 올라가요. + +**설계 계층(Levels of Design)**: 소프트웨어 설계는 시스템 전체 → 서브시스템/패키지 → 클래스 → 루틴 → 루틴 내부의 5개 수준에서 이뤄지며, 각 수준에서 독립적으로 복잡성을 통제해야 해요. + { ## Chapter 21. Collaborative Construction +### 📖 원문 핵심 + +**협업 구현(Collaborative Construction)의 가치**: 코드 리뷰, 인스펙션, 페어 프로그래밍 같은 협업 기법은 테스트보다 더 높은 비율의 결함을 더 낮은 비용으로 발견해요. + +**페어 프로그래밍 효과**: 비용이 인스펙션과 거의 동일한 수준이면서 결함 검출률은 40~60%에 달하며, 두 사람이 함께 코드를 작성하면 서로의 실수를 즉각 잡아낼 수 있어요. + +**공식 인스펙션(Formal Inspection)**: 사전 준비, 명확한 역할 분담, 결함 탐지에만 집중하는 원칙을 따르며, 모든 협업 기법 중 결함 검출률이 45~70%로 가장 높아요. + +**결함 탐지와 수정의 분리**: 인스펙션 회의 중에는 결함을 찾는 데만 집중하고 수정은 하지 않아요. 수정까지 같이 하면 회의가 길어지고 핵심 목적이 흐려지기 때문이에요. + +**협업 기법과 테스트는 상호 보완적이에요**: 협업 기법은 테스트가 잘 잡지 못하는 종류의 오류를 발견하기 때문에, 두 가지를 함께 사용해야 소프트웨어 품질을 충분히 보장할 수 있어요. + { ## Chapter 22. Developer Testing +### 📖 원문 핵심 + +**개발자 테스팅의 한계**: 테스팅은 오류를 감지하는 수단이지 소프트웨어 품질을 직접 개선하는 수단이 아니며, 개발자 테스트 한 단계가 발견하는 오류는 전체의 50% 미만에 그치는 경우가 많아요. + +**테스트 우선(Test-First) 작성**: 코드를 작성하기 전에 테스트 케이스를 먼저 작성하면 요건 문제를 조기에 발견하고 결함 수정 비용을 낮출 수 있어요. + +**경계값 분석(Boundary Analysis)**: 오류는 경계에 집중되므로 최솟값, 최댓값, 경계의 ±1 값(off-by-one)을 반드시 테스트해야 해요. + +**오류 집중 법칙**: 프로젝트 결함의 80%는 전체 클래스·루틴의 20%에 집중되며, 50%는 단 5%의 클래스에서 발생해요. + +**커버리지 모니터**: 커버리지 측정 없이 테스팅하면 실제로는 50~60%의 코드만 실행되므로, 커버리지 도구를 사용해 미실행 코드를 확인해야 해요. + { ## Chapter 23. Debugging +### 📖 원문 핵심 + +**디버깅 vs 테스팅**: 테스팅이 오류를 탐지하는 과정이라면, 디버깅은 이미 탐지된 오류의 근본 원인을 식별하고 수정하는 과정이에요. + +**결함을 학습 기회로**: 결함은 프로그램을 이해하고, 자신의 실수 패턴을 파악하고, 코드 품질을 점검하고, 문제 해결 방식을 개선할 수 있는 드문 기회예요. + +**의심 영역 좁히기**: 이진 탐색(binary search) 방식으로 프로그램의 절반씩 제거해 가며 결함 위치를 체계적으로 추적하면, 전체 코드를 훑는 것보다 훨씬 빠르게 결함을 찾을 수 있어요. + +**심리적 집합(Psychological Set)**: 개발자는 자신이 작성한 코드에서 보고 싶은 것만 보는 경향이 있어, 결함이 있는 구역을 무의식 중에 건너뛰는 맹점이 생겨요. + +**증상이 아닌 문제를 수정**: 특정 값에 대한 특수 케이스 처리처럼 증상만 덮는 수정은 코드를 점점 더 취약하게 만들므로, 항상 근본 원인을 이해한 후 수정해야 해요. + Date: Mon, 20 Apr 2026 17:48:36 +0900 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20docs/=20=ED=95=98=EC=9C=84=20plan/br?= =?UTF-8?q?ainstorm=20=ED=8C=8C=EC=9D=BC=20=EC=A0=9C=EA=B1=B0=20(Docusauru?= =?UTF-8?q?s=20=EB=B9=8C=EB=93=9C=20=EC=97=90=EB=9F=AC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - docs/plans/ 삭제 (로컬 개발서버가 픽업해 깨진 링크 에러) - docs/brainstorms/ 삭제 (docs/ 밖 plans/brainstorms/ 에 위치해야 함) - .gitignore에 /docs/plans/, /docs/brainstorms/ 추가 Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 2 + .../2026-04-20-readme-renewal-requirements.md | 43 ------------------- 2 files changed, 2 insertions(+), 43 deletions(-) delete mode 100644 docs/brainstorms/2026-04-20-readme-renewal-requirements.md diff --git a/.gitignore b/.gitignore index 09827ab..76dce5f 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,5 @@ yarn-error.log* # 로컬 실행 플랜 (실행 안내서, PR 본문에 녹임) # docs/ 밖으로 분리 — docs/ 안에 두면 autogenerated 사이드바에 노출됨 (로컬 dev 오염) /plans/ +/docs/plans/ +/docs/brainstorms/ diff --git a/docs/brainstorms/2026-04-20-readme-renewal-requirements.md b/docs/brainstorms/2026-04-20-readme-renewal-requirements.md deleted file mode 100644 index c636812..0000000 --- a/docs/brainstorms/2026-04-20-readme-renewal-requirements.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -date: 2026-04-20 -topic: readme-renewal ---- - -# README 리뉴얼 - -## Problem Frame - -현재 README는 초안 수준 — 비주얼 없음, 챕터 목록이 페이지 범위만 표기, 멤버 사진이 50px로 너무 작음. GitHub에서 프로젝트를 처음 보는 외부 개발자에게 스터디의 정체성과 콘텐츠 목적지를 즉각 전달해야 한다. - -## Requirements - -**비주얼 — 멤버 섹션** - -- R1. `스터디원.png`에서 배경 제거(rembg) → `static/img/members/study-members-nobg.png` 저장, README 최상단 히어로 배너로 사용 -- R2. 멤버 카드를 2열 HTML 테이블로 재구성 — GitHub 프로필 사진 80px + 🐾 이모지 + 이름(한국어) + 닉네임 + 연차 + 한 줄 설명 (hero.png의 캐릭터 설명 텍스트 그대로 사용) - -**README 구조 — 가독성** - -- R3. 중앙 정렬 타이틀 + 뱃지 행 (Docusaurus 사이트 링크 + Notion 링크) -- R4. "📖 스터디 노트 보러 가기" 명확한 CTA를 누끼 배너 아래 배치 -- R5. 챕터 섹션을 파트별 테이블로 교체 — 파트 이름 + 챕터 범위 + 테마 키워드 포함 -- R6. 개발 세팅 섹션 유지 (npm → pnpm으로 정확히 반영) - -**범위 제외** - -- 영문 README 추가 (별도 이슈) -- Docusaurus 사이트 본문 변경 없음 - -## Success Criteria - -- 외부 방문자가 README에서 스터디 성격, 멤버, 콘텐츠 링크를 30초 내 파악 가능 -- 누끼 사진이 GitHub 다크/라이트 모드 둘 다 자연스럽게 표시 - -## Key Decisions - -- 누끼 배너 + 2열 개인 카드 조합 선택: 단체 정체성 + 개인 목소리 동시에 살림 -- hero.png(일러스트)는 Docusaurus 사이트 히어로용으로 유지, README는 실제 사진 사용 - -## Next Steps - -→ 직접 작업 진행 (rembg 처리 + README 작성) From b41d680341526520f0c1934ef8f3d6f36f9cb4a5 Mon Sep 17 00:00:00 2001 From: jangwonyoon Date: Mon, 20 Apr 2026 17:59:37 +0900 Subject: [PATCH 4/4] =?UTF-8?q?fix:=201~4=EC=9E=A5=20Devil's=20Advocate=20?= =?UTF-8?q?author=3D"unknown"=20=E2=86=92=20=EC=A3=BC=EC=9E=A5=20=EC=A0=9C?= =?UTF-8?q?=EB=AA=A9=EC=9C=BC=EB=A1=9C=20=EA=B5=90=EC=B2=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- docs/foundations/1-construction.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/foundations/1-construction.mdx b/docs/foundations/1-construction.mdx index 94ada5c..4edf1c8 100644 --- a/docs/foundations/1-construction.mdx +++ b/docs/foundations/1-construction.mdx @@ -77,7 +77,7 @@ import DevilsAdvocate from '@site/src/components/DevilsAdvocate'; ### 😈 Devil's Advocate @@ -110,7 +110,7 @@ import DevilsAdvocate from '@site/src/components/DevilsAdvocate'; ### 😈 Devil's Advocate @@ -145,7 +145,7 @@ import DevilsAdvocate from '@site/src/components/DevilsAdvocate'; ### 😈 Devil's Advocate @@ -184,7 +184,7 @@ import DevilsAdvocate from '@site/src/components/DevilsAdvocate'; ### 😈 Devil's Advocate