입사 첫해, 주말마다 코딩을 했다. 토요일 오전에 카페에서 사이드 프로젝트, 오후에 인프런 강의, 일요일에 유데미 영어 강의. 팀 동기도 비슷했고, 우리 사이엔 암묵적인 경쟁이 있었다. 월요일 스탠드업에서 "주말에 Redux Toolkit 문서 읽었어요"라고 하면 "나는 거기에 테스트까지 붙여봤어"라고 맞받아야 했다.
6개월을 그렇게 보냈다. 성장했냐고 물으면 했다. 근데 그 성장의 비용이 얼마였는지는 나중에야 알았다.
하루 4시간의 벽
Anders Ericsson이라는 심리학자가 있다. '의도적 연습(deliberate practice)'이라는 개념을 만든 사람이다. 이 사람이 베를린 음악 아카데미에서 바이올리니스트들을 연구한 게 유명한데, 핵심 발견이 흥미롭다. 세계적인 수준의 연주자들도 하루에 진짜 집중해서 연습하는 시간은 4시간을 넘지 않았다.
4시간. 세계 최고 수준의 사람들이다. 평생을 바이올린에 건 사람들이 하루 4시간밖에 깊은 연습을 못 한다는 거다. 나머지 시간은? 산책하고, 낮잠 자고, 가벼운 활동을 했다. 흥미로운 건 이 휴식 패턴이 '게으름'이 아니라 연습만큼이나 의도적으로 설계되어 있었다는 점이다.
Ericsson은 이걸 Harvard Business Review에 "The Making of an Expert"라는 제목으로 발표했다. 공동 저자인 Prietula, Cokely와 함께. 이 논문의 핵심 주장은 단순하다. 최고의 퍼포머와 평범한 퍼포머를 가르는 건 '총 연습 시간'이 아니라 '의도적 연습의 질'이다. 그리고 그 질을 유지하려면, 회복이 연습과 동등한 비중을 가져야 한다.
이걸 소프트웨어 개발에 대입하면 불편한 진실이 나온다. 하루 8시간 코딩한다고 8시간 동안 깊은 작업을 하는 게 아니다. 실제로 깊은 집중이 가능한 시간은 3~4시간이 한계다. 나머지는 미팅, 슬랙, 코드 리뷰, 그리고 솔직히 말하면 '집중하는 척하는 시간'이다.
화요일이 제일 힘든 이유
2025년 봄에 이상한 패턴을 발견했다. 월요일은 괜찮은데 화요일부터 집중이 안 됐다. 수요일에는 코드가 안 읽히고, 목요일에는 어이없는 버그를 만들어내고, 금요일에는 "이번 주도 겨우 버텼다"는 느낌. 매주 반복됐다.
처음에는 수면 문제라고 생각했다. 수면 시간을 늘려도 달라지지 않았다.
원인은 주말에 있었다. 주말에 코딩하면서 "나는 재미있는 걸 하는 거야"라고 합리화했지만, 뇌 입장에서는 업무든 사이드 프로젝트든 같은 인지 작업이다. 코드를 읽고, 구조를 설계하고, 에러를 디버깅하고, 새로운 개념을 학습한다. 뇌에게는 차이가 없다.
James Clear가 쓴 글에 이런 구분이 나온다. 프로와 아마추어를 가르는 건 동기부여가 넘칠 때 열심히 하는 능력이 아니라, 지루할 때도 일관되게 실행하는 능력이라고. 근데 나는 이걸 잘못 해석했다. "일관되게"를 "쉬지 않고"로 받아들였다. 매일, 주말 포함, 쉬지 않고 코드를 치는 게 프로의 자세라고.
틀렸다. 일관성은 강도의 일관성이 아니라 사이클의 일관성이다. 집중과 회복의 사이클을 매주 반복하는 것. 주말에 회복 단계를 건너뛰면, 다음 주 화요일에 이미 에너지가 바닥난다. 배터리를 70%까지만 충전해서 한 주를 시작하는 셈이다.
동기의 등산
전환점은 팀 동기의 변화였다. 2025년 여름, 동기가 갑자기 주말에 등산을 다니기 시작했다. 관악산, 청계산, 북한산. 솔직히 처음에는 "이 사람 공부 안 하네"라고 생각했다. 나는 주말에도 코딩하는데, 하는 은근한 우월감까지 있었다.
근데 월요일 아침 동기의 퍼포먼스가 눈에 띄게 달랐다. 코드 리뷰 속도가 빨라지고, 스탠드업에서 하는 말이 명확해지고, 퇴근 시간도 빨라졌다. 나는 화요일부터 힘든데, 이 사람은 목요일까지도 에너지가 남아 있었다. 금요일 오후에 나는 멍하니 모니터를 보고 있는데, 동기는 다음 주 작업을 미리 준비하고 있었다.
8월에 점심 먹으면서 물어봤다.
"주말에 코딩 안 해? 등산만 다니는 것 같은데."
"안 해. 주말에 코드 쳐봤자 월요일에 더 피곤하더라. 산 올라가면서 머리 비우면 월요일에 아이디어가 나와. 지난주 캐싱 이슈도 토요일에 관악산 올라가다가 해결책이 떠올랐어."
이게 바로 Ericsson 연구에서 말하는 패턴이다. 엘리트 바이올리니스트들도 연습 사이사이에 산책을 했다. 의식적으로 인지 부하를 내리는 시간을 배치했다. 그게 다음 연습의 질을 올렸다.
인큐베이션 효과
이걸 뒷받침하는 인지과학 개념이 있다. '인큐베이션 효과(incubation effect).' 의식적으로 문제를 풀려고 애쓰다가 놓아버리면, 무의식이 백그라운드에서 계속 그 문제를 처리한다는 거다. 그래서 샤워 중에, 산책 중에, 잠자리에 누웠을 때 갑자기 해결책이 떠오르는 경험을 누구나 한 번쯤 한다.
이건 느낌이 아니라 실험으로 확인된 현상이다. 문제를 풀다가 중간에 관련 없는 활동을 한 그룹이, 계속 문제에 매달린 그룹보다 해결률이 높았다는 연구들이 여럿 있다.
내 경험에서도 맞았다. 주말 실험을 시작한 9월, 금요일에 풀지 못한 CSS 레이아웃 버그가 있었다. Flex 컨테이너의 오버플로우 문제. 2시간을 삽질했는데 안 풀렸다. 주말에 노트북을 열지 않았다. 빨래하고, 산책하고, 소설 읽고, 친구 만나서 고기 먹었다. 코딩 이야기는 일절 안 했다.
월요일 아침 코드를 열었을 때, 눈에 바로 보였다. min-width: 0을 안 줘서 발생한 오버플로우. 금요일에 2시간 봐도 안 보이던 게 이틀 쉬고 나니까 30초 만에 보였다.
이게 우연일 수 있다. 근데 비슷한 경험이 이후에도 반복됐다. 주중에 풀리지 않던 설계 문제가 주말 지나고 나면 방향이 잡히는 일이 한 달에 두세 번은 있었다.
2주간의 실험과 데이터
9월 첫째 주부터 2주 동안 실험을 했다. 규칙은 단순했다. 주말에 코딩을 완전히 끊는다. 노트북을 열지 않는다. 기술 블로그도 안 읽는다. 코드와 관련된 모든 것을 주말에서 제거한다.
첫째 주 토요일 오전. 습관적으로 노트북을 열려고 했다. 참았다. 노트북을 서랍에 넣었다. 물리적으로 안 보이게. Derek Sivers가 쓴 글에 비슷한 이야기가 있다. 환경에서 제거하는 게 의지력에 의존하는 것보다 훨씬 효과적이라고. 그의 철학은 "빼기(subtract)"다. 무언가를 추가해서 문제를 해결하려 하지 말고, 방해물을 제거하라는 것. 노트북을 서랍에 넣는 건 정확히 그 원리다.
대신 밀린 빨래를 했다. 동네를 한 시간 걸었다. 서점에서 소설을 샀다. 저녁에 대학 친구를 만났다. 일요일에는 늦잠 자고, 소설 읽고, 넷플릭스를 봤다. 저녁에 살짝 불안했다. "아무것도 안 했는데 괜찮은 건가."
월요일 아침. 출근길 기분이 달랐다. 한 주를 "겨우 시작해야 하는" 느낌이 아니라, 할 게 있어서 기대되는 느낌이었다. 그리고 그 주, 화요일도 괜찮았다. 수요일도 나쁘지 않았다. 금요일까지 에너지가 유지됐다.
2주가 끝나고 스프린트 회고를 했다. 그 스프린트의 완료 포인트가 이전 스프린트보다 높았다. 주말에 아무것도 안 했는데 결과가 더 좋다. 직감에는 반하지만, 데이터가 그렇다.
능동적 휴식 vs 수동적 휴식
실험을 계속하면서 알게 된 게 있다. 모든 휴식이 같은 게 아니다.
침대에 누워서 핸드폰만 보면 그것도 피로가 쌓인다. 인스타그램 피드를 끝없이 스크롤하고, 유튜브 알고리즘이 제안하는 영상을 계속 보고, 트위터에서 다른 개발자들의 주말 코딩 자랑을 보면서 불안해진다. 이건 뇌가 쉬는 게 아니다. 시각 정보를 처리하고, 비교하고, 감정적으로 반응하는 작업을 계속하는 거다.
Ericsson 연구의 엘리트 바이올리니스트들이 쉬는 방법을 보면, 그들은 낮잠을 자거나 산책을 했다. 핵심은 인지 부하가 낮은 신체 활동이었다. 몸은 움직이지만 머리는 쉬는 상태. 이걸 나는 '능동적 휴식(active rest)'이라고 부르기로 했다.
반대로 소파에 누워서 스크린을 보는 건 '수동적 휴식'이다. 겉으로는 쉬는 것 같지만 뇌는 일하고 있다.
내가 찾은 능동적 휴식 목록은 이렇다.
- 동네 산책 (40분~1시간)
- 요리 (번아웃 이후에 시작했는데, 칼질과 불 조절에 집중하면 머리가 비워진다)
- 간단한 운동 (무리하지 않는 선에서)
- 청소, 정리 정돈
- 코드와 전혀 상관없는 책 읽기
공통점은 손이나 몸을 쓰지만 인지적 판단이 크게 필요 없는 활동이라는 거다. 하고 나면 몸은 좀 피곤한데 머리는 개운하다.
죄책감이라는 진짜 적
전략적 회복의 가장 큰 장애물은 시간 부족이 아니다. 죄책감이다.
토요일 오후에 소파에서 만화를 읽고 있으면 머릿속 목소리가 들린다. "너는 아직 주니어인데 이래도 돼?" "다른 사람들은 지금 코딩하고 있을 텐데?" "이 시간에 타입스크립트 공부해야 하는 거 아니야?"
특히 트위터에서 누군가 "주말에 사이드 프로젝트 완성했다"고 올리면, 마음이 흔들린다. 오픈소스에 컨트리뷰트한 사람, 기술 블로그에 새 글을 쓴 사람. "나만 뒤처지고 있는 것 같다"는 불안.
이 죄책감을 다루는 데 도움이 된 프레임이 있다. James Clear가 쓴 글에서 읽은 건데, 프로와 아마추어의 차이는 감정에 따라 행동하느냐, 시스템에 따라 행동하느냐라는 거다. 죄책감은 감정이다. "주말에 쉬면 뒤처진다"는 건 감정적 판단이다. 데이터는 반대를 말한다. 주중 완료 포인트가 올랐고, 화요일부터 무너지던 패턴이 사라졌고, 코드 리뷰에서 어이없는 실수가 줄었다.
감정이 아니라 데이터를 따르기로 했다. 그래도 죄책감이 완전히 사라지지는 않았다. 아마 오래 걸릴 거다. 어쩌면 완전히는 사라지지 않을 수도 있다.
주중 집중도의 변화
주말 코딩을 끊고 6개월이 지났다. 가장 큰 변화는 주중 집중도다.
피곤한 머리로 주말에 2시간 코딩하는 것보다, 월요일 아침 맑은 머리로 30분 집중하는 게 더 많이 배운다. 이건 양 대 질의 문제다. 피곤할 때 읽는 공식 문서는 눈에만 지나가지만, 컨디션 좋을 때 읽는 문서는 한 번에 이해된다.
그리고 예상 못 한 부수 효과가 있었다. 주말에 코딩을 안 하니까 주중에 업무 시간을 더 효율적으로 쓰게 됐다. "주말에 하면 되지"라는 마음이 사라지니까, 주중에 집중해서 끝내려는 동기가 생긴다. 금요일 퇴근 전에 "이건 주말에 해야지"가 아니라 "오늘 안에 끝내자"가 된다. Parkinson의 법칙 비슷한 거다. 시간이 제한되면 그 안에서 효율을 높이게 된다.
Cal Newport가 'Slow Productivity'에서 쓴 표현이 있다. "바쁜 것과 생산적인 것은 다르다(busyness is not productivity)." 주말에 코딩하는 건 바빴다. 근데 생산적이지 않았다. 오히려 주중의 생산성을 깎아먹고 있었다.
회복은 투자다
지금 내 주말 루틴은 이렇다. 토요일 오전에 동네 산책, 점심은 뭔가 만들어 먹기, 오후에는 코드와 상관없는 책이나 친구 만나기. 일요일에는 늦잠 자고, 청소하고, 다음 주를 가볍게 계획한다. "월요일에 이 티켓부터 하자" 정도.
가끔 주말에 코드가 치고 싶을 때가 있다. 정말 재미있는 아이디어가 떠올랐을 때. 그럴 때는 한다. 하고 싶어서 하는 코딩과 해야 한다는 강박에서 하는 코딩은 다르다. 전자는 에너지를 채우지만 후자는 에너지를 빼앗는다. 이 구분이 중요하다. "이걸 안 하면 불안해서" 하는 거라면 멈추는 게 맞고, "이걸 하면 신나서" 하는 거라면 해도 된다.
Ericsson의 연구가 말하는 건, 세계 최고의 퍼포머들이 하루 4시간 이상 깊은 작업을 하지 않는다는 사실이 '한계'가 아니라 '전략'이라는 점이다. 그들은 4시간의 질을 극대화하기 위해 나머지 시간을 의도적으로 회복에 쓴다.
회복은 일의 반대가 아니다. 일의 일부다. 쉬는 것도 실력이라는 말은, "좀 쉬어도 돼"라는 위로가 아니라, "제대로 쉬는 법을 설계하라"는 전략적 조언이다. 나는 그 설계를 아직 완벽하게 못 했다. 근데 방향은 잡았다. 배터리를 70%에서 출발하던 시절보다, 100%에서 출발하는 지금이 확실히 더 멀리 간다.
