Rain Lag

조용한 코드 정원: 지속 가능한 사이드 프로젝트를 위한 주간 루틴 설계

사이드 프로젝트를 ‘조용한 코드 정원’처럼 다루는 단순하고 반복 가능한 주간 루틴을 설계하는 법을 다룹니다. 가지치기하고, 물 주고, 다시 심듯이 관리해 더 많이 출시하고, 덜 번아웃 나고, 실제로 끝을 보게 됩니다.

조용한 코드 정원: 지속 가능한 사이드 프로젝트를 위한 주간 루틴 설계

사이드 프로젝트는 대개 초반에는 열정으로 시작하지만, 어느새 먼지 쌓인 GitHub 레포지토리로 끝나곤 합니다. 이건 대체로 실력 문제도, 아이디어 문제도 아닙니다. 대부분은 시스템의 문제입니다.

사이드 프로젝트를 끝없는 해커톤처럼 대하면, 결국 번아웃이 오거나 리팩터와 리라이트의 미로 속에서 길을 잃기 쉽습니다. 하지만 이걸 하나의 조용한 정원처럼 — 꾸준히 가꾸고, 가지치기하고, 물을 주는 대상으로 — 대하면, 진짜로 자랄 수 있는 기회를 주게 됩니다.

이 글에서는 사이드 프로젝트를 작지만 꾸준하고, 지속 가능하게 유지해 주는 주간 루틴을 설계하는 방법을 단계별로 살펴봅니다.


1. 단순한 주간 템플릿부터 만든다

당신이 맨 먼저 준비해야 할 도구는 프레임워크도, 라이브러리도 아닙니다. 바로 주간 스케줄 템플릿입니다.

목표는 단순합니다. 매주

  • 사이드 프로젝트를 언제 할지,
  • 각 시간에는 어떤 종류의 일을 할지

항상 알고 있는 상태를 만드는 것. 의지력 싸움도, “나중에 할까?” 같은 고민도 최소화합니다.

아주 빡빡한 캘린더가 필요하지는 않습니다. 대신 이렇게 반복 가능한 구조면 충분합니다.

  • 월요일 – 정원 계획하기 (30–45분)
    할 일 목록을 훑어보고, 진행 상황을 체크하고, 이번 주에 중요한 일을 정합니다.
  • 화요일 – 빌드 (60–90분)
    작은 기능 하나나 버그 하나를 구현합니다.
  • 목요일 – 빌드 (60–90분)
    같은 기능을 이어서 하거나 새로 작은 기능을 시작합니다.
  • 토요일 – 딥워크/실험 (90–120분)
    리팩터링, 실험, 학습에 시간을 씁니다.

일주일에 3–4시간밖에 없어도, 구조가 있으면 훨씬 쉽게 자리에 앉을 수 있습니다. “오늘은 빌드하는 날이다”, “오늘은 계획 세우는 날이다”라는 게 정해져 있으면 마찰이 많이 줄어듭니다.

템플릿을 만들 때 가이드라인:

  • 세션은 짧지만 집중도 있게. 45–90분이면 의미 있는 진전을 내기에 충분한 경우가 많습니다.
  • 기존 습관에 붙입니다. (예: “화·목 저녁 식사 후”)
  • 최소한 **한 세션은 ‘비코딩 시간’**으로 만들 것 (계획, 리뷰, 트래킹 등).

이렇게 하면 한 주가 “남는 시간에 아무렇게나 하는” 패턴이 아니라, 일정한 리듬을 가진 주기가 됩니다.


2. ‘조용한 정원 시간’으로 계획하고, 추적하고, 내 일을 눈에 보이게 만든다

대부분의 사이드 프로젝트는 노력 부족보다 방향 부족 때문에 죽습니다. 이 “조용한 정원 시간”은 코드에서 잠시 물러나, 제한된 시간을 의도적으로 어떻게 쓸지 결정하는 시간입니다.

이때는 당장 급해 보이는 걸 쫓는 시간이 아닙니다. 대신 이런 질문을 던지는 시간입니다.

  • 이번 주에 가장 큰 차이를 만들 것은 무엇인가?
  • 한두 번의 세션으로 끝낼 수 있는 것은 무엇인가?
  • 다음에 눈에 보이는 개선을 릴리스하는 데 막고 있는 것은 무엇인가?

시각적으로 만든다

단순한 시각적 시스템을 하나 만드세요. **칸반(Kanban)**이 딱 좋습니다.

  • Backlog – 아이디어, 기능, 실험 목록
  • This Week(이번 주) – 이번 주에 하겠다고 실제 커밋한 1–3개
  • In Progress(진행 중) – 지금 손대고 있는 것들
  • Done(완료) – 당신의 승리 컬럼

이건 Trello, Notion, Jira, 혹은 벽에 붙인 포스트잇이어도 됩니다. 중요한 건 눈에 보이는 것입니다.

코딩하러 앉았을 때, 무엇을 할지 정하느라 시간을 허비하지 않습니다. 아이디어 우주 전체에서 고르는 게 아니라, 이미 좁혀 둔 This Week 칼럼에서 끌어옵니다.

조용한 시간을 보호한다

이 시간에는 코딩하지 마세요. “버그 하나만 빨리 고치자” 같은 것도 하지 마세요.

계획 시간은 전략적인 시간입니다. 이때 해야 할 일은:

  • 더 이상 의미 없어 보이는 작업은 과감히 잘라내기
  • 지난주에 배운 것들을 반영해 우선순위 재정렬
  • 새로 떠오른 아이디어를 적되, 이번 주 계획을 망치지 않게 담아두기

단순히 할 일만 관리하는 게 아니라, 정원의 전체적인 모양을 다듬는 시간입니다.


3. 딥한 실험은 평소 코딩 흐름과 분리한다

리팩터링, 리라이트, 새로운 스택 도입 같은 일은 대규모 조경 공사에 가깝습니다. 가치 있지만, 일상적인 유지 보수 작업과 섞이면 위험해집니다.

실험이 평소 코딩 흐름과 숨을 같이 쓰기 시작하면 이런 일이 일어납니다.

  • 반쯤 끝난 리팩터가 여기저기 흩어짐
  • 항상 깨져 있는 main 브랜치
  • 한 레포 안에 세 가지 다른 기술 스택
  • 눈에 보이는 결과는 없는데, “일은 했다”라고 느끼는 몇 주

실험을 위한 별도 레인(lane)을 만든다

주간 루틴 안에서 실험 전용 공간을 하나 떼어 주세요.

  • 매주 고정된 “Experiment(실험)” 세션 (예: 토요일)
  • 별도의 브랜치나 아예 다른 레포지토리
  • 시간 제한 선언: “이건 세션 2번까지만 해 보고 결정한다.”

시작하기 전에 자신에게 물어보세요.

지금 하려는 건 **기능(feature)**인가, 아니면 **실험(experiment)**인가?

만약 이게 실험(새 프레임워크, 과감한 리디자인, DB 마이그레이션 설계 등)이라면, 실험 레인으로 옮기세요. 빌드 세션을 몰래 납치하게 두지 마세요.

이렇게 하면 메인 프로젝트는 계속 앞으로 나아가면서, 호기심도 숨을 쉴 공간을 얻게 됩니다.


4. 큰 방향 전환 전에는 잠시 멈춰, 말로 정리해 본다

큰 변화가 필요할 때도 있습니다. 하지만 준비 없이 덤비면 혼란 그 자체입니다.

  • “이번 주말에 그냥 스택 전체를 새 걸로 옮겨 버려야지.”
  • “성능 때문에… 전체를 Rust로 다시 써야겠다.”

이런 큰 전환을 하기 전에, 루틴 안에 **의도적인 일시 정지(pause)**를 넣으세요.

조용한 정원 시간에 이렇게 해 봅니다.

  1. 문제를 있는 그대로, 쉬운 말로 쓴다.
    예: “현재 API 레이어는 느리고 확장하기 어렵다.”
  2. 옵션을 2–3개 적어 본다.
    • 지금 있는 걸 튜닝해서 최적화
    • 가장 문제가 되는 부분만 부분 리팩터
    • 새 프레임워크로 전체 리라이트
  3. 말로 풀어서 생각해 본다 — 혼잣말이라도 좋다.
    짧은 노트를 쓰거나, 음성 메모를 녹음하거나, 친구에게 DM을 보내도 됩니다.
  4. 가장 작은 단위의 테스트를 정의한다.
    예: “한 모듈만 작게 리팩터해 보고, 성능과 유지보수성을 측정해 본다.”

이 과정을 거친 뒤에도 여전히 그게 맞는 선택처럼 느껴진다면, 그때 진행하세요. 이제 그건 **충동이 아니라 ‘결정’**이 됩니다.


5. 살아남기 위한 설계: 작은 범위, 잦은 승리, 꾸준한 모멘텀

많은 사이드 프로젝트는 어차피 중간에 버려질 겁니다. 현실입니다. 당신의 목표는 초인이 되는 게 아니라, 프로젝트에 유리한 쪽으로 확률을 조금이라도 기울이는 것입니다.

당신의 주간 구조를 다음 세 가지 원칙에 맞춰 보세요.

1. 범위를 작게 유지한다

  • 작업을 60–90분 안에 끝낼 수 있는 단위로 쪼갭니다.
  • 작게라도 **1–2주마다 뭔가 “출시 가능한 것”**을 하나 목표로 합니다.
  • 머릿속에서만 존재하는 “완벽한 v1.0”보다, **“투박하지만 돌아가는 v0.1”**을 선호하세요.

2. 승리를 자주 만든다

각 빌드 세션은 끝날 때마다 무언가 하나는 Done으로 옮겨져야 합니다.

  • 버그 하나 수정
  • 작은 UI 개선 배포
  • 테스트 하나 추가
  • 기술 부채(debt) 조금 갚기

이 잦은 승리들이 뇌를 계속 관심 있게 유지시킵니다. “앞으로 가고 있다”는 감각이 동기의 산소입니다.

3. 모멘텀을 보호한다

  • 여러 주를 잡아먹는데 눈에 보이는 결과는 없는 작업은 피하세요. 쪼개면 됩니다.
  • 각 작업마다 “다음에 할 아주 작은 한 걸음”을 메모해 두세요. 다시 시작할 때 재시동 시간을 줄여 줍니다.
  • 삶이 바쁠 때는 시간을 줄이되, 0으로는 만들지 마세요. 한 주에 30분이라도 유지해 보세요.

천천히라도 살아 움직이는 프로젝트가, 거창했지만 한 번도 움직이지 못한 프로젝트보다 항상 낫습니다.


6. 자라면서 좋은 코딩 습관을 함께 키운다

정원을 한 번도 정리하지 않으면 금세 엉망이 되듯, 코드베이스도 마찬가지입니다.

사이드 프로젝트에 엔터프라이즈급 프로세스가 필요한 건 아니지만, 몇 가지 습관만 가져도 나중의 고통을 크게 줄일 수 있습니다.

  • 깔끔한 커밋
    작게, 설명적이고, 논리적으로 묶인 커밋. fix stuff는 좋은 커밋 메시지가 아닙니다.
  • 진짜 아픈 곳에만 테스트
    커버리지 100%가 필요하진 않습니다. 대신 결제 로직, 데이터 파싱, 핵심 알고리즘처럼 망가지면 곤란한 핵심을 보호하세요.
  • 가벼운 문서화
    프로젝트 실행 방법을 설명하는 README, 그리고 중요한 아키텍처 결정에 대한 짧은 메모 정도.
  • 작은 PR 혹은 작은 변경 단위
    혼자 하는 프로젝트라도 PR 단위로 생각해 보세요. 집중을 돕고, 리스크를 줄여 줍니다.

이 습관들은 다음을 쉽게 만들어 줍니다.

  • 몇 주 쉬고 돌아와도 “무슨 일이었지?”를 빠르게 떠올릴 수 있음
  • 나중에 협업자를 초대할 수 있음
  • 리팩터링과 실험을 보다 안전하게 진행할 수 있음

이 모든 게 바로 정원의 가지치기와 잡초 뽑기에 해당합니다.


7. 루틴을 살아 있는 시스템으로 다룬다

당신의 주간 루틴은 계약서가 아니라, 살아 있는 시스템입니다.

시간, 에너지, 프로젝트 상황이 변함에 따라, 다음을 정기적으로 조정해야 합니다.

  • 가지치기(Prune) – 더 이상 의미 없는 작업 지우기, 아무도 쓰지 않는 기능 제거, 지금 방향과 맞지 않는 아이디어는 아카이브로 보내기.
  • 물 주기(Water) – 잘 작동하고 있는 것에 꾸준히 시간을 쓰기: 사람들이 좋아하는 기능, 안정적인 아키텍처, 검증된 워크플로우.
  • 다시 심기(Replant) – 우선순위가 바뀌면, 이전 아이디어 위에 새 아이디어만 계속 쌓지 말고, 옛 경로는 닫거나 아카이브하고 의식적으로 새로운 줄기를 시작합니다.

몇 주에 한 번은 조용한 정원 시간을 메타 리뷰에 쓰세요.

  • 내 주간 템플릿은 지금도 현실적인가?
  • 실험에는 너무 많이, 실제 출시에는 너무 적게 시간을 쓰고 있지 않은가?
  • 이번 달에 나를 에너지 나게 했던 것소진시켰던 것은 무엇인가?

조정하고, 다듬고, 단순화하세요. 시스템이 당신과 함께 진화하도록 두는 겁니다.


마무리: 폭풍을 쫓지 말고, 정원을 기른다

사이드 프로젝트가 실패하는 이유는 당신의 열정이 부족해서가 아닙니다. 폭풍처럼 운영되기 때문입니다. 짧고 강한 폭발 대신, 정원처럼 꾸준히 손이 가지 않는 구조가 없는 거죠.

당신의 한 주를 이렇게 설계해 보세요.

  • 언제 일할지, 각 시간에 어떤 종류의 일을 할지 분명히 알고
  • 조용한 비코딩 시간에 시각적으로 계획하고 우선순위를 정하고
  • 실험은 메인 코딩 흐름과 분리해서 관리하고
  • 큰 전환 전에는 한 번 멈춰 생각과 선택지를 글과 말로 정리하고
  • 범위는 작게, 승리는 자주, 모멘텀은 끊기지 않게 유지하고
  • 건강한 코딩 습관을 지켜서 프로젝트가 나중에도 다시 들어가기 쉬운 상태를 만들고
  • 루틴 자체를 가지치기하고, 물 주고, 다시 심어 갈 수 있는 살아 있는 것으로 다루는 것.

이런 시스템을 갖추면, 사이드 프로젝트가 인생의 대표작이 아니어도 충분히 의미 있을 수 있습니다. 그저 매주 돌아와 조용히 들여다보게 되는 작은 정원이면 됩니다. 그러면 이 정원은 천천히, 하지만 확실하게 자라날 것입니다.

조용한 코드 정원: 지속 가능한 사이드 프로젝트를 위한 주간 루틴 설계 | Rain Lag