80일간의 프로그래밍 독학 회고

독학을 시작한지 벌써 두 달 반이라는 시간이 흘렀다. 지난 과정을 평가해보고 남은 두 달을 알차게 보낼 수 있도록 재정비가 필요한 시기인것 같아 그동안 무엇을 했고, 무엇을 느꼈는지, 그리고 앞으로 무엇을 개선할지에 대해 간단한 회고를 작성해본다.

중간 평가

프로젝트 관점에서

Project Stack Status
Amazon Prime 클론코딩 HTML, CSS, Vanilla JS Hold
Popcorn Movie 클론코딩 React, React Router, Netlify 배포 완료
YouTube 클론코딩 Node.js, Express, Pug, Passport, Webpack, AWS S3, mongo DB Atlas, Heroku 배포 완료
Node.js Todo 관리 앱 (OOP) Node.js 완료
Node.js Todo 관리 앱 (CLI) Node.js, mongo DB, mongoose, commander, chalk Hold
캐치마인드 클론 코딩 Node.js, Express, Socket.io Ing

그 외

  • 알고리즘 주 2회 풀고 정리하기
  • TIL 작성
  • 게임 만들기 - Vanilla JS, React, React Hooks
  • etc…

노마드 아카데미 챌린지 프로그램과 함께 front-end + back-end + DB + 배포까지 전체적인 흐름을 익힌게 가장 큰 수확이었다. 앞으로 사이드 프로젝트를 하면서 배운 것을 내것으로 소화하고 응용하는 시간을 가지고 싶은데 어떤 프로젝트를 하면 좋을지 정하는게 새로운 과제가 된 듯 하다.

알고리즘 주 2회 풀기랑 TIL 작성하는건 두 달 정도는 열심히 한 것 같은데 요 근래 해이해졌다. 다시 맘잡고 해봐야지.

생각보다 Node.js를 다룬 프로젝트의 비중이 높다. 남은 두 달은 Vanilla JS와 React(Hooks, Redux)의 비중을 늘려봐야겠다.


프로그래밍 학습 관점에서


  1. 재미/성취감 느끼기 (score: 7/10)
  2. 매일 코딩하는 습관 만들기 (score: 9/10)
  3. 나에게 맞는 학습 방법 찾아보기 (score: 7/10)

독학을 시작하면서 가장 중점을 뒀던 세 가지에 기준에 대해 기대 이상으로 해낸 것 같아 뿌듯하다. 각각을 성취하는데 무엇을 했고 무엇을 느꼈는지 정리해보면 다음과 같다.

재미/성취감 느끼기 & 매일 코딩하는 습관 만들기

이 두가지를 묶어서 얘기하는 이유는 무언가를 할 때 재미와 성취감을 느끼는게 그 행동을 꾸준히 하게 만드는 원동력이 된다는걸 절실하게 느꼈기 때문이다. 그리고 개인적으로 두 마리 토끼를 잡는데 노마드 아카데미 코드 챌린지가 신의 한 수 였다. 적절한 난이도의 과제를 수행하면서 작은 성공들을 경험하고 코딩에 재미를 붙일 수 있었기 때문이다. 매일 또는 2-3일 단위로 새로운 과제가 주어졌기 때문에 자동으로 코딩을 할 수 밖에 없는 환경설정이 됐다는 점도 좋았다. 관리 가능한 수준의 도전이 계속 주어지다보니 꾸준히 코딩하는 습관을 유지하는데 도움이 많이 됐다.

코딩하는 습관을 만드는데 잔디심기가 빠질 수 없다. 80일 동안 해본 결과 확실히 효과가 있었다. 코딩기록이 누적돼서 시각적으로 보이니까 공백이 생기는게 싫어서 게으름을 피우다가도 다시금 책상 앞에 앉아서 키보드를 두드리게 됐다. 하지만 최근들어 잔디심기의 단점도 경험하고 있는 듯 하다. 굳이 깃헙에 공유할 정도의 가치가 없는 프로젝트의 경우 private repository로 관리를 하는데 이때는 contribution으로 인정되지 않기 때문이다. 열심히 코딩을 했으나 잔디가 심어지지 않아서 속상한 경우다. 또한 긴 호흡을 가지고 집중해야 할 때 커밋을 해야한다는 강박 때문에 흐름이 끊어지는 경우도 있었다. 잔디심기를 보다 효과적으로 활용하기 위해 고민이 필요한 부분이다.

grass

잔디심기 프로젝트 (8/12~)


블로그에 주간회고를 기록하는것 역시 코딩하는 습관을 만드는데 도움이 됐다. 공개적인 플랫폼이기 때문에 단순히 이번주 회고와 다음주 계획을 공유하는 행위만으로도 계획을 실천하는데 생각보다 큰 영향을 미쳤다. 내가 한 약속을 지켜야 한다는 강제성을 부여한 느낌이랄까. 요근래 소홀하게 작성해온 감이 없지않아 있는데, 다시 초심으로 돌아가야겠다.

grass

주간회고 (8/11~)


나에게 맞는 학습 방법 찾아보기

마지막으로 학습 방법을 찾는건 현재 진행형이다. 그래도 지금까지의 경험을 토대로 정리해보면

  • 새로운 개념을 접할때 처음부터 공식문서를 정독하게되면 방대하고 깊은 내용을 이해하려다가 흥미를 잃었다. 그보다는 전체적인 흐름과 주요 개념들간의 관계를 파악하는 식으로 숲을 먼저 보고 맥락을 파악하는게 나에게 맞는 방법이었다. 처음엔 최대한 쉽게 배우고 자꾸 써보면서 가랑비에 옷 젖듯이 익숙해지는 것이다.
  • ‘왜’ 배워야 하는지 알고 학습할 때 학습효율이 높았다. 예를들면 A라는 라이브러리가 기존의 어떤 문제점을 해결하기 위해 등장한건지 그 배경을 대강이라도 알고 배우는 것과, 무작정 A를 쓰는 방법부터 배우는 것은 천지차이다. 무엇보다 스스로 코딩하면서 불편함을 느끼고 좀 더 나은 방법/기술에 대한 필요성을 느낄때 동기부여가 잘됐다.
  • 대강의 개념을 잡았다면 직접 output을 내본다. output은 가장 기본적인 CRUD를 익힐 수 있는 것(e.g. todo list)부터 시작해서 best practice, 공식문서, 구글링을 적극적으로 활용해본다.

개선/보완할 점

  • 스스로 나의 수준에 맞는 적절한 난이도의 도전 과제를 설정하는게 가장 어려운 부분인 것 같다. 너무 어려워서 좌절감만 느끼거나 너무 쉬워서 흥미가 사라지면 안된다.
  • 매일 뽀모도로 타이머를 활용해서 순공시간을 기록하는 것은 좋지만 중요한건 양보다 질이다. 시간보다 과제에 집중할 것.
  • on/off를 명확하게 하자. 쉴 때는 확실하게 쉬고 집중할때는 온전하게 집중한다.

향후 계획

향후 계획이라니까 괜히 거창하게 들리는데 그냥 지금처럼 꾸준히 코딩하는 습관을 이어나가면서 React + Node.js + MongoDB 조합으로 사이드 프로젝트를 만들어보면 어떨까 싶다. 기존에 만들었던 프로젝트를 Hooks, Redux를 사용해서 리팩토링 해보는것도 좋을 것 같고. 함수형 프로그래밍에 익숙해지는것도 소소한 계획이다. 남은 2개월도 알차게 보내자!


@Reese
Sin Prosa Sin Pausa