Write Code Every Day

매일매일 코드를 작성하라. 개발자에게 사이드 프로젝트는 숙명과 같고, 이는 언제나 본업과 일 바깥의 삶과 시간을 조율해야 함을 의미합니다. 이번 포스팅은 사이드 프로젝트와 워크라이프 밸런스에 관한 John Resig의 이야기를 소개합니다.

지난 가을, 나의 사이드 프로젝트 작업에 문제가 생겼다:

나는 제대로 진행하고 있지 못했고, 칸 아카데미의 일을 희생하는 것 말곤 작업량을 늘릴 방법을 찾지 못했다.

사이드 프로젝트 작업에는 몇 가지 커다란 문제들이 있었다. 나는 사이드 프로젝트를 보통 주말, 때로는 평일 저녁에 진행했다. 내게는 그다지 맞지 않는 전략이었다. 나는 주말동안 최대한의 퀄리티를 뽑으려고 하면서 어마어마한 스트레스를 받았다. 모든 주말이 한가하리라는 보장도 없었거니와, 휴식과 여가를 포기하고 이틀간 하루종일 코드를 짤 의욕이 있으리라는 보장도 없었다.

코드를 짜는 일에 있어 일주일은 꽤 긴 간격이기에, 노트를 남기더라도 어디까지 작업했는지 잊기 일쑤였다. 한 주를 건너뛰면 결과적으로 2주의 간격이 생기는 셈이다. 2주 이상의 간격을 두고 콘텍스트 스위칭을 한다는 건 치명적일 수 있다. 이런 식으로 수많은 사이드 프로젝트들이 차가운 관심 속에 사라졌기 때문이다.

나는 스스로 몇 가지 규칙을 정했다:

  1. 나는 코드를 매일 쓴다. 문서, 블로그 포스팅 또는 다른 것들을 쓸 수 있지만, 그것은 코드를 작성한 다음이어야 한다.
  2. 매일 쓰는 코드는 쓸모 있어야 한다. 들여쓰기 수정 말고, 리포맷 말고, 리팩토링 말고. 이런 일들은 가능하긴 하지만, 그 날에 수행한 유일한 작업이 되어서는 안 된다.
  3. 매일 쓰는 코드는 자정까지 작성한다.
  4. 매일 쓰는 코드는 오픈소스로 공유하며 깃허브에 올려야 한다.

위 규칙 일부는 때로 유연하게 적용했다. 기술적으로 코드는 반드시 자정 전까지 쓸 필요는 없었지만, 나는 너무 늦은 시간까지 책상에 앉아 늘어진 코드를 쓰는 것을 피하고 싶었다. 반드시 오픈소스로 공개하거나 깃허브에 올릴 필요도 없었다. 다만 이 규칙은 내가 작성하는 코드에 대해 더 신경쓰도록 강제하는 효과가 있었다. 재사용 가능 여부라거나, 작업 초반에 모듈을 생성하기로 결정한다거나.

R1280x0

이 규칙을 적용하고 나자, 몇 가지 흥미로운 일들이 나타났다:

최소 기능 코드(Minimum viable code).

매일 코드 작성은 30분을 넘기지 않도록 스스로를 강제했다. 30분 미만의 시간 동안 의미있는 코드를 쓰는 것은 매우 어려운 일이다. 어떤 평일에 나는 조금 더 코드를 작성했으며(대체로 한시간을 넘지 않았다), 주말에는 종종 하루종일 작업하기도 했다.

습관으로서의 코딩.

나는 이제 나의 깃허브 차트가 어떻게 보여지는지 신경쓰지 않게 되었다. 깃허브 차트 신경 끄기, 이번 실험이 주는 가장 중요한 교훈이라고 생각한다: 이것은 누군가를 만족시키기 위한 변화가 아니라, 자기 자신을 위해서 당신의 인생을 바꾸는 것이다. 다이어트나 운동도 마찬가지다: 자기 자신을 발전시키는 데 집중하지 않는다면 결코 성공할 수 없게 된다.

불안감과 싸우기.

이번 실험을 하기 전, 나는 “충분히” 일을 해내지 못했다거나, “충분히” 나아가지 못했다며 커다란 불안감에 휩쌓이곤 했다. 내 사이드 프로젝트들은 딱히 데드라인도 없었으니, 상대적으로 수량화하기도 힘든 걱정들이었다. 나는 나아가고 있다는 느낌이 실제로 나아가는 것만큼 중요하다는 사실을 깨달았다. 나로서는 충격이었다. 매일매일 꾸준히 코드를 쓰기 시작하면서 불안감이 사라지기 시작했다. 나는 내가 쓴 코드의 작업량에 평안함을 느끼고, 더 이상 무슨 일이든 끝내야만 한다는 열망에서 자유로워졌다.

주말들.

주말에 작업을 마친다는 건 모멘텀을 이어나가는 데 절대적으로 중요한 일이었다. 주말은 중요한 사이드 프로젝트 코딩을 끝낼 유일한 시간이었기 때문이다. 이제는 더 이상 중요하지 않게 되었고, 이건 꽤 좋은 일이다. 나는 주말 동안 끝낼 일에 대해서 몇 주 분량을 기대하다가 결국 실망에 빠지곤 했다. 대부분의 경우 나는 내가 원했던 만큼 작업하지 못했다. 나는 그래서 내가 즐겼던 주말 활동들을 억지로 그만둬야만 했다. 더 많은 일을 끝내기 위해서 말이다. 나는 사이드 프로젝트가 아무리 중요하다 해도 삶의 영역을 침범해서는 안 된다고 생각한다.

백그라운드 프로세싱.

사이드 프로젝트 코딩을 매일 하면서 흥미로운 부작용이 생겼다. 작업 내용이 머리 한 구석에서 끊임없이 돌아가게 된 것이다. 그러므로 산책, 샤워, 또는 머리를 쓰지 않는 활동을 할 때, 나는 다음에 무엇을 코딩할 지 그리고 문제를 해결할 좋은 방법을 찾아내는 것에 관하여 생각한다. 이것은 내가 1주 또는 2주마다 코딩할 때에는 없었던 일이다. 그 때의 나는 보통 어떤 사이드 프로젝트도 마치지 못할 것이라는 불안감에 시간을 허비하곤 했다.

콘텍스트 스위치.

사이드 프로젝트를 이어나갈 때마다 언제나 콘텍스트 스위치 비용이 발생하기 마련이다. 한 주 내내 다른 일을 붙잡고 있다가 주말에 프로젝트 구상을 이어나가는 건 극도로 어렵다. 이러한 관점에서 매일 작업하는 것은 꽤나 도움이 되고 있는데, 내가 작업하던 것을 기억하기 쉽기 때문이다.

워크 라이프 밸런스.

가장 중요한 변화 중 하나는 일-삶-사이드 프로젝트 간의 균형을 더 잘 맞추는 방법을 배운 것이다. 사이드 프로젝트를 매일매일 코딩해야 한다는 것을 인지하고 있기 때문에, 나는 나의 시간을 더 철저하게 관리해야만 했다. 늦은 저녁까지 약속이 생겼다면, 나는 주업인 칸 아카데미 작업을 시작하기 전 아침 일찍 사이드 프로젝트를 작업했다. 또, 그날 일을 못 끝냈는데 늦게까지 밖에 있다면, 나는 하루를 거르는 대신 서둘러 집으로 돌아가 작업을 끝냈다. 우드블록 프린팅 같은 취미에 쓸 시간은 줄어들게 되었지만, 이는 감당해야 할 합리적인 등가교환이다.

주변의 인식.

매일 코드를 쓴다는 새로운 습관을 주변에 알려주는 것은 여러모로 도움이 되었다. 나의 파트너는 내가 매일 이 작업을 마쳐야 한다는 것을 이해해 주었으며, 그래서 함께 하는 활동들도 나의 습관을 중심으로 조율되었다. “그래, 외출/영화 관람/기타 등을 할 수 있어. 하지만 그 다음에 난 코딩을 해야 해”라고 말할 수 있다는 것, 그리고 그것이 이해받고 고려된다는 것은 상당한 편안함을 가져다 준다.

코드를 대체 얼마나 짰지?

지난 2-3개월 남짓 동안 나는 믿기지 못할 만큼 많은 코드를 작성했다. 나는 두 개의 웹사이트를 새로 만들었고, 프레임워크 몇 개를 다시 작성했으며, 무수히 많은 새 노드 모듈을 생성했다. 나는 얼마나 많이 썼는지 잊어버릴 만큼 많은 코드를 작성할 수 있게 되었다. 고작 몇 주 전의 작업이 엄청 오래된 일처럼 느껴질 정도다. 나는 내가 끝마칠 수 있었던 작업량에 커다란 기쁨을 느낀다.

마치며

나는 이러한 습관 변화가 오랫동안 지속해야 할 커다란 성공이자 희망이라고 생각한다. 또한 나는 중요한 사이드 프로젝트를 마치고자 하는 이들에게 이러한 택틱을 추천하기 위해 무슨 일이든 할 것이다. 만일 이 테크닉이 당신에게 잘 맞았든, 맞지 않았든 내게 알려줬으면 한다 - 나는 얼마든지 당신의 이야기를 들을 준비가 되어 있다!


Source : “Write Code Every Day” by john Resig (April 10th, 2014)