모던 자바스크립트 Deep Dive | 이웅모 강사님과의 수업 준비

Namgung Jong Min·2022년 10월 4일
0

모던 자바스크립트 Deep Dive 강의 준비

약 1개월 간의 Connecto 전반부 강의가 끝나고, 약 2주의 준비 기간이 주어졌다. 2주일 후부터는 이웅모 강사님과 함께 JavaScript 강의가 시작된다. 사실 이 책이 JavaScript의 정석과 같은 책이기에 그 저자에게 수업을 듣는다는 것이 너무나도 기대된다.

오늘 이웅모 강사님께서 오셔서 2주 후 수업방식과 그 전까지 어떻게 수업을 준비해야 하는지에 대해 말씀해주고 가셨다.

$ 매 수업마다 발표라고?!

이웅모 강사님의 수업 방식은 러버덕과 발표위주의 수업, 그리고 피드백이었다.

매주 세번의 수업이 있고, 수업 전날 정해진 곳까지 "모던 자바스크립트 Deep Dive" 책을 통해 심도있게 학습한다. 책에 한정되지 않고 키워드와 연관된 부분들을 깊게 파고들어 각자가 공부한 이후에 수업 날 그것들을 다른 사람에게 설명할 수 있어야 한다.

공부한 내용을 기반으로 오전 시간에 팀원들과 러버덕을 한다. 러버덕을 하는 것은 자신의 지식을 다른 사람에게 전달하려 하다보면 알고있다고 생각했던 것들도 완전하지 않음을 느낄 수 있다고 한다. 그렇기에 애초에 다른사람에게 설명할 수 있는 것을 목표로 공부하게 되면 피상적인 지식이 아니라 정말 내것으로의 지식을 얻을 수 있다. 그렇게 설명과 의견 교환을 반복하면서 지식들을 숙달함과 동시에 자기가 미처 공부하지 못했던 부분까지도 찾아낼 수 있다고 하셨다.

오후에는 공부한 내용을 학우들 전체와 이웅모 강사님 앞에서 발표를 한다. 발표를 통해 내가 어디까지 파고들어 공부했는지, 또 올바르게 공부했는지를 학우들과 강사님께 확인받고 이후에는 이웅모 강사님께서 공부한 것에 대한 피드백을 해주시는 방식이다.

처음에는 매번 공부한 내용을 다른 사람 앞에서 이야기 해야 한다는 것이 큰 부담이었지만, 알고만 있는 것과 다른 사람을 이해시킬 수 있게 공부하는 것이 큰 차이가 있다는 것을 강사님께서 역설하셨고, 도움이 된다는 것에 공감했기에 최선을 다해 수업을 따라가보기로 하였다.

$ 2주간의 수업 준비

이웅모 강사님께서는 이번 2주를 인생에서 가장 최선을 다했던 2주로 여길 정도로 노력해야한다고 하셨다. 특히 그 말씀에 걸맞게 요구사항도 엄청났다.

강사님의 요구사항은 가능한 2주동안 "모던 자바스크립트 Deep Dive"책을 완독할 것. (최소치는 15장'218p)

처음엔 '이 두꺼운 책을?' 이라고 생각했다. 너무 아득한 목표라 느꼈지만, 이어지는 강사님의 말씀에 안도의 한숨을 내쉬었다.

강사님께서 원하시는 것은 책에 대한 완전한 이해가 아닌 속독. 앞으로 이어질 수업을 위해 매 챕터를 음미하며 정성껏 읽으라는 것이었다. 내가 무엇을 알고 모르는지, 이 키워드의 내용엔 어떤 깊이의 다른 주제가 숨어있는지를 미리 책을 읽어보며 느껴보라는 것이었다.

먼저 책을 한번 읽어본 뒤 매일 정해진 챕터를 탐독할 때 얻을 수 있는 것이 더욱 많을 것이라 하셨다. 그렇다 하더라도 아득한 목표임에는 틀림이 없다...

$ 학습에 앞서

책을 본격적으로 읽기 전 "들어가며"에서 강사님께서 자바스크립트를 대하는 자세와 학습방법에 대한 조언을 해주셨다.

JavaScript의 특징

JavaScript는 친절한 언어이다. 에러가 적고 작은 실수 또한 엔진 내부에서 암묵적으로 처리해주는 것으로 대응한다.
그러나 이것이 오히려 JavaScript의 내부 동작을 이해하는 것을 어렵게 한다.

이것은 JavaScript의 탄생 목적이 타 언어들과 다르기 때문이다. 타 언어들이 애플리케이션 개발에 초점을 맞춘 언어이며 범용적 언어인 반면, JavaScript는 웹페이지의 단순 보조 기능 처리를 위해 탄생하여 극히 제한적인 언어였기 때문이다.

그러나 현재 JavaScript는 더 이상 제한적 용도의 언어가 아니다. 프론트엔드와 백엔드 영역의 프로그래밍 언어로 사용될 수 있는 범용 프로그래밍 언어인 것이다. 따라서 학습 방법에 있어서도 이에 걸맞게 변해야 한다고 역설하신다. JavaScript의 기본 개념과 동작 원리를 깊게 학습하는 것이 중요하다.

JavaScript의 기본 개념과 동작 원리 이해의 중요성

프로그래머의 역할

  • 요구사항을 기반으로 문제를 해결하기 위한 방안을 고안 / 코드 구현
  • 자신이 구현한 코드가 컴퓨터 내부에서 어떻게 동작할 것인지 예측 가능해야 한다.

프로그래머의 역할을 충실히 해내기 위해서는 언어에 대한 정확한 이해가 필요하다. 단순히 동작만 구현하는 코드는 신뢰할 수 없고, 유지보수하기 까다로운 코드가 될 뿐이다. 또한 문제 해결 능력의 성장도 불가능하다.

학습방법

  1. 이해의 영역
  • 용어 / 개념 / 문법
    - 키워드 중심의 학습.
    - 완벽한 이해보다는 지속적인 학습.
  • 컴퓨팅 사고
  1. 숙달의 영역
  • 의도적 연습
    - 어떤 것을 연습할지 확실히 인식.
    - 도전적 목표 설정 : 구체적이며 이전에 하지 못했던 것을 성취하고자 하는 의도.
    - 피드백 : 하루 학습으로 실제 개선 여부를 지속적으로 확인.
  • API
  • 프레임워크 / 라이브러리
  1. 경험의 영역
  • 프로젝트를 통한 가상 경험

위 3개의 사이클을 순환하여 반복하면서 이해의 반경을 점진적으로 넓혀가는 것, 즉 지속적 개선을 통한 성장이 진정한 학습이다.

빨리 가는 유일한 방법은 제대로 가는 것이다.
"클린코드"의 저자 로버트 C 마틴

$ 준비 기간 리딩

10/04

profile
토끼굴을 정복하는 개발자

0개의 댓글