View

반응형

일일 커밋 회고

들어가며,

누군가 내게 꾸준히 몰두해온 경험을 묻는다면 자신 있게 일일 커밋이라 말할 것이다.
개발자라면 누구나 멋진 학습 방법을 찾고 싶어 한다.
나에게 일일 커밋은 가장 멋진 학습 방법이었다.

2020년 10월부터 시작해 1년 조금 넘는 시간 동안 꾸준히 했으니, 나름의 노하우와 자부심(?)도 생겼다.
그래서 이번 기회에 일일 커밋의 간단한 회고와 내가 진행한 방법들을 공유하는 시간을 가져볼까 한다.

 

시작한 이유🤔

개발자로의 새싹 시절, 나에게 맞는 학습 방법을 찾기 위해 많은 고민을 했었다.
학습 루틴 기록이란 글에서 언급했 듯, 일일 커밋도 도전해 보고 싶은 학습 방법 중 하나였다.
그러던 중 동료 개발자들과 스터디를 진행하게 되면서 자연스럽게 개인 저장소에 커밋을 하게 되었다.

초록색으로 물들어 가는 저장소의 잔디는 내게 꽤나 성취감을 주었다.
조금씩 채워지는 컨트리뷰션 그래프가 마치 내 성장 그래프처럼 느껴졌었다.

가득채웠으니, 나 조금은 성장했을지도..?

 

꾸준히 학습하면서 시각적으로도 성취감을 느낄 수 있으니 공부하는 게 꽤 재밌었다.
이런 흥미를 가질 때 즈음부터 매일 커밋을 하기 시작했다.

 

본격적인 활동🎯

처음엔 알고리즘 관련 문제를 풀고 커밋하는 방식으로 그래프를 채워나갔다.
하지만 이 활동을 제외하고 다른 학습 내용들을 어떻게 일일 커밋에 녹여낼지가 항상 고민이었다.
즉, 다양한 학습 내용들을 컨트리뷰션 그래프에 알차게 채울 방법이 필요했다.

지금은 일일 커밋을 이어오면서 어느 정도 자리 잡은 몇 가지 활동들이 있다.
이에 나는 어떻게 일일 커밋을 이어왔는지, 나의 활동들을 간단히 공유해볼까 한다.

 

  • TIL(Today I Learned)
    • 기술 서적을 읽고 정리
    • 강의 혹은 알게 된 개발 지식을 정리
    • 일일 회고록 작성

매일 공부한 내용을 정리하고 기록하는 TIL(Today I Learned)이란 저장소다.
다양한 학습 주제에 대한 기록을 통해 일일 커밋을 조금 더 쉽게 이어갈 수 있었다.

주로 기술 서적에 대한 정리 글과 일일 회고록 등으로 채워왔고, 현재는 약 200개 정도의 문서들이 저장되어있다.
아마 앞으로도 계속 활용할 공간이 될 것 같다..(읽어야 할 기술서적이 너무 많다. 😢)

 

코딩 테스트 대비용 알고리즘 스터디를 진행했던 저장소이다.
나를 일일 커밋으로 이끌어준 고마운 저장소...
하지만 지금은 사용되지 않아서 개인 저장소인 Problem_Solving_Study-with-Java로 옮겨 문제 풀이를 진행하고 있다.

 

NextStep에서 진행했었던 미션들을 다시 구현해보고 반복적으로 객체 지향 프로그래밍을 연습하기 위해 만든 저장소이다.
TDD와 객체 지향 프로그래밍을 학습하는데 정말 많은 도움이 됐다.

 

  • 책 읽기 스터디 저장소
    • 기술 서적을 읽고 정리한 글을 포스팅
    • 모르는 내용이나 어려운 내용은 이슈를 통해 공유하고 토론
    • 예제 코드 작성

책 읽기 스터디 Organization! 지금은 이펙티브 자바를 읽고 있다.
책을 읽고 정리한 내용 중 모르는 내용이나 공유하고 싶은 내용 등을 이슈로 등록하고 함께 토론하는 방식의 스터디를 진행하고 있다. 이펙티브 자바는 너무 어려워서 혼자 읽기 버거웠는데, 이 스터디 덕분에 Java의 많은 모범사례를 학습할 수 있었다.

 

기술 면접 대비를 위한 기본 개념을 정리해 놓은 오픈 소스 저장소이다.
HashTable과 HashMap에 대한 설명이 잘못되어 있길래 수정해서 Pull Request를 보냈다.
무려 2300개의 Start를 받은 저장소라 approve 될지 몰랐는데... 되어버렸다!!
아직도 Contributors에 내 이름이 있는 게 신기하게 느껴진다. (근데 누가 나한테 👎 이거줌ㅠ)

 

규칙👍

일일 커밋을 통해 꾸준한 주도적 학습 습관을 가지게 되었다.
하지만 정해진 규칙이 없으니 의미 없는 커밋이 점점 늘어나기 시작했다.
오타 수정 커밋해놓고 오늘 할당량을 채웠다며 안심하는 내 모습을 볼 수 있었다.
학습과 성장을 위해 시작한 일일 커밋이 단순히 컨트리뷰션 그래프를 채우기 위한 수단이 되어버린 것이었다.

따라서 이런 상황을 최소화할 수 있는 규칙 필요하다고 생각했고, 다음과 같은 나만의 규칙을 세웠다.

  1. 매 월요일마다 일주일간의 주간 학습 목표를 세운다.
  2. 주간 목표를 구체화해 일일 학습 목표를 세운다.
  3. 일일 학습 목표와 실제 이뤄낸 목표를 작성하고 매일 회고한다.
  4. 일일 학습 목표는 꼭 지켜지지 않아도 된다. 단, 주간 목표는 최대한 지켜야 한다.
  5. 일일 회고록은 그날 있었던 일이나 학습한 내용을 적는다. 꼭 작성하지 않아도 된다.
  6. 의미 없는 커밋(어뷰징)을 한 경우, 그 이유를 회고록에 남겨야 한다.

이렇게 명확한 규칙을 정하고나니, '오늘 뭐하지?' 같은 고민거리가 없어졌고 의미 없는 커밋하는 날이 엄청나게 줄었다. 주간 목표라는 명확한 목표를 통해 내일 할 일을 미리 계획하고 그대로 수행함으로 더 효율적인 학습 습관이 만들어졌다.

또한, 일일 회고록을 작성함으로써 의미 없는 커밋이 조금이나마 의미 있는 커밋(회고록)이 된다는 장점도 있다.

 

장점과 단점😂

일일 커밋을 진행하면서 많은 장점을 느낄 수 있었지만, 그만큼 단점으로 생각되는 부분도 존재했다.
그래서 지난 1년 간 내가 느꼈던 일일 커밋의 장점과 단점을 간단히 적어봤다.

 

  • 장점
    • 매일 조금이라도 학습하는 습관을 좀 더 쉽게 만들 수 있다.
    • 증명하기 어려운 개발에 대한 열정이나 성실함의 척도를 컨트리뷰션 그래프가 대신 시각화해준다.
    • 성취감을 얻을 수 있다.
    • 깃허브와 친해질 수 있다.
    • 다양한 커밋 활동을 통해 학습의 시야를 넓힐 수 있다.
    • 본인의 학습 활동 기록을 통해 인사이트(성장한 점, 부족한 점 등)를 얻을 수 있다.
  • 단점
    • 가끔은 일일 커밋이 학습에 방해되기도 한다.
      • 단적인 예로, 기술 서적을 정리하면서 읽느라 정리가 끝난 후에는 내용이 기억이 안 날 때도 있었다.
    • 학습한 것을 커밋으로 변경하는데 많은 시간이 소요된다.
      • 책을 읽거나 인터넷 강의를 보고 학습한 경우 이를 커밋 기록으로 남기려면 '증거'가 필요했다.
        따라서 이를 정리하는 것에 시간을 너무 많이 쏟게 된다.
        만약 일일 커밋이 없었다면 더 많은 학습을 할 수 있었을 것이다.
    • 다른 외부 활동에 약간의 제약이 생긴다.

 

앞서 설명한 규칙을 도입한 후 단점이라 생각되는 부분을 많이 보완할 수 있었다.
강의를 보거나 책을 읽은 날에도 그날 무엇을 했는지 기록하는 식으로 커밋을 채울 수 있었기 때문이다.
정리에 쓰이는 시간이 사라짐에 따라 커밋에 대한 부담감이 덜어졌다.
그 덕분에 조금 더 학습에 집중할 수 있었다.

이처럼 일일 커밋을 하는 과정에서 느껴지는 불편함들이 있다면,
조금씩 보완해가며 이어가는 건 어떨까?

물론, 어뷰징이나 치팅은 득이 될 게 없으니 하지 않는 게 좋다.
자칫하면 무의미한 노력이 될 수도 있으니!

 

내가 생각하는 일일 커밋

일일 커밋을 추천합니다!

주도적으로 학습하는 힘이 있는 사람들에겐 일일 커밋이 가지는 의미는 없다고 생각한다.
이런 사람들은 이미 자신만의 학습 방법을 가지고 있을 것이기 때문이다.

하지만 위에 해당하지 않는 다면 일일 커밋을 해보는 것을 추천한다.

대부분의 사람들이 꾸준한 학습을 포기하는 이유는 자신의 일상 속에 '학습 시간'을 끼워 넣어야 하기 때문이다.
일상에 '학습 시간'을 끼워 넣고 꾸준히 학습하는 습관을 만들기란 어렵다.
학습은 재미없고 지루하기 때문에..

일일 커밋은 이런 부분에 거부감을 조금은 줄여주는 것 같다.
그냥 게임 일일 퀘스트 하듯 하면 된다.
본인의 github 활동 점수를 랭킹으로 나타내주는 코덕이라는 사이트를 활용하면 더 재미있게 할 수 있다.
이런 게임적 요소를 활용하면 쉽게 학습 시간을 일상에 끼워 넣을 수 있고, 꾸준히 학습하는 힘도 키울 수 있다.
조금만 유지해보면 지금껏 채워온 잔디가 아까워 그만둘 수 없게 된 자신을 볼 수 있을 것이다.

꾸준한 학습 습관을 만들고 싶다면 지금 당장 잔디 하나를 심어보자.

 

트레이드오프

나는 일일 커밋에도 적당한 트레이드오프가 필요하다고 생각한다.

내가 생각하는 일일 커밋의 트레이드오프는 여가 시간과 학습 시간의 타협점이다.
여가 시간을 많이 가지면 당연히 학습 시간이 줄어든다.
그 반대의 경우도 마찬가지다.

취미 활동이나 약속 등 외부 활동을 하다 보면 커밋을 할 시간이 없을 때가 있다.
개인 여가 생활은 삶에서 아주 중요한 요소이기 때문에 이런 경우에는 어뷰징을 해도 괜찮다고 생각한다.

하지만 이런 경우가 아니라면 자기 자신을 속이는 행동을 하지 말자.
어차피 일일 커밋은 자신과의 싸움이다.
다른 사람들은 내가 무엇을 공부하고 커밋하는지 관심도 없다.
이런 시간에도 어뷰징을 한다면, 그냥 그만두고 노는 게 낫다.

일일 커밋은 본인이 열심히 하고 있다는 착각에 빠지기 쉽다.
나 또한 그런 착각에 빠졌던 적이 있었다.(공부 1도 안 하고 공부한 척 커밋....)
일일 커밋을 하면서 가장 조심해야 할 부분인 것 같다.

본인의 학습과 성장을 위해 하는 활동이니, 여가 시간과 학습 시간의 적당한 타협점을 찾고
진행한다면 아주 멋진 학습 방법이 될 것이다.

 

마치며,

회고록을 쓰면서 지난 1년을 돌아볼 수 있어 참 좋았다.
나에게 일어난 변화나 성장 등을 객관적인 지표로 바라볼 수 있었기 때문이다.

'1년 전의 나''현재의 나'를 비교해보면 확실히 많은 성장을 이뤘다고 생각한다.
그럼에도 아직 내 앞에 뛰고있는 사람 혹은 날고있는 사람들이 너무 많다고 느껴진다.
개발자로서 앞서지 못할지라도 뒤처지고 싶지는 않다.

앞으로 계속해서 쓰여질 나의 회고록에서는 앞서있는 사람이 되어있길 바라며 이 글을 마친다.

반응형
Share Link

인기 글

최신 글

전체 방문자

Today
Yesterday