RoughWholeFirst

주니어 개발자들을 위한 패턴 언어 - 완벽한 조각을 맞추기보다 엉성한 전체에서 시작하여 세분화하는 법

The Story: The Sketch vs. The Jigsaw Puzzle

두 명의 개발자, 민수와 하나가 '대시보드 화면'을 개발하고 있다.

민수의 방식 (The Jigsaw Puzzle): 민수는 완벽주의자다. 그는 왼쪽 상단의 '사용자 프로필' 컴포넌트부터 완벽하게 만들기 시작했다. "로그인한 사용자의 아바타를 가져오고, 등급에 따라 테두리 색을 바꾸고..." 그는 이 작은 조각을 완성하는 데만 이틀을 썼다. 하지만 정작 대시보드 전체를 조립했을 때, 프로필 컴포넌트가 너무 커서 다른 차트들이 들어갈 자리가 없음을 깨달았다. 민수는 정성껏 만든 조각을 다시 깎아내야 했다.

하나의 방식 (The Sketch): 하나는 화가처럼 시작했다.

  1. 엉성한 전체: 처음 10분 만에 화면 전체를 텅 빈 박스 4개로 채웠다. (전체 레이아웃 확정)

  2. 점진적 분화: 첫 번째 박스에 '프로필'이라는 글자를 적었다. 두 번째 박스에는 가짜 차트 이미지를 넣었다.

  3. 세분화: 전체 구도가 잡히자, 그때부터 하나씩 진짜 코드로 교체해 나갔다.

하나는 단 한 번도 조각을 깎아낼 필요가 없었다. 시스템은 처음부터 '전체'로서 존재했고, 시간이 흐름에 따라 더 정교하게 분화(Differentiation)되었을 뿐이다.

Context

OrganicGrowth를 실천하며 시스템을 구축하고 있다. StrongCenter를 잡았지만, 그 중심에서 어떻게 확장을 시작해야 할지 고민 중이다.

일상적인 상황:

당신은 지금 퍼즐 조각을 맞추고 있는가, 아니면 그림을 그리고 있는가?

Problem

부분을 먼저 완성하고 조립하려 하면, 전체적인 조화(Wholeness)를 잃고 재작업의 비용이 커진다.

Solution

완벽한 부분보다 엉성하더라도 "전체 구조"를 먼저 만들고, 그 안에서 세부 사항을 점진적으로 분화시켜라.

Christopher Alexander는 생명체의 발달이 세포들을 조립하는 것이 아니라, 배아라는 전체가 점점 나누어지며(Differentiation) 장기를 만드는 과정임을 강조했다.

Principle 1: Embryonic Growth (배아적 성장)

시스템은 처음부터 '전체'여야 한다.

Principle 2: Defer Detailed Implementation (세부 구현 미루기)

구조를 잡는 동안 세부 로직은 가짜(Mock, Hardcoding)로 채워라.

Principle 3: Differentiation over Assembly (조립이 아닌 분화)

바깥에서 조각을 가져와 붙이지 말고, 안에서 나누어라.

Principle 4: Continuous Wholeness (지속적인 전체성)

개발의 모든 순간에 시스템은 "작동하는 전체"여야 한다.

Real Examples

Example 1: Web Development

Assembly Way: 버튼 컴포넌트 완성 -> 입력 폼 완성 -> 서버 API 완성 -> 합체 시도. Rough Whole Way: 빈 페이지에 "주문하기" 버튼 하나만 만듦 -> 누르면 서버에 로그 찍힘 -> 확인 후 버튼 예쁘게 다듬기 -> 입력 폼 하나씩 추가.

Example 2: Complex Algorithm

복잡한 추천 알고리즘을 만든다면, 먼저 "무조건 1번 상품 추천"이라는 엉성한 로직으로 전체 추천 엔진의 파이프라인을 구축한다. 그 파이프라인이 안정화되면 실제 알고리즘을 세분화하여 구현한다.

Common Pitfalls

"It looks unprofessional" (너무 허술해 보여요)

엉성한 상태를 동료나 고객에게 보여주는 것에 대한 두려움.

Losing Focus (방향 상실)

전체만 잡다가 아무것도 완성하지 못하는 것.

Connection to Other Patterns

Signs of Success

The Ultimate Insight

생명은 조각들의 합이 아니라, 전체가 스스로를 나누며 피어나는 과정이다.

퍼즐 조각을 맞추는 개발자가 되지 말고, 나무를 키우는 정원사가 되라. 엉성한 씨앗 속에 이미 거대한 숲의 지도가 들어 있다. 전체를 먼저 세우고 그 안에서 디테일을 꽃피워라. 그것이 복잡함 속에서도 우아함을 잃지 않는 비결이다.


CategoryPatternLanguage CategoryProgramming CategoryDesign CategoryAgile CategoryArchitecture