잘하고 싶었다. 내 나름대로 성장하는 길이라고 생각했다. 들인 시간만큼 실력이 늘었다고 말할 수는 없지만 나만 알고 있는 시간을 부정하고 싶지 않다. 그동안 학습한 콘텐츠에 대해 간략한 후기를 작성한다.
넷플릭스 클론
학습의 의미는 배워서 익힘. 즉, 배우는 게 끝이 아닌 배운 지식을 자주 활용하여 능숙하게 만듦을 의미한다.
클론. 프론트엔드 개발의 구조를 배우고 싶다. 타인의 정답으로 나의 정답을 찾는다. 기록보다 실행.
넷플릭스 클론 코딩을 하는 동안 작성했던 글의 인용이다. 넷플릭스 클론 코딩의 목적은 간결하고 분명했다. 따라서 충분한 답을 얻을 수 있었으며, 기록보다 실행이라고 적어놨지만 정리도 잘 해놨다.
UI를 컴포넌트 계층 구조로 나누지 않고 컴포넌트를 만들었다.
최근 프로젝트를 마치고 작성했던 글의 인용이다. 첫 번째 인용과 비슷한 수준의 문제를 겪고 있는 것처럼 보인다. 학습한 내용을 나의 것으로 만들지 못했기 때문이다. 새로운 지식을 배우는 것만으로는 개발 실력이 향상되지 않는다. 잘 배웠으면 자주 써보고 능숙해져야 한다.
JavaScript30
깃허브 기록을 보니 넷플릭스 클론과 JavaScript30을 같은 시기에 진행했다. 아마 넷플릭스 클론만 계획하고 있었는데 프로그래머스의 Dev-Matching에 참여하기 위해 급하게 자바스크립트를 학습했던 것 같다. 심지어 블로깅까지 꾸준히 했으니 넷플릭스 클론으로 익힌 스킬을 실전에 적용해 볼 생각은 아예 없었나 보다.
JavaScript30은 미리 작성되어 있는 HTML, CSS 코드 위에 JavaSciprt로 여러 기능을 구현해 보는 챌린지다. 그런데 프론트엔드 개발자로서 UI를 만드는데 쓸모가 있는 학습 과정은 아니었다. 실제로 챌린지를 마치고 Dev-Matching에 참여했는데 모듈의 개념을 몰라서 <script type="module">
코드 한 줄을 작성하지 못하고 구글링을 했다. 당연히 테스트는 떨어졌다.
필요할 때 쓸모가 있는 지식을 배워야 하며, 학습에는 JavaScript 학습
이라는 두루뭉술한 목적이 아닌 JavaScript, HTML, CSS로 UI를 만드는 학습
처럼 분명한 목적이 있어야 한다.
레딧 클론
레딧 클론의 목적은 새로운 기술 스택의 학습이었다. 목적은 분명했지만 무엇을 배웠든 투자한 시간 대비 실패한 학습이었다. 왜냐하면 14시간 분량의 콘텐츠를 학습하는 동안 영어를 번역하는 데 에너지를 다 썼고 블로깅을 하나도 못했기 때문이다. 차라리 한 달 영어 공부하고 한 달 코딩 공부했으면 더 좋았을 듯싶다.
블로깅에 대한 아쉬움은 시간이 지나고 새로운 프로젝트를 하면서 느꼈다. 학습했던 기술에 대한 기록이 전혀 없으니 공식 문서를 다시 봐야 했고, 기록해놓지 않은 어려운 기능 구현은 나의 실력으로 남아있지도 않았다.
설명할 수 없는 지식은 지식이 아니라는 말이 있다. 메타인지의 오류, 익숙한 것과 잘 아는 것은 다르다. 성장을 위한 학습은 이해와 통찰, 기록까지 남겼을 때 의미 있는 학습으로 마무리 된다.
개인 블로그 개발
완벽주의는 참 오랜 시간 나를 괴롭혀 왔다. 도대체 포트폴리오 용 개인 블로그를 만들겠다고 몇 개월을 새로운 기술을 배우는 데 소모했으며, 기획 단계에만 얼마나 매몰되어 있었는지. 정말 나의 체력이 버틸 수 있는 만큼 레퍼런스를 뒤지고 아이디어를 구상했다. 진짜 미친놈인가 싶다. 기획만큼 개발도 열심히 했지만 프로젝트에 필요한 근거 있는 기술이 아닌 호기심을 자극하는 새로운 기술 스택으로 프로젝트를 진행했고 디버깅에 시간을 많이 썼다.
개인 블로그는 작동하는 서비스와 거리가 먼 현실성 없는 기획, 독창적인 디자인에 대한 집착, 비효율적인 개발, 기능을 구현하는 데 부족한 역량, 너무나도 지쳐있던 멘탈 등 전반적인 프로젝트 관리의 실패로 결국 완성하지 못했다.
생각은 가만히 두면 걷잡을 수 없이 무한히 확장한다. 실행하지 않고 완성하지 못한 기획은 아무런 가치가 없다. 만족스러운 결과는 완벽한 과정이 아닌 시행착오를 통해 완성된다. 무엇보다 나 자신을 알고 수준에 맞는 개발을 해야 한다.
프로그래머스 과제 테스트
바닐라 자바스크립트만 가지고 설계부터 개발까지 완료해 보는 과정이다.
결국 핵심은 JavaScript다. 최신 프레임워크를 이용한 개발 실력도 중요하지만 자바스크립트의 배경과 ECMAScript specification 등의 학습이 탄탄한 기초가 되어줄 것이다.
사이드 프로젝트
프로젝트는 언제나 옳다. 회고 하나로 정리한다. ㅡ 프로젝트는 실패했다.
지난 시간을 돌아봤다. 나만 알고 있는 시간에 대해 허송세월을 보냈다고 자책했는데 아니었다. 과거의 기록을 하나씩 살펴보니 그때의 고민이 다시금 떠올랐고 누구보다 치열하게 학습했다. 마냥 잘못된 과정은 아니었다는 생각이 든다. 삽질인지 독학인지 알 수 없는 경험을 통해 학습의 핵심 포인트가 무엇인지 파악할 수 있었다.
- 학습의 의미는 배워서 익힘. 배웠으면 능숙하게 쓸 수 있도록 해야 한다.
- 지식의 실용성. 분명한 목적을 가지고 쓸모 있는 지식을 학습해야 한다.
- 익숙한 것과 잘 아는 것은 다르다. 학습한 내용을 설명할 수 있거나 기록해야 한다.
- 나 자신을 아는 게 우선이다. 프로젝트는 반드시 실행하고 완성할 수 있도록 기획하고 개발한다.
- JavaScript가 핵심이다. 기초가 탄탄해야 올바르게 성장할 수 있다.
1년간의 마라톤을 성공적으로 완주하지는 못했다. 하지만 앞으로 수십 년의 마라톤을 완주하기 위한 실패의 경험이라고 생각한다. 자신감은 자신과의 약속을 지킬 때 생긴다고 한다. 나와의 약속을 묵묵히 지켜나가자.