0. 들어가며
in 모던자바스크립트
자바스크립트의 태생적 특정
- 과도하다고 느껴질 만큼 친절한 프로그래밍 언어
- js 내부 엔진에서 암묵적으로 처리해주는 기능 많다.
- 이런 특징은 편리하기도 하지만 내부 동작을 이해하기 어렵게 한다.
- 태생이 웹페이지의 단순한 보조 기능을 처리하기 위한 제한적인 용도가 목적
- 프론트/백앤드 프로그래밍 언어로 사용할 수 있는 명실상부한 범용 애플리케이션 개발 언어
기본 개념과 동작 원리 이해의 중요성
- 프로그래머 역할 : 요구사항을 기반으로 문제를 해결하기 위한 방안을 고안, 이를 코드로 구현
- 구현된 코드는 의도한 대로 정확히 동작하여 문제를 해결해야 한다.
- 이때, 자신이 구현한 코드가 컴퓨터 내부에서 어떻게 동작할 것인지 예측 가능해야 하며, 이를 명확히 설명할 수 있어야 한다.
- 그러려면 프로그래밍 언어의 기본 개념과 동작 원리를 정확히 이해해야한다.
- 기본 개념 === 문맥에 맞는 정확한 용어를 구사할 수 있는 원동력
- 문맥에 맞는 정확한 용어를 사용하면 오해를 불러일으키지 않는 명확한 의사소통이 가능해진다.
- 동작 원리의 이해 === 코드의 동작을 예측 가능하게 하며 코드 독해의 원천
- 기본 개념과 동작 원리의 이해는 안정적이고 효율적인 코드를 생산할 수 있는 기본기
학습 방법
- 기본 개념과 동작 원리를 이해하는 것은 목표가 아닌 과정
- 목표는 코드 구현 능력 (코딩 스킬)
- 기본 개념과 동작 원리 (이해 : 용어/개념, 문법, 컴퓨팅 사고)
- 코딩 스킬 (숙달 : 의도적 연습, API, 프레임워크/라이브러리)
- 프로젝트 (경험 : 프로젝트를 통해 가상 경험)
- “한번에 완벽히”가 아닌 “여러번 반복” (앨리스의 토끼굴 조심)
- 연습 === 의도적 연습 : 자신의 능력을 살짝 넘어서는 도전을 지속적으로 시도하는 것
- 삽질 === 무엇을 알고 무엇을 모르는지 알려주는 개발자의 벗.
- 무엇을 모르는지 알았다면 몰랐던 것을 알기 위해 시도하고 실패하는 의도적인 연습 반복
- 3 사이클의 반복을 통해 이해의 반경을 점진적으로 넓혀가는 것 === 지속적 개선을 통한 성장 === 학습