뒤로가기
달리기에서 배운 개발 이야기

July 4, 2025

essay

작년 가을, 동료가 퇴근하고 한강에서 뛴다고 해서 따라갔다. 운동을 거의 안 하는 사람이 갑자기 달리겠다고 한 건, 솔직히 건강보다는 회사 밖에서 뭔가 하고 싶다는 마음이 컸다. 매일 모니터만 보다 보니 눈도 침침하고 목도 아프고, 뭔가 물리적으로 움직이는 게 필요했다. 하루 종일 앉아서 키보드를 두드리는 직업이라 허리도 점점 안 좋아지고 있었다.

첫날, 1.5km를 뛰고 죽는 줄 알았다. 옆에서 동료는 편하게 대화하면서 뛰고 있었다. 그 사람은 6개월째 달리고 있었으니 당연한 건데, 그때는 "나는 왜 이것도 못 하지" 하는 생각이 먼저 들었다. 500m부터 이미 숨이 차서 말을 못 했다. 동료가 "괜찮아?" 물어보는데 대답할 숨이 없어서 고개만 끄덕였다. 끝나고 편의점에서 이온 음료를 사서 벤치에 앉았는데, 다리가 후들거렸다.

페이스라는 개념#

처음에는 무조건 빠르게 뛰는 게 잘 뛰는 거라고 생각했다. 시작부터 전력질주. 당연히 500m도 안 가서 숨이 턱까지 차고, 걷다 뛰다를 반복했다. 동료가 "천천히 뛰어, 대화할 수 있는 속도로"라고 했는데, 그게 무슨 달리기냐고 생각했다. 그건 빨리 걷기지 뛰기가 아니지 않나.

근데 실제로 킬로당 7분 페이스로 느리게 뛰니까 3km를 멈추지 않고 완주했다. 느리지만 끊기지 않는 것. 이게 페이스 조절이었다. 동료가 "처음에는 속도가 아니라 거리를 목표로 해"라고 했는데, 맞는 말이었다. 시간이 걸리더라도 멈추지 않고 목표 거리를 채우는 게, 빠르게 뛰다가 중간에 멈추는 것보다 훨씬 효과적이었다.

코딩할 때도 비슷한 실수를 했다. 새 프로젝트가 시작되면 첫 주에 폭발적으로 코드를 쏟아낸다. 밤 10시까지 남아서 피처를 찍어내고, 주말에도 열어본다. 슬랙에 "이것도 했고 저것도 했어요"라고 올리면 뿌듯하다. 그리고 2주차부터 급격히 느려진다. 에너지가 바닥나서. 3주차에는 퇴근 후 맥북 열기도 싫다. 스프린트라는 단어가 원래 단거리 달리기라는 뜻인데, 진짜로 스프린트처럼 달리면 2주를 못 버틴다.

요즘은 일부러 초반에 브레이크를 건다. 첫 주에 80% 하고 싶은 걸 60%만 한다. 대신 3주차, 4주차에도 같은 에너지로 간다. 프로젝트는 마라톤이니까. 초반에 열심히 하는 것보다 끝까지 일정한 속도를 유지하는 게 결과가 좋았다.

기록이 동기부여가 된다#

달리기를 시작하고 나이키 런 클럽 앱을 깔았다. 매번 뛸 때마다 거리, 페이스, 시간이 기록된다. 처음에는 그냥 켜놨는데, 한 달쯤 지나니까 기록을 보는 재미가 생겼다.

첫 주: 1.5km, 킬로당 8분 30초. 중간에 세 번 걸음. 한 달 후: 3km, 킬로당 7분 20초. 멈추지 않고 완주. 두 달 후: 5km, 킬로당 6분 50초. 끝나고도 여유가 좀 있음.

숫자로 보니까 확실히 나아지고 있다는 게 보였다. 체감으로는 "아직도 힘든데" 싶은데, 데이터는 거짓말을 안 한다. 3km 뛸 때 "힘들다"와 5km 뛸 때 "힘들다"는 같은 말인데 내용이 전혀 다르다. 근데 그 차이를 체감하기는 어렵다. 숫자가 있으니까 보이는 거다.

이걸 보면서 개발 기록도 비슷하다는 걸 느꼈다. 나는 이전까지 TIL(Today I Learned)을 안 쓰는 쪽이었다. 귀찮기도 하고, "이 정도는 기록할 만한 게 아닌데" 싶어서. 근데 달리기 기록이 동기부여가 되는 걸 보고 개발 로그도 간단하게 남기기 시작했다. 노션에 날짜별로 한 줄. "React Query의 staleTime과 gcTime 차이를 이해했다." "rebase 충돌 해결을 혼자서 했다." "Suspense boundary를 어디에 두는 게 좋은지 감이 왔다."

하나하나는 별것 아닌 것 같다. 근데 3개월 치를 모아서 보면 꽤 뿌듯하다. 매일매일은 미미해 보이는데 누적되면 확실히 다른 사람이 되어 있다. 이걸 기록하지 않았으면 몰랐을 거다. "나는 제자리인데"라는 착각을 계속 했을 거다.

장비 탓을 하는 구간#

달리기를 한 달쯤 하면 슬슬 러닝화가 궁금해진다. 지금 신는 운동화가 문제인 것 같고, 제대로 된 러닝화를 사면 더 잘 뛸 수 있을 것 같다. 유튜브에서 러닝화 리뷰를 보기 시작한다. 나이키 페가수스, 아식스 젤 님버스, 호카 클리프턴. 비교 영상만 열 개는 봤다. 쿠션이 어떻고, 반발력이 어떻고, 발볼이 넓은 사람한테는 이 모델이 맞고. 유튜브 알고리즘이 나를 러닝 덕후로 인식했을 정도다.

결국 러닝화를 샀다. 호카 클리프턴. 괜찮은 가격이었다. 그리고 다음 날 뛰었는데, 기록이 크게 바뀌지 않았다. 킬로당 10초 정도 빨라졌을까? 그것도 신발 때문인지 컨디션 때문인지 모르겠다. 당연하다. 신발이 달려주는 게 아니니까.

개발에서도 이런 구간이 있다. 새 키보드를 사면 코딩이 더 잘 될 것 같고, VS Code 테마를 바꾸면 집중이 잘 될 것 같고, 모니터를 하나 더 사면 생산성이 올라갈 것 같다. 키캡을 커스텀하고, 키맵을 최적화하고, 에디터 폰트를 열 개씩 비교하고. 물론 좋은 장비가 도움이 되긴 한다. 근데 실력의 90%는 장비가 아니라 반복에서 나온다. 러닝화가 아니라 매일 뛰는 습관에서. 키보드가 아니라 매일 코드를 치는 습관에서.

지금 쓰는 러닝화 꽤 괜찮긴 하다. 장비 탓은 하지 말되, 좋은 장비를 사는 건 나쁘지 않다. 다만 순서의 문제라는 거다.

쉬는 날의 중요성#

처음 한 달은 매일 뛰려고 했다. 운동을 처음 시작하면 다들 그렇듯이, 하루라도 빠지면 습관이 끊길까 봐 불안하다. 월요일부터 일요일까지 매일 한강. 처음에는 의지력으로 버텼다. 그러다가 2주째에 무릎 안쪽이 아프기 시작했다. 뛸 때마다 뻐근한 느낌. 동료가 "쉬는 날이 있어야 근육이 회복된다"고 했다. 주 3-4회가 적당하다고.

쉬는 날을 만들었더니 오히려 뛰는 날의 퍼포먼스가 좋아졌다. 당연한 운동 과학인데, 경험하기 전에는 와닿지 않았다. 무릎 통증도 사라졌다.

개발도 마찬가지다. 매일 코드를 쳐야 한다는 압박을 스스로한테 주면, 번아웃이 빠르게 온다. 이건 따로 글을 쓸 수 있을 만큼 뼈아프게 경험한 적이 있다. 주말에 코드를 안 치는 것, 저녁에 맥북을 안 여는 것. 이게 게으른 게 아니라 회복이다. 근육이 쉬어야 자라듯이, 뇌도 쉬어야 새로운 걸 흡수한다.

5km를 넘긴 날#

달리기 시작한 지 세 달째, 드디어 5km를 쉬지 않고 완주했다. 기록은 34분. 진지한 러너 기준으로는 느린 기록이지만, 1.5km에서 죽을 것 같았던 사람한테는 큰 숫자였다. 3.5km 지점에서 "아 힘든데 걸을까" 하는 순간이 있었는데, "조금만 더"를 반복하다 보니 5km가 찍혔다.

그날 뛰고 나서 한강 벤치에 앉아서 멍하니 물을 봤다. 특별한 감정은 아니었는데, "아 꾸준히 하면 되는구나" 하는 좀 단순한 깨달음이 있었다. 거창한 방법론도 아니고, 특별한 재능도 아니고, 그냥 안 빠지고 나가는 거. 코딩도 그랬다. 처음에 JavaScript가 하나도 이해가 안 됐는데, 매일 조금씩 하다 보니 지금은 TypeScript로 제네릭 유틸리티 타입을 만든다. 거창한 전환점이 있었던 게 아니라, 그냥 쌓인 거다. 매일 조금씩.

요즘은 일주일에 세 번 뛴다. 한강 둔치를 왕복하는 5km 코스. 가끔 7km까지 늘리기도 한다. 뛰면서 코드 구조를 생각할 때가 있는데, 책상 앞에서보다 아이디어가 잘 나온다. 모니터 앞에서는 코드 한 줄에 집중하느라 전체 그림이 안 보이는데, 뛰면서 생각하면 "아 그 컴포넌트를 이렇게 나누면 되겠다" 하는 게 떠오른다.

러닝을 하면서 가장 크게 배운 건, "잘하려면 오래 해야 한다"는 단순한 진리다. 빠르게 뛰는 법, 효율적으로 뛰는 법, 부상 없이 뛰는 법. 다 시간이 걸린다. 유튜브에서 "빨리 잘 뛰는 법" 같은 영상을 봐도, 결론은 항상 "꾸준히 뛰세요"다. 코딩도 마찬가지인 것 같다. "빠르게 프론트엔드 마스터하는 법" 같은 건 없다. 매일 조금씩 치고, 막히고, 찾아보고, 다시 치고.

달리기를 더 잘하고 싶다는 욕심이 생겼다. 10km 대회에 나가보고 싶기도 하다. 근데 급하지 않다. 내일도 뛰면 되니까.