Udemy 강의 3개 완강했는데 혼자서 프로젝트를 시작하면 하얀 화면 앞에서 멈춘다. npx create-next-app까지는 치겠는데, 그다음에 뭘 해야 할지 모르겠다. 강의에서는 다 이해했다고 생각했는데, 막상 혼자 하려니까 아무것도 기억이 안 난다. Why?
이 글은 나도 겪었고, 내 주변 주니어 개발자들 대부분이 겪은 이야기다. 그리고 한 가지 먼저 말해두고 싶은 건, 이건 머리가 나빠서가 아니다. 학습 방법이 잘못된 거다.
강의 10시간, 코딩 1시간
작년에 한 후배가 카톡으로 이런 메시지를 보내왔다. "형, 저 React 강의 하나 더 들으려고 하는데 추천 좀 해주세요." 물어봤다. "지금까지 뭐 들었어?" 대답이 돌아왔다. Udemy에서 React 강의 2개, YouTube에서 Next.js 크래시 코스 1개, 그리고 이번에 React + TypeScript 강의를 새로 시작하려고 한다고. 총 수강 시간이 60시간쯤 됐다.
"그래서 뭐 만들어봤어?" 하고 물었더니 조용해졌다.
이게 핵심이다. Input과 Output의 비율이 완전히 거꾸로 돼 있다. 60시간 동안 강의를 봤으면 코딩은 얼마나 했을까. 강의 따라 치는 시간 빼고, 진짜 스스로 뭔가를 만든 시간. 아마 거의 없었을 거다.
비유하자면 이런 거다. 수영을 배우고 싶은데 수영 관련 YouTube 영상만 200시간 본 것이다. 자유형 팔 동작, 발차기 타이밍, 호흡법까지 이론은 완벽하게 안다. 근데 물에 들어가면? 가라앉는다. 당연하다. 몸이 안 해봤으니까.
코딩도 똑같다. 뇌가 아는 것과 손이 아는 것은 완전히 다른 영역이다.
"따라 치기"라는 착각
여기서 반론이 나올 수 있다. "저는 강의 보면서 코드 다 쳐봤어요." 맞다, 많은 사람들이 영상 멈추고, 코드 따라 치고, 다시 재생하는 방식으로 공부한다. 나도 그랬다.
2022년쯤, 처음 React를 배울 때 Udemy에서 가장 인기 있는 강의를 샀다. 섹션마다 영상을 멈추고 열심히 따라 쳤다. 에디터 화면 왼쪽에 강의 영상, 오른쪽에 VS Code를 띄우고 한 줄 한 줄 옮겨 적었다. 강의 끝나면 프로젝트가 완성돼 있었고, 뿌듯했다. "나 React 할 줄 아는데?"라는 자신감도 생겼다.
그리고 2주 뒤 회사에서 간단한 CRUD 페이지를 하나 만들라는 태스크가 떨어졌다. 진짜 간단한 거였다. 리스트 조회하고, 추가하고, 삭제하는 것. 강의에서 이것보다 훨씬 복잡한 걸 만들었었다. 근데 손이 안 움직였다.
useState를 써야 하는 건 알겠는데 state 구조를 어떻게 잡아야 할지 모르겠고. API 호출은 useEffect에서 하면 된다는 건 알겠는데 loading, error 상태 처리를 어디서 어떻게 해야 할지 감이 안 왔다. 결국 강의 코드를 열어서 참고했다. 사실상 다시 베끼고 있었다.
문제가 뭐였을까. 따라 치기는 "타이핑 연습"이지 "프로그래밍 연습"이 아니다. 강의를 보면서 코드를 칠 때, 내 뇌가 하는 일은 "화면에 있는 글자를 키보드로 입력"하는 것뿐이다. 왜 이 코드가 여기에 있는지, 이 구조가 아니라 다른 구조로 했으면 어떻게 됐을지, 이런 질문은 따라 치는 과정에서 전혀 발생하지 않는다.
그러면 강의는 아예 안 봐야 하나?
아니다. 강의는 쓸모 있다. 새로운 개념의 전체 그림을 빠르게 파악하는 데는 강의만 한 게 없다. 문제는 강의 자체가 아니라, 강의에서 멈추는 것이다.
좋은 학습 흐름은 이렇다. 강의에서 개념 하나를 배운다. 그리고 바로 그 개념을 다른 맥락에 적용해본다. 강의에서 Todo 앱에 useReducer를 쓰는 걸 봤다면, 나는 장바구니 상태 관리에 useReducer를 써본다. 강의 코드와 완전히 다른 도메인, 다른 데이터 구조에 같은 개념을 적용하는 순간 진짜 이해가 시작된다.
이때 중요한 건 에러를 만나면 바로 답을 찾지 않는 것이다.
나는 후배들한테 이런 규칙을 권한다. 에러가 나면 최소 20분은 혼자 씨름해보라고. 에러 메시지를 읽고, 뭐가 잘못된 건지 가설을 세우고, 직접 시도해본다. 20분이 지나도 모르겠으면 그때 검색하거나 ChatGPT를 써도 된다. 근데 대부분의 경우 20분 안에 혼자 해결하게 된다.
이 20분이 바로 실력이 느는 시간이다. 편하게 강의 보면서 고개 끄덕이는 10시간보다, 에러 메시지 앞에서 땀 흘리는 20분이 훨씬 더 많은 걸 가르쳐준다.
공식 문서라는 보물
한 가지 꼭 하고 싶은 이야기가 있다.
React를 배우고 싶으면 react.dev를 읽어라. 진심이다. 2023년에 리뉴얼된 React 공식 문서는 내가 본 어떤 유료 강의보다 잘 되어 있다. 개념 설명 → 예제 코드 → 직접 해보는 챌린지까지 구성이 완벽하다. 심지어 "Deep Dive"라는 접힌 섹션에서 내부 동작 원리까지 설명한다.
근데 사람들이 공식 문서를 잘 안 읽는다. 왜? 재미없으니까. 영상은 누가 말해주고 화면이 바뀌고 하니까 수동적으로 앉아 있어도 뭔가를 배우는 것 같은 느낌이 든다. 문서는 내가 능동적으로 읽어야 하고, 모르는 부분은 스스로 찾아봐야 한다.
근데 바로 그 "귀찮음"이 학습의 본질이다.
공식 문서를 읽는 능력은 개발자로서 평생 써먹는 기술이다. 어떤 라이브러리를 쓰든, 어떤 프레임워크가 새로 나오든, 결국 공식 문서를 읽고 파악하는 사람이 제일 빠르다. 강의가 나올 때까지 기다리는 사람은 항상 한 발 늦다.
설명할 수 없으면 모르는 거다
내가 블로그를 쓰기 시작한 이유가 이거다.
2023년 말, React Server Components가 뭔지 동료한테 설명하려다가 입이 안 떨어졌다. 분명 문서도 읽었고 Dan Abramov의 글도 봤는데, 막상 "그래서 Server Components가 뭔데?"라고 물으면 "음... 서버에서 렌더링하는... 그런 컴포넌트...?"라고밖에 대답 못 했다. 창피했다.
그래서 블로그에 글을 써보기로 했다. 쓰다 보니까 내가 정확히 어디서 이해가 끊기는지가 보였다. "Server Components는 클라이언트에 JavaScript를 보내지 않는다"까지는 알겠는데, "그러면 interactivity는 어떻게 처리하지?"에서 막혔다. 그 막힌 지점을 파고들어서 이해하고, 다시 글을 쓰고. 이 과정을 반복하니까 진짜로 이해가 됐다.
Richard Feynman이 말한 거랑 정확히 같다. 뭔가를 제대로 이해했는지 확인하는 가장 좋은 방법은 다른 사람에게 간단하게 설명해보는 것이다. 설명이 막히는 지점이 이해가 부족한 지점이다.
블로그가 부담스러우면 노션에 비공개로 써도 된다. 중요한 건 공개 여부가 아니라 "글로 정리하는 행위" 자체다. 머릿속에 떠다니는 흐릿한 이해를 문장으로 만드는 순간 구멍이 드러난다.
좋은 강의 vs 나쁜 강의
모든 강의가 같지는 않다. Tutorial hell에 빠지게 만드는 강의가 있고, 거기서 빠져나오게 도와주는 강의가 있다.
나쁜 강의는 이렇다. 강사가 코드를 치고, 수강생은 따라 친다. 처음부터 끝까지 완성된 프로젝트를 같이 만든다. 결과물은 멋지지만 수강생 혼자는 그 결과물의 1%도 재현 못 한다. 이런 강의는 "보는 즐거움"을 주지, "배우는 고통"을 주지 않는다.
좋은 강의는 다르다. 개념을 설명하고, 작은 연습 문제를 준다. "이 개념을 사용해서 이런 걸 직접 만들어보세요." 수강생이 막히게 놔둔다. 힌트를 조금씩 준다. 그리고 나서 풀이를 보여준다. 이 과정에서 수강생은 불편하다. 짜증 난다. "그냥 답을 알려줘"라고 생각한다.
그 짜증이 학습이다.
Kent C. Dodds의 Epic React나 Josh Comeau의 CSS for JavaScript Developers 같은 강의가 이 방식이다. 비싸다. 근데 강의 보고 나면 진짜로 혼자 만들 수 있게 된다. 차이는 "편하게 봤느냐"가 아니라 "불편하게 연습했느냐"에 있다.
막히는 순간이 성장하는 순간이다
이 글에서 제일 하고 싶은 말은 이거다.
강의를 볼 때는 모든 게 매끄럽다. 강사의 설명을 따라가면 논리가 흘러가고, 코드가 돌아가고, 결과가 나온다. 그래서 편하다. 근데 편하면 뇌가 일을 안 한다.
실력이 느는 건 막힐 때다.
빈 파일 앞에서 어디서부터 시작해야 할지 모르겠을 때. 에러 메시지가 뜨는데 무슨 소린지 하나도 모르겠을 때. 분명 맞는 것 같은데 왜 안 되는지 이해가 안 될 때. 이 순간들이 뇌가 진짜로 연결을 만드는 시간이다. 시냅스가 형성되는 건 편안할 때가 아니라 긴장할 때다.
나도 가끔 주말에 사이드 프로젝트를 하다가 3시간 동안 한 줄도 진전 못 하는 날이 있다. 그럴 때 "나 왜 이러지, 이것도 못 하나" 하면서 자괴감이 든다. 근데 돌이켜보면 그런 날이 있고 나서 한두 주 뒤에 비슷한 문제를 만나면 훨씬 빠르게 풀게 된다.
그러니까 혹시 지금 Udemy 강의를 하나 더 결제하려고 하고 있다면, 잠깐 멈추고 생각해봤으면 한다. 진짜 필요한 게 새로운 강의인지, 아니면 빈 에디터를 열고 뭐라도 만들어보는 용기인지.
처음엔 못생긴 코드가 나올 거다. 강의에서 본 것만큼 깔끔하지도 않고, 구조도 엉망이고, 뭔가 돌아가긴 하는데 왜 돌아가는지 100% 설명은 못 하는 그런 코드. 근데 그게 바로 네 코드다. 베낀 게 아니라 네가 만든 거다.
그 못생긴 코드 한 줄이 강의 10시간보다 값지다.
