지금까지 자바스크립트를 공부하면서 기본 개념과 동작 원리를 조금 조금씩은 알아갔다고 생각했지만 부족한 것이 현실😪이었다.
면접 준비를 하면서 JS 관련 질문을 준비했을 때 정확하게 이해하고 준비했다기 보다는 답변을 외웠다는 느낌이 더 강했다.
그래서 이러한 점을 보충하기 위해서는 제대로 된 학습이 필요했고 개념적인 부분은 책으로 공부하는 것이 좋은 것 같아 책을 찾아보았다.🙋♂️
많은 책들이 있었지만 3권의 책으로 추렸고 모든 책을 포괄할 수 있는 책이
1번 책인 것 같아 결국 모던 자바스크립트 Deep Dive로 선정했다.
하지만 꼭 이 책만 보는 것이 아니라 좀 더 부족하다고 생각하는 부분이 있으면 나머지 두 권의 책과 인터넷을 참조하여 꼭 이해하고 넘어갈 것이다.
자바스크립트의 탄생 목적은 일반적인 프로그래밍 언어와 다르다.
대부분은 애플리케이션을 개발하기 위한 범용적인 용도로 설계되었지만
자바스크립트는 웹페이지의 단순한 보조 기능을 처리하기 위해 태어났다.
하지만 이제는 더 이상 제한적인 용도의 프로그래밍 언어가 아니다.
프론트를 넘어 백엔드, 3D 그래픽, 인공지능까지 가능하다.
최근에는 메타버스도 JS로 작성된 것들이 있는 것 같은데 아직 이 영역까지는 JS가 효율적인지는 모르겠다.
결국, 다양한 분야에서 JS는 활용되고 있고 범용 애플리케이션 개발 언어로 성장했다. 이에 맞게 학습하는 방식도 변해야 한다.
프로그래머의 역할은 요구사항을 기반으로 문제를 해결하기 위한 방안을 고안하고, 이를 코드로 구현하는 것이다. 구현한 코드는 컴퓨터 내부에서 어떻게 동작할 것인지 예측 가능해야 하며, 이를 명확히 설명할 수 있어야 한다.
이를 위해 기본 개념과 동작 원리를 정확히 이해하는 것이 중요하다.
단순히 동작하는 코드는 언제 무너져도 이상할 것이 없는 사상누각이다.
사상누각(砂上樓閣) : 기초가 부실하여 언제 무너져도 이상하지 않은 것
신뢰할 수 없고 유지보수하기 까다로운 코드가 될 것이다. 결국 성장이 멈추게 되는 것이다.
기본 개념은 문맥에 맞는 정확한 용어를 구사할 수 있는 원동력이다.
명확한 의사소통이 가능해지고 협업의 기본이며 필수 요소이다.
또한 특정 프로그래밍 언어에 국한되지 않기에 다른 언어 학습에도 도움이 된다.
동작 원리의 이해는 코드의 동작을 예측 가능하게 하며 코드 독해의 원천이다.
코드의 동작을 예측하지 못하는 상태에서 코드를 작성한다는 것은 말이 되지 않는다. ( 이 부분이 내가 가장 부족하다고 느끼는 점이다. )
에러를 발생시키는 원인을 이해해야 디버깅이 가능하다.
다른 사람이 작성한 코드를 읽고 이해하는 것은 물론 의도 또한 파악할 수 있다.
기본 개념과 동작 원리의 이해는 안정적이고 효율적인 코드를 생산하는 기본기이다.
아무리 강조해도 지나치지 않다.
기본 개념과 동작 원리를 이해하는 것은 목표가 아니라 과정이다.
먼저 기본 개념과 동작 원리를 이해하려고 노력하고
한 번에 완벽하게 이해하려 하지 말고 여러 번 반복하자❗❕
학습 중인 키워드 외에 아직 학습하지 않은 개념에 대해서는 기술 부채로 쌓아두자
앨리스의 토끼굴에 빠지지 말자
앨리스의 토끼굴 : 어떤 개념을 이해하기 위해 파고들수록 또 다른 개념을 이해할 필요가 생겨서 처음 의도한 학습 방향과 점점 멀어지는 현상
코딩 연습은 머릿속에 머물고 있는 문제 해결 방안을 문법을 통해 구체화하는 과정이다. 이 때 연습은 의도적인 연습이어야 한다.
자신의 능력을 살짝 넘어서는 도전을 지속적으로 시도하는 것이다.
너무 쉬운 도전은 지루하고, 무모한 도전은 불안감만 준다.
무엇을 모르는지 알았다면 몰랐던 것을 알기 위해
시도하고 실패하는 의도적인 연습을 반복하자
프로젝트를 통해 쌓은 경험은 성장에 좋은 밑거름이 된다.
더욱 깊이 이해하고 협업을 경험할 수 있다.
3개의 사이클을 순환적으로 반복하면서 이해의 반경을 점진적으로 넓혀가는 것, 지속적 개선을 통한 성장이 바로 학습이다.
빨리 가는 유일한 방법은 제대로 가는 것이다.
로버트 C. 마틴 <클린 코드>의 저자