"기록하고 회고한다. 회고를 반영한다. 이것이 내가 자라는 방식이다." 3년 전부터 나를 이렇게 설명하곤 했다. 이제까지의 수많은 회고가 현재의 나를 지탱하고 있다. 회고는 성장의 큰 자양분이 되었다. 올해도 회고로 마무리한다.
"공시생 → 디지털 마케터 → 드디어 프론트엔드 개발자"
2016년 11월, 6개월간 준비하던 지역인재 추천 전형 준비를 그만뒀다. 미래를 고민하던 찰나 개발자에 대해 막연한 동경을 했다. 예를 들면 끊임없이 학습해야 하는 환경(학습하는 시간을 즐기고 선호한다.), 실력으로 평가받는 문화, 성장을 중요하게 생각하는 사람들, 자율성, 뭔가 전문가의 느낌(?)이 내가 가진 개발자에 대한 환상이었다. 막연한 동경을 가지고 개발자가 되고 싶었지만 3개월간 개발 공부를 통해 인사담당자에게 "나를 채용해야 하는 이유"를 명확히 설명할 수 없다고 생각했다. 3개월 뒤에는 당장 돈을 벌어야 했던 상황(당시 3개월 정도의 공부 기간을 버틸 자금이 있었기에 3개월이다.)이었고, 나를 채용해야 하는 근거를 만들기 위해 공부할 시간과 자금이 부족했다. 취업이 시급했고, 최대한 빨리 내가 시작 할 수 있는 일 중에 최대한 개발과 밀접한 곳에서 일하자고 생각했다.
당시 판단하기에 "빠른 시간안에 내가 할 수 있는 일 중에 최대한 개발과 밀접한 일"은 "디지털 마케터"였다. (패스트 캠퍼스의 뛰어난 페북 광고 때문에 내린 판단이었다) 2017년 7월 대학원 조교를 하며 모은 돈을 고스란히 패스트 캠퍼스의 디지털 마케팅 스쿨(3개월)에 바쳤다. 이후 디지털 마케팅 대행사에서 들어가 웹 데이터 분석 컨설팅 직무로 1년 4개월 일했다. 웹 데이터 수집을 위해 GA 그리고 GTM 이라는 툴을 썼는데 해당 툴을 사용하기 위해 브라우저의 DOM 구조, Event, HTML, JS 지식이 위해 필요했고 자연스레 프론트엔드 지식을 학습하게 되었다.
1년 4개월 동안 직장을 다니며 나름으로 프론트엔드 개발자가 되기 위해 준비했지만 아직 부족한 점이 많았다. 부족한 점을 메우기 위해 코드스쿼드 웹 프론트엔드 마스터즈 코스(6개월)를 수강했고, 올해 2019년 12월 11일 프론트엔드 개발자로 새로운 커리어를 시작했다. (코드스쿼드 과정에 대한 회고는 따로 쓰고(미루고?) 있는 중이다)
사실 이 여정 동안 "이러다 망할 수도 있다"라는 생각을 자주 했다. 분야를 바꿀 때마다 매번 심장이 쫄깃쫄깃 했다. 그런데도 이런 여정이 가능했던 가장 큰 이유는 "기록"과 "회고" 다. 기록을 통해 한 달 나의 지출을 파악해 한 달에 평균적으로 얼마나 소비하는지 파악해 학습 기간을 버틸 돈을 확보했다. 또한 내게 주어진 학습 시간과 그 시간으로 얻을 수 있는 학습 성과를 나름으로 파악한 후 개발자인 지인을 통해 필자의 직무 전환 가능 유무를 치열하게 고민했다.
"내가 하고 싶은 일"이라는 동기는 물론 중요하다. 하지만 해당 기간의 어마어마한 학습량과 남아있는 통장 잔고의 감소율 보다 성장이 더딘 나를 마주할 때 느끼는 좌절감의 크기는 "하고 싶은 일"이라는 동기를 쉽게 무너뜨린다. 필자와 같이 아무런 지원을 받을 수 없는 상황에서 직무 전환은 리스크가 더 크다. 때문에 "하고 싶은 일에 대한 열정" + "리스크 테이킹(Risk taking)" 이 필요하다. 리스크 테이킹(Risk taking)에 기록과 회고가 큰 도움이 됐다. 기록과 회고를 통해 내 상태를 명확하게 진단할 수 있었는데. 당시의 내린 판단은 다음과 같았다. 프론트 개발자가 되기 위해서는 퇴사 이후 최장 1년의 시간이 필요하고, 한 달 지출의 경우 많이 썻을 경우 120만 원이니까 코드스쿼드 6개월 교육비 + 720만 원이 필요하다. (나머지 기간은 지방에 내려가서 지출을 줄이며 버틸 수 있다) 시간과 비용이 명확해지니 결정이 쉬웠고, 학습 기간에도 돈을 벌지 않고 있다는 불안감에서 벗어날 수 있었다.
시간 사용
1. 잡무
의미 없는 유튜브 시청, SNS, 뉴스, 댓글 보는 시간이 100시간 줄었다. 보통 대다수 잡무 시간은 좌절감으로 비롯되어 시작된다. 올해에는 좌절감을 마주할 때 해당 감정 알아차리고 제자리로 복귀하는 시간이 빨랐다. 나는 이를 "회복 탄력성" 이라 정의한 데 명상, 운동, 회고의 3요소가 회복 탄력성을 높이는 데 도움이 되었다. 그러나 어떻게 하면 좌절감에 덜 빠지며 학습을 유지할지에 대한 전략은 아직 부족하다. 내년에는 이를 정비하도록 하자. 줄었지만 400시간 가까이 되는 잡무시간은 여전히 많다. 내년에는 300시간 이하로 잡무 시간을 줄여보자.
2. 학습
시간이 많이 늘었다. (물론 공부를 위한 시간이었기 때문에 당연하다). 학습의 질도 중요하지만 절대량은 더 중요하다. 내년에는 일을 하느라 학습할 시간이 줄어들지만 최대한 일과 학습을 병행할 수 있는 환경을 세팅하여 학습 시간을 확보하자. 일에 치여 학습을 게을리 하지 않아야 한다.
3. 운동
시간이 40시간 늘었다. 건강해지기 위해 더 많은 노력을 했다는 증거이다.
4. Social
G-pause 운영진으로 참여해서 "마음챙김으로 미움과 혐오의 방에 불을 밝히기" 라는 세션을 진행했다. 꾀나 많은 사람들에게 좋은 영향을 줄 수 있었서 좋았다. 코드스쿼드 동료들을 만났는데 모두 좋은 친구들이여서 좋았다. 앞으로도 자주 만나서 이야기를 나눌 생각이다. 2018년 좀 더 사회적 인간이 되기를 바랬는데 social(사람들과 대화를 나누고 만난) 시간이 늘었다. 성공이다.
5. 플랜, 피드백
일일 회고 기간이 1000일을 넘었다. 그 기간동안 참 많이 성장했다. 가능한 이런 형식의 회고를 유지할 생각이다.
6. 명상
명상 시간이 감소 했다. 개인 데이터를 분석한 결과 "명상, 운동, 회고" 시간의 증가할 수록 내가 느끼는 삶의 질이 높다. 명상 시간을 보다 높이자. 잡무 400시간을 쪼개면 얼마든 가능하다.
학습 회고
학[學] > 습[習] 보다 습[習] > 학[學]
본디 학습은 배우고 익히는 것인데, 배우기만 하고 배운 것을 익히는 과정이 매우 부족했다. 이는 오래된 나의 학습 습관인데 개선이 필요하다. 안다고 생각하지만, 해당 내용을 실무에서 코드로 구현해야 하는 상황이 오면 막막해지는 때가 빈번했다. 익히지 않아서였다. ㅌㅇ 영상 중 우아한 형제들의 김민태 님이 의식적 반복이 매우 중요하다고 말씀해 주신 바가 있는데, 매우 공감한다. 내년에는 최대한 공부 주제에 대한 실습환경을 구축하고 코드로 구현하면서 공부하는 습관을 들이자. 눈으로만 쓱 관찰하는 공부는 에빙하우스의 망각 곡선에 무너진다. 최대한 글로 정리하고 코드로 구현하며 공부하도록 하자. 핵심은 "인출"이다.
선택과 집중
기본이 부족한데 저변을 넓히려고 했다. 이것저것 관심을 두고 읽었지만, 현재 기억나는 게 별로 없다. 당장 사용할 환경이 아니었기에 지속해서 학습할 수 없었다. 시간을 꾀나 썼는데 성과가 없다. 이제는 좀 더 본질적이며 실무적인 공부에 집중해야 한다. 일단은 하나를 깊이 있게 공부한 뒤 차근차근 저변을 높이는 전략을 취하자. 회사에서 사용하는 REACT, JS, CSS를 자신 있게 다룰 수 있는 순간이 될 때까지 다른 분야의 학습은 자제(필요한 경우에 사용을 위해 공부하는 것은 OK)하도록 하자. 시간은 한정되어 있고 보다 중요한 것에 시간을 써야 한다.
학습 시간 구성
JS, REACT, HTML+CSS, 프론트엔드(특정할 수 없지만 프론트와 관련된 학습) 학습시간이 많았다. 결과적으로 현재 머릿속을 구상하는 지식이다. 더 많은 시간을 할애해 직접 실습했기 때문이다.
이외에 컴퓨터 사이언스 관련 공부를 했지만 의미 있는 성과를 거두지 못했다. 코드로 구현한 결과물이 없어서였다. 실체가 없다 보니 모호한 상태에서 학습을 유지했고, 더 어려워졌다. 구체성이 없는 학습은 지향하자. 특히 어려운 것을 학습할 때는 더욱 코드로 결과물을 만드는 학습 방법을 채택한다.
이외에 잡다하게 여러 가지를 시도 C/C++, 컴퓨터 구조, OS, HTTP에 대해 공부했으나 이 역시 의미 있는 성과를 거두지 못했다. 정리하지 않았고 또 지속해서 학습하지 못해서였다. 먼저 실무에 쓸 수 있으며 핵심적인 내용을 공부하도록 하자. 선택과 집중이 필요하다.
작성했던 블로그
- Custom Promise 구현으로 프로미스 파혜치기
- React 빌드(webpack) 환경 직접 구성하기 without CRA
- 검색 자동 완성 UI 만들기
- Carousel UI 만들며 observer 패턴 학습하기
- passport, localStrategy의 동작에 대해 이해하기
들었던 강의
- 인프런 정재남 님의 Javascript ES6+ 제대로 알아보기 초급 + 중급
- 인프런 React 로 NodeBird SNS 만들기
- 생활코딩 리눅스 강좌
- 생활코딩 git 강좌 시리즈
- 벨로퍼트와 함께하는 모던 리엑트
- 코드스피츠 CSS, JS 강좌 다수
봤던 책들
- 최신 표준 HTML+디자인
- CSS Missing Manual(40% 읽다 실패) → 전부 읽기 보다 필요한 부분을 우선적으로 읽자
- Code, 찰스 펫졸드 (50% 읽다 실패)
- 자바스크립트로 하는 자료 구조와 알고리즘, 배세민(Sammie Bae) (20%)
- 자바스크립트 자료구조와 알고리즘, 로이아니 그로네르 지음, 이일웅 옮김
- TCP/IP 쉽게 더 쉽게
- 하루 3분 네트워크 교실
- 읽기 좋은 코드가 좋은 코드다(재독 필요)
- 객체지향의 사실과 오해(90%)
- 손에 잡히는 정규 표현식
- 그림으로 배우는 Http & Network Basic - HTTP
- OS가 보이는 그림책
- 인사이드 자바스크립트(재독, 뒷 부분 재 구현 필요)
- Node js 교과서(40%, 추후 재 도전 필요)
- 리얼월드 HTTP(다 읽었으나 거의 이해하지 못함 Go 언어 습득 이후 재도전 필요)
- 모던 자바스크립트 입문(50% 재도전 필요)
- Hello Coding 그림으로 개념을 이해하는 알고리즘
2018 목표 점검
-
Gatsby 탬플릿 활용 기술 블로그 완성
-
구글 애널리틱스 및 GTM 강의 및 대행서비스 시작 → 실패
-
프론트 개발자로 취업하기
- 2020년 2월 이전
- 스타트업 씬에서 이름을 들어본 회사
-
영어로 듣고 읽는데 불편함 없애기
- 관심 분야 블로그 자료 20분 안에 읽기 → 20분은 아니지만 불편하지 않음
- Youtube 영상 70% 이상 이해하기 → 70%는 아니지만 매우 개선됨
-
개발 서적 or 강의 12개
-
비 개발 서적 12권 → 실패
작년 보다 중요하다고 생각되는 것들을 우선했고 결과를 냈다. 계획 오류에 덜 빠진 것 같아 좋다. 달성 가능한 목표인지 아닌지 판단하는 능력이 생각보다 중요하다고 생각하는데 해당 능력이 더 좋아진 것 같아 뿌듯하다.
2019 목표 설정
1. 추상: 협업하고 싶은 프론트엔드 개발자
내가 처리하는 일에 대해 타인이 신뢰하며, 또 타인에게 좋은 영향을 줄 수 있는 개발자가 되고 싶다. 그러기 위해 다음의 내용이 필요하다.
업무에 필요한 기본적 Skill 향상, 작업 속도 향상
- 성능과 유지보수를 해치지 않는 CSS 작성, 퍼블리싱 관련 작업 속도의 향상
- React를 사용한 프로젝트 구조와 재사용 가능한 컴포넌트, Custom Hooks
- 객체지향 자바스크립트와 함수형 자바스크립트에 대한 이해
- 타입스크립트에 대한 이해
읽기 좋은 코드
- 라이브러리 코드 많이 읽기
- 타인의 코드에 리뷰 많이 달기, 리뷰를 달기 위한 시간 확보를 위해 역시 작업 속도 향상 필요
안전한 코드
- test 코드 작성
- test 방법론에 대한 학습 필요
컴퓨터 과학 관점의 비용을 줄이는 사고
- 알고리즘 풀이
- 컴퓨터 과학에 대한 포괄적인 학습
2. 구체적 목표들
필수 달성
-
Material UI Clone
-
회사 코드 컨벤션 확립 및 eslint, prettier, editconfig 설정 파일 정리
-
Velopert 리엑트를 다루는 기술 읽기
-
코드스피츠 객체지향 관련 강의 듣기
-
자바스크립트 패턴과 태스트 읽기
-
자바스크립트 테스트와 디버깅 읽기
-
사파리, 크롬 개발자 도구 사용법 완벽하게 익히기 관련 블로그 작성
-
Udemy Typescript 강좌 듣기
-
야근 비율 줄이기 한달에 6회 이하(작업 속도 향상의 목표)
-
회사 프로젝트 webpack 환경 직접 설정 하기
-
테스트에 대한 학습(추후 구체화 )
-
Redux, Mobx 를 활용한 프로젝트 각각 하나씩 완성 해당 프로젝트에서는 styled component 사용할 것
-
디자인 시스템(Storybook 활용) 만들어 보기
-
알고리즘 100문제 풀기 (leet code medium 급의 문제들을 제한 시간안에 풀 수 있을 정도의 실력)
추가
- CSS 완벽가이드 읽기
- 패스트캠퍼스 Node 강의 듣기
- HeadFirst SQL 읽기
- 데이터베이스 첫걸음 읽기
- AWS 관련 학습(추후 구체화)
- CI/CO 관련 학습(추후 구체화)
- HTTP 완벽 가이드 읽기
올해 소소한 생각들
좀 더 자신을 아낄 것
각종 컨퍼런스 발표 연단에 서는 분들, 위대한 작업물을 공개하는 개발자분들을 동경하며 나 자신의 부족함을 질책하는 시간이 많았다. 2019년 나는 나를 항상 부족한 상태에 있다고 생각했다. 그러나 그런 생각들은 크게 도움이 되지 않았다. 그 생각들이 동력이 되어 더 열심히 하기보다는 좌절감을 더했고 자주 절망했다.
사실 타인과 비교는 무의미하다. 모두가 각자 다른 상황에 부닥쳐있다. 타인과 동일한 환경을 가질 수도 없다. 일찍 시작하지 않은 것을 후회해도 소용이 없다. 시간은 불가역적이다. 그저 오늘 노력하고 있는 자신을 긍정하며 다시 앞으로 나가는 방법뿐이다. 오늘 노력했다면 그것으로 됐다. 더 자신을 깎아내리지 말자. 내년부터는 자신을 좀 더 아끼는 생각을 하자.
설계 설계 설계!!!
코드스쿼드 초기에는 설계하고 고민하는 시간이 많았는데, 시간이 지날 수록 고민하지 않고 타인의 코드를 참고해서 위기를 모면하는 경우가 많다. 설계 하자. 설계 하자. 설계하자.
차근차근
많은 것을 단 시간에 해야한다는 생각에 마음을 급하게 먹고 진행했던 것들이 많다. 그러나 그런 일이 잘된 기억이 없다. 보다 차근 차근 실행하자. 그게 오히려 더 빠른 길임을 항상 기억하자.
실험 가능한 환경을 만들 것
학습에는 언제나 실험 가능한 상황을 만들자. 눈으로 이해하는 것을 실제 이해하는 것이 아니다. 그냥 그런 느낌을 받을 뿐이다. 실제 코드를 만들고 디버깅하고 하면서 흐름을 파악해야 한다. 올해 실험을 통해 이런 학습 방법이 더 유효함을 많이 느꼈다. 앞으로 꼭 실험 가능한 환경에서 학습하자.
블로그 정리
블로그로 썻던 내용은 시간이 오래되도 조금만 다시 돌아보면 금세 기억이 되살아 난다. 중요하고 반복해야 할 것을 최대한 블로그 글로 작성하자. 시간이 걸리지만 학습효과가 엄청나다. 물론 부담이 생기지만, 잘게 나눠서 쓰면 부담을 줄일 수 있다.
올해 감사한 것들
- 옆에서 지속적으로 응원을 해준 그 사람
- 코드스쿼드 마스터 크롱, 호눅스, JK 그리고 동료들
- 언제나 몸과 마음을 기댈 수 있었던 가족
- 버텨준 몸과 마음
- 마음챙김에 큰 영향을 주신 마보 유정은 대표님 및 G-gpause 운영진 분들
이상으로 2019년 회고를 마칩니다. 읽어주셔서 감사합니다.