뒤로가기
시간 관리가 아니라 에너지 관리다

July 16, 2021

productivitycareer

작년 12월, 결제 모듈에서 복잡한 상태 관리 버그를 잡고 있었다. 카드 결제에서 포인트 적용, 쿠폰 적용, 최종 금액 계산으로 이어지는 플로우에서 특정 순서로 조작하면 금액이 음수가 되는 버그. 상태가 여러 곳에서 업데이트되면서 꼬이는 문제였다.

오후 2시 반에 시작해서 4시간 30분을 자리에 앉아 있었다. console.log를 찍고 결과를 보는데, 5분 전에 뭘 확인하려고 이걸 찍었는지 까먹는다. 브레이크포인트를 걸어놓고 딴 생각을 하고 있다. useReducer로 관리하는 상태의 흐름을 따라가다가 중간에 끊긴다. 퇴근할 때 "나 정말 바보인 건가" 싶었다.

다음 날 아침 9시 반. 같은 코드를 열었다. 15분 만에 원인을 찾았다. useEffect 안에서 setState를 호출할 때 이전 상태를 참조하는 방식이 잘못되어 있었다. 콜백 형태로 바꾸니까 해결. 어제 4시간 반 동안 못 본 걸 오늘 15분 만에 봤다.

같은 사람, 같은 코드, 같은 버그. 시간만 달랐다.

시간 관리 시스템의 전제가 잘못됐다#

포모도로, GTD, 아이젠하워 매트릭스, 세컨드 브레인. 전부 시도해봤고, 전부 2주 안에 흐지부지됐다. 이 시스템들의 공통점이 있다. "시간이 균질하다"는 전제 위에서 작동한다는 거다. 오전 10시의 1시간과 오후 4시의 1시간이 같은 가치를 가진다는 전제. 근데 실제로는 전혀 다르다. 오후 3시의 나와 오전 10시의 나는 다른 개발자다.

습관에 대해 많이 쓰는 한 저자가 비슷한 맥락의 말을 한 적이 있다. 좋은 습관을 만드는 핵심은 의지력이 아니라 환경 설계라고. 의지력에 의존하면 실패한다. 환경을 바꿔서 좋은 행동이 자연스럽게 나오게 만들어야 한다고. 이걸 에너지에 적용하면, "의지력으로 오후 3시에 집중하자"가 아니라 "오후 3시에는 집중이 필요 없는 일을 배치하자"가 된다.

30일 에너지 로그#

이 경험 이후에 에너지 로그를 찍기로 했다. 근데 2주가 아니라 30일을 했다. 2주는 패턴을 보기에 짧다고 판단했다. 월요일과 금요일의 에너지가 다르고, 월초와 월말이 다르니까.

방법은 단순했다. 매 시간 정각에 알람을 걸고, 그 순간의 집중도를 1~5점으로 기록했다. 노션 테이블에 날짜, 시간, 점수, 그리고 직전 1시간 동안 한 일을 적었다. 1점은 "눈이 감긴다", 2점은 "코드가 안 읽힌다", 3점은 "보통", 4점은 "집중 잘 된다", 5점은 "몰입 상태, 시간 가는 줄 모른다".

처음 며칠은 점수를 매기는 것 자체가 귀찮았다. 알람이 울리면 "아 또" 하면서 대충 찍었다. 근데 5일째부터 루틴이 됐다. 알람이 울리면 반사적으로 노션을 열게 됐다.

30일치 데이터를 평균 내봤다. 놀라운 패턴이 보였다.

피크 타임은 아침이 아니었다#

보통 "아침에 집중이 잘 된다"고 알려져 있다. 딥 워크 개념을 제시한 사람도 아침 시간대를 강조한다. 근데 내 데이터는 달랐다.

  • 오전 9시~9시 반: 평균 3.4점. 생각보다 낮다.
  • 오전 9시 반~11시: 평균 4.3점. 피크.
  • 오전 11시~12시: 평균 3.8점. 살짝 하강.
  • 오후 1시~2시: 평균 1.9점. 바닥.
  • 오후 2시~3시: 평균 2.7점. 회복 중.
  • 오후 3시~4시: 평균 3.5점. 의외로 괜찮다.
  • 오후 4시~5시: 평균 3.1점. 하강.
  • 오후 5시~6시: 평균 2.4점. 퇴근 모드.

핵심 발견: 피크 타임이 9시가 아니라 9시 반이었다. 출근해서 자리에 앉고 슬랙 확인하고 커피 마시고 어제 하던 일의 맥락을 복구하는 데 30분이 걸렸다. 뇌가 "일 모드"로 전환되는 시간이 필요했다. 아침에 출근하자마자 어려운 코딩을 시작하는 건 준비운동 없이 전력 질주하는 것과 같았다.

또 하나. 오후 3시~4시의 점수가 생각보다 높았다. 보통 오후는 전부 안 좋을 거라고 예상했는데, 점심 식곤증에서 회복된 후 작은 피크가 하나 더 있었다. 이걸 "오후 미니 피크"라고 부르기로 했다.

에너지를 깎아먹는 것들#

30일치 데이터에서 에너지 점수에 가장 큰 영향을 미치는 변수도 보였다.

미팅 직후 에너지 드랍: 미팅이 끝난 직후 1시간의 평균 점수가 2.6이었다. 미팅이 없는 같은 시간대의 평균인 3.8보다 1.2점 낮았다. 30분짜리 미팅이든 1시간짜리 미팅이든, 끝난 후의 에너지 드랍은 비슷했다. 미팅 자체의 길이보다 컨텍스트 스위칭 비용이 더 큰 거다.

이건 숫자로 보니까 더 명확했다. 미팅은 시간만 먹는 게 아니라 에너지를 불균형적으로 소모한다. 1시간짜리 미팅의 실제 비용은 1시간이 아니라, 미팅 1시간 + 회복 시간 30분~1시간이다. 미팅 전에 "이거 마무리하고 가야지" 하면서 허둥대는 10분까지 합치면, 1시간 미팅의 실제 비용은 2시간에 가깝다.

점심 메뉴의 영향: 이건 좀 부끄럽지만 데이터가 명확했다. 탄수화물 많은 점심(돈까스, 볶음밥, 파스타)을 먹은 날의 오후 1시~2시 평균이 1.5점이었다. 가벼운 점심(샐러드, 포케)을 먹은 날은 2.3점이었다. 0.8점 차이. 작아 보이지만 체감으로는 "졸려서 아무것도 못 하는" 상태와 "졸리지만 간단한 건 할 수 있는" 상태의 차이다.

수면 시간: 7시간 이상 잔 날의 오전 피크가 평균 4.5점, 6시간 이하로 잔 날은 3.7점. 그리고 6시간 이하로 잔 날은 피크 시간 자체가 30분 늦게 시작됐다. 10시 반에야 엔진이 걸렸다. 1시간 일찍 자는 게 1시간 야근하는 것보다 다음 날 생산성에 확실히 이득이었다.

배치를 바꿨다#

데이터를 보고 나서 한 건 단순하다. 에너지가 높은 시간에 어려운 일을, 낮은 시간에 쉬운 일을 배치한 거다. 말로 하면 당연한 소리인데, 실제로 이렇게 하는 사람은 많지 않다. 대부분 출근하면 슬랙부터 열고 메일부터 확인한다. 가장 에너지 높은 시간을 잡무에 쓰는 거다.

내 배치는 이렇게 바뀌었다.

9시~9시 반 (웜업 30분): 어제 마무리 못한 것 훑어보기, 오늘의 메인 작업 코드 열어두기. 슬랙은 아직 안 본다. 뇌가 "일 모드"로 전환되는 시간을 확보한다.

9시 반~11시 (피크): 그날의 가장 어려운 코딩 작업. 새 기능 구현, 복잡한 디버깅, 아키텍처 설계. 이 90분이 하루 전체의 가장 중요한 시간이다. 슬랙 상태를 "집중 모드"로 바꾸고 알림을 끈다.

11시~12시 (높음): 코드 리뷰, PR 작성. 아직 뇌가 돌아가니까 리뷰 퀄리티가 좋다.

오후 1시~2시 (바닥): 슬랙 답장, Jira 정리, 문서 업데이트. 인지 부하가 낮은 일들. 또는 10분 산책. 건물 1층을 한 바퀴 도는 것만으로도 식곤증이 좀 풀렸다.

오후 2시~4시 (회복 + 미니 피크): 이미 설계가 끝난 기능의 구현, 단위 테스트 작성, CSS 작업. 새로 생각할 건 적고 실행만 하면 되는 일들. 3시~4시의 미니 피크에 약간 복잡한 작업을 끼워넣는다.

오후 4시~6시 (하강): 내일 할 일 정리, 스탠드업 준비, 블로그 읽기. 새 코딩을 시작하지 않는다. 이 시간에 시작한 코드는 내일 아침에 "이게 뭐야" 하고 다시 짜야 할 확률이 높다.

미팅은 적이다 (그리고 그걸 말할 수 있어야 한다)#

배치를 바꾸면서 가장 어려운 건 미팅이었다. 오전 10시에 1시간짜리 미팅이 잡히면 피크 타임의 대부분이 날아간다.

팀 리드에게 부탁했다. "가능하면 제가 참석하는 미팅을 11시 이후로 잡아주실 수 있을까요? 아침에 집중 시간을 확보하고 싶어서요." 한 번 말하는 게 어려웠지만, 말하고 나니까 생각보다 반응이 좋았다. "그럼 팀 전체로 적용해볼까?"라는 반응이 돌아왔다. 결국 우리 팀은 "오전 11시 전에는 미팅 없음"을 비공식 규칙으로 만들었다.

물론 회사 전체가 이 규칙을 따르지는 않는다. 다른 팀과의 미팅은 오전에 잡힐 수도 있다. 그런 날은 전략을 바꾼다. "오늘은 딥워크 날이 아니다"라고 인정하고, 코드 리뷰나 문서 작업을 한다. 미팅 사이 30분에 코딩을 억지로 끼워넣으려다가 좌절하는 것보다 낫다. 컨텍스트 스위칭의 비용은 대부분의 사람이 과소평가한다.

내가 주최하는 미팅은 무조건 오후 2시~4시에 잡는다. 에너지가 코딩하기엔 부족하지만 대화하기엔 충분한 시간대. 미팅과 코딩의 에너지 요구가 다르다는 걸 알면, 미팅 시간을 전략적으로 고를 수 있다.

에너지 총량을 올리는 요소들#

배치를 최적화해도, 에너지 총량 자체가 낮으면 한계가 있다. 30일 로그에서 에너지 총량에 영향을 미치는 요소도 보였다.

커피 타이밍이 의외로 중요했다: 9시에 마시면 피크(9시 반11시)에 효과가 겹친다. 그러면 피크가 더 높아지는 게 아니라, 피크 후 드랍이 더 심해졌다. 10시 반에 마시면 오전 피크가 자연스럽게 끝나는 11시 이후를 커피로 버틸 수 있었다. 그리고 오후 2시에 한 잔 더 마시면 미니 피크(3시4시)를 살짝 높일 수 있었다. 오후 3시 이후에 마시면 밤에 잠이 안 왔다.

월요일의 에너지가 가장 높았다: 직관적으로는 금요일이 피로 누적으로 가장 낮을 것 같은데, 실제로는 수요일이 가장 낮았다. 월요일은 주말에 쉬고 나서 에너지가 충전된 상태. 수요일은 이틀 동안의 피로가 쌓이면서 아직 금요일까지 남아있다는 심리적 무게까지 더해지는 시점. 금요일은 "곧 쉰다"는 기대감이 에너지를 약간 끌어올렸다.

이 데이터로 주간 배치도 조정했다. 가장 어려운 작업은 월요일과 화요일 오전에 배치한다. 수요일은 가급적 가벼운 업무와 미팅으로 채운다. 금요일 오후는 다음 주 계획과 기술 블로그 읽기.

3개월 후#

에너지 기반 배치를 3개월 했다. 정확한 측정은 어렵지만 체감은 확실하다.

"오늘 하루 왜 이렇게 안 됐지?" 하는 날이 주 3~4일에서 주 1일 정도로 줄었다. 완전히 없어지지는 않는다. 컨디션이 안 좋은 날은 아침에도 집중이 안 되고, 갑자기 프로덕션 이슈가 터지면 모든 배치가 뒤집어진다.

근데 기본 틀이 있는 것과 없는 것의 차이는 크다. 비가 올 때 우산이 있는 것과 없는 것의 차이. 비를 완전히 막지는 못하지만, 없는 것보다는 확실히 낫다.

그리고 하나 더. 퇴근 후 피로감이 줄었다. 이전에는 하루가 끝나면 뇌가 쥐어짜인 느낌이었는데, 지금은 "오늘 꽤 했네" 하면서도 여유가 남는다. 에너지를 효율적으로 쓰니까 같은 총량으로 더 많이 하고도 덜 지친다. 에너지를 관리한다는 건 결국, 내가 가진 유한한 자원을 가장 가치 있는 곳에 쓰겠다는 결정이다.

에너지 로그를 추천하는 이유#

사람마다 에너지 패턴이 다르다. 밤에 집중이 잘 되는 올빼미형도 있고, 새벽 5시에 일어나서 일하는 사람도 있고. 내 패턴이 정답이 아니다. 중요한 건 "자기" 패턴을 아는 것이다.

에너지 로그는 30일이면 충분하다. 매 시간 1~5점 찍는 데 10초면 된다. 한 달에 10초 x 8시간 x 22일 = 약 30분 투자. 이 30분이 앞으로 몇 년의 일하는 방식을 바꿀 수 있다.

느낌이 아니라 데이터로 판단해야 한다. "나는 아침형이야"라는 믿음이 데이터로 검증 안 되면 그건 그냥 믿음이다. 내가 그랬다. "아침에 집중이 잘 되겠지"라고 생각했는데, 실제로는 출근 후 30분이 지나야 엔진이 걸렸다. 그 30분을 몰랐으면 아직도 9시에 복잡한 코드를 열어놓고 멍하니 앉아 있었을 거다.

시간은 통제할 수 없다. 하루 24시간은 모두에게 동일하고, 그걸 늘릴 수는 없다. 근데 에너지의 배치는 통제할 수 있다. 같은 8시간을 어떻게 쓰느냐에 따라, 어떤 날은 8시간이 4시간의 성과를 내고, 어떤 날은 8시간이 12시간의 성과를 낸다. 차이는 시간이 아니라 에너지다.