뒤로가기
타임블로킹을 6개월 해보고 남은 것

February 16, 2025

productivity

타임블로킹이라는 개념을 알게 된 건 Cal Newport의 블로그에서였다. 하루의 모든 시간을 미리 블록으로 나눠놓는다. 9시10시는 코딩, 10시10시 30분은 코드 리뷰, 10시 30분~11시는 슬랙 답장. 이렇게. 비어 있는 시간이 없어야 한다. 자유 시간도 "자유 시간"이라는 블록으로 잡는다.

핵심 아이디어는 "의도를 가지고 시간을 쓰라"는 거다. 아무 계획 없이 하루를 보내면, 급한 것(주로 슬랙 메시지)에 반응하느라 중요한 것(주로 코딩)을 못 하게 된다. 시간을 미리 배정해놓으면 "지금은 코딩 시간이니까 슬랙은 나중에"라는 기준이 생긴다.

읽고 나서 바로 구글 캘린더에 적용했다. 2025년 9월의 일이다. 6개월이 지난 지금, 효과가 있었는지 솔직하게 써본다.

첫 주: 캘린더가 예쁘다#

첫 주의 캘린더는 예술이었다. 색깔별로 구분된 블록이 빈틈없이 채워져 있었다. 파란색은 코딩, 초록색은 리뷰, 노란색은 미팅, 보라색은 학습, 회색은 점심, 분홍색은 운동. 일요일 밤에 사무실 책상 앞에 앉은 것처럼 다음 주 캘린더를 세팅했다. 30분 정도 걸렸다.

"내일 9시에 결제 페이지 UI 작업, 10시에 코드 리뷰, 10시 30분에 스탠드업..." 계획을 세우는 과정 자체가 기분 좋았다. 마치 주인공이 된 기분. 이번 주는 완벽하게 보내겠다는 의지가 불타올랐다. 캘린더 스크린샷을 찍어서 혼자 뿌듯해했다.

월요일 오전, 캘린더대로 9시에 코딩을 시작했다. 10시에 코드 리뷰로 넘어갔다. 10시 30분에 스탠드업. 잘 된다. "이거 진짜 효과 있네." 기분이 좋았다.

화요일. 9시에 코딩 블록이 잡혀 있는데, 급한 슬랙 메시지가 왔다. 프로덕션에서 이미지 로딩이 느려졌다는 CS 제보. 무시할 수 없다. 코딩 블록을 깨고 이슈를 확인했다. CDN 캐시가 퍼지되어서 발생한 문제였는데, 확인하고 대응하는 데 30분이면 끝날 줄 알았다. 1시간이 걸렸다. CloudFront 설정을 확인하고, 인프라 팀에 연락하고, 응답 기다리고. 캘린더에 구멍이 났다. 이후 블록들이 전부 밀렸다. "오전 코드 리뷰"가 "오후 코드 리뷰"가 됐고, "오후 학습"은 아예 증발했다.

수요일. 오전에 기획 미팅이 갑자기 잡혔다. 기획 변경이 있어서 긴급 논의가 필요하다고. 내 캘린더에는 "코딩" 블록이 있었지만, "미팅이 더 급합니다" 앞에서는 무력했다.

이게 첫 주의 현실이었다. 캘린더는 예뻤지만 하루도 계획대로 간 날이 없었다. 금요일에 캘린더를 보니 빨간색(변경됨) 블록이 절반이었다.

1개월 차: 유연한 블로킹#

한 달 동안 시행착오를 겪으면서 몇 가지를 조정했다.

첫째, 블록 크기를 키웠다. 처음에는 30분 단위로 잘게 쪼갰는데, 30분은 너무 짧다. 코딩을 시작해서 몰입에 들어가려면 최소 15분이 필요한데, 30분 블록이면 실제로 집중하는 시간이 15분밖에 안 된다. 그리고 30분마다 "다음 블록이 뭐지?" 하고 캘린더를 확인하는 것 자체가 방해가 됐다. 블록을 최소 1시간, 가능하면 2시간으로 늘렸다.

둘째, 버퍼 블록을 넣었다. 오전과 오후에 각각 30분씩 "버퍼"라는 빈 블록을 넣었다. 이 시간은 밀린 일을 처리하거나, 예상치 못한 요청에 대응하거나, 아무것도 없으면 쉬는 시간이다. 이 버퍼가 있으니까 일정이 흐트러져도 복구가 가능했다. 이전에는 하나가 밀리면 도미노처럼 전부 밀렸는데, 버퍼가 충격을 흡수해준다. 댐퍼 같은 역할.

셋째, 블록의 라벨을 구체적으로 바꿨다. "코딩"이라고 적으면 막상 그 시간에 뭘 해야 할지 모호하다. 눈앞에 "코딩" 블록이 있는데, "어떤 코딩을 하지?" 하면서 5분을 고민한다. "결제 페이지 - 카드 입력 폼 유효성 검사 구현"이라고 적으면 캘린더를 열었을 때 바로 시작할 수 있다. 시작의 마찰이 줄어든다. 뇌가 "뭘 할지" 결정하는 에너지를 쓰지 않아도 된다.

넷째, 변경을 허용했다. 처음에는 블록이 깨지면 스트레스를 받았다. "또 못 지켰네." 근데 이건 캘린더에 문제가 있는 게 아니라 현실에 변수가 많은 거다. 블록이 깨지면 바로 수정한다. 원래 2시간 코딩이었는데 1시간 미팅이 끼면, 코딩을 1시간으로 줄이고 나머지는 오후로 옮긴다. 완벽을 추구하지 않는다.

3개월 차: 실제로 효과가 있는 부분#

3개월 정도 하니까 뭐가 진짜 도움이 되고 뭐가 아닌지 구분이 되기 시작했다.

효과가 확실한 것: 하루의 구조를 만든다. 타임블로킹의 가장 큰 가치는 "오늘 뭐 하지?"로 시작하는 아침이 사라지는 거다. 출근해서 캘린더를 열면 오늘 할 일이 적혀 있다. 이거부터 하면 된다. 의사결정 에너지를 아껴준다. 의사결정 피로(decision fatigue)라는 게 있는데, 하루에 내릴 수 있는 좋은 결정의 수가 한정되어 있다고 한다. "오늘 뭐부터 하지?"라는 결정을 전날 밤에 미리 해두면, 아침의 결정 에너지를 코딩에 쓸 수 있다.

효과가 확실한 것: 시간의 체감이 달라진다. 블로킹 없이 일하면 하루가 어디로 갔는지 모르겠는 날이 많았다. "오늘 뭐 했지?" 퇴근길에 생각하면 뭔가를 했는데 뭘 했는지 모르겠는 기분. 블로킹을 하면 "오전 2시간은 코딩했고, 1시간은 리뷰했고, 오후는 미팅이었네"라는 감이 온다. 시간을 어디에 쓰고 있는지 의식하게 된다. 이 의식 자체가 중요하다.

효과가 미묘한 것: 생산성 자체가 올라가지는 않는다. 솔직히 말하면, 블로킹을 해도 코딩 속도가 빨라지지는 않는다. 같은 2시간 동안 같은 양의 코드를 쓴다. 달라지는 건 2시간을 확보하기가 쉬워진다는 거지, 그 2시간의 밀도가 달라지는 건 아니다. 밀도를 높이는 건 다른 문제다.

예상과 달랐던 점들#

1. 계획대로 가는 날은 주 2~3일이다.

나머지 날은 뭔가 예상치 못한 일이 터져서 블록이 깨진다. 긴급 이슈, 갑자기 잡힌 미팅, 예상보다 오래 걸리는 작업, 동료의 질문. 처음에는 계획이 깨질 때마다 스트레스를 받았다. "왜 계획대로 안 되지? 내가 계획을 못 세우는 건가?"

근데 지금은 "원래 그런 거구나"라고 받아들였다. 개발이라는 일 자체가 예측이 어렵다. 2시간짜리 작업이라고 생각했는데 4시간이 걸릴 수 있고, 30분이면 끝날 일이 5시간 삽질이 될 수도 있다. 캘린더에 적힌 건 "이렇게 되면 좋겠다"라는 희망이지 약속이 아니다. 전투 계획은 첫 번째 접전에서 무너진다는 말이 있는데, 타임블로킹도 비슷하다.

2. 일요일 밤 세팅이 점점 귀찮아진다.

처음 한 달은 재미로 했다. 두 달째부터 "또 해야 하나..."가 됐다. 세 달째에는 일요일 밤에 넷플릭스를 보면서 "캘린더 내일 아침에 하지 뭐"가 됐다. 지금은 일요일 밤이 아니라 월요일 아침 첫 15분에 한다. 출근해서 커피를 내리고, 그 주의 미팅 일정을 확인하고, 빈 시간에 블록을 채운다. 일요일 밤은 쉬어야 하는 시간이지 다음 주를 계획하는 시간이 아니다.

3. 타임블로킹은 혼자 일할 때 효과적이다.

팀 단위로 일하면 내 캘린더가 아무리 예뻐도 다른 사람의 요청을 통제할 수 없다. 디자이너가 "이거 지금 한 번만 봐줄 수 있어?" 하면 캘린더에 뭐가 적혀 있든 봐줘야 한다. PM이 "급한 건데 5분만"이라고 하면 거절하기 어렵다. 팀워크와 개인 생산성 시스템 사이의 긴장. 특히 오픈 오피스에서는 이 긴장이 더 심하다.

4. 자기 자신에게 너무 엄격해지면 역효과다.

블록이 깨졌을 때 자책하기 시작하면 타임블로킹이 스트레스 원인이 된다. "또 못 지켰네. 나는 왜 이렇게 의지가 약하지. 계획을 세워도 소용없네." 이러면 시스템이 적이 된다. 유연하게 써야 한다. 캘린더는 가이드라인이지 감시 도구가 아니다. 맞추지 못해도 괜찮다.

5. 시간 추정이 생각보다 어렵다.

"이 작업 2시간이면 되겠다"하고 블록을 잡는데, 실제로 2시간이 맞는 경우가 절반도 안 됐다. 대부분 예상보다 오래 걸린다. 특히 버그 수정은 예측이 불가능하다. "1시간이면 잡겠지"했다가 반나절을 쓴 적이 여러 번 있다. 이 때문에 블록 뒤에 항상 여유를 두는 게 중요하다. 2시간짜리 작업에 2시간 30분 블록을 잡는 식으로.

6개월 후 남은 것#

지금은 타임블로킹을 엄격하게 하지 않는다. 한때만큼 모든 시간을 채우지는 않는다. 처음의 열정은 식었고, 현실에 맞게 간소화됐다.

남아 있는 습관은 두 가지다.

하나, 아침에 "오늘의 메인 작업"을 캘린더에 2시간짜리 블록으로 잡는다. 이것만 지키면 하루가 허무하지 않다. 오늘 뭘 했냐고 물으면 "이거 했다"고 답할 수 있다. 나머지 시간은 블로킹하지 않는다. 흘러가는 대로 둔다.

둘, 미팅이 몰린 날은 코딩 블록을 아예 잡지 않는다. 미팅 4개인 날에 "남는 시간에 코딩해야지"라고 생각하면 결국 아무것도 못하고 좌절만 한다. 미팅 사이 30분에 코딩을 시도하면, 컨텍스트 로딩하다가 시간이 끝난다. 미팅 날은 미팅 날이다. 코드 리뷰나 문서 작업 같은 가벼운 일만 한다. 코딩은 내일 한다.

타임블로킹이 만능이 아니라는 건 확실하다. 근데 한 번쯤 해볼 가치는 있다. 최소한 "내 시간이 어디로 가고 있는지"를 깨닫게 해주니까. 그 깨달음만으로도 6개월을 쓴 보람이 있다.