
졸업을 앞두고 중간고사가 끝난 시점부터 본격적인 취업 준비를 시작했다. 이력서와 포트폴리오를 작성해 보고, 기술 면접 대비를 위해 프론트엔드 개발자 단골 질문들을 검색해 보기도 했다.
나는 지금까지 실무 역량을 기르기 위해 프로젝트 '구현' 위주로 공부를 해왔다.
(그렇다고 해서 실무 스킬을 완벽하게 꿰뚫고 있는 것도 아니지만...)
하지만 예상 면접 질문들은 내 생각과 다르게 언어 자체의 기초 개념에 집중되어 있었다.
사실 이 기초 학습 시리즈를 작성하기로 마음먹은 결정적인 계기는 얼마 전 있었던 연합 동아리 면접 때문이다. 부끄러운 이야기지만, 아래와 같은 질문을 받았는데 말문이 막히고 말았다.
"React의 useState 에서 값을 변경할 때 왜 setState 를 사용하나요?"
이 질문을 듣는 순간 "어? 분명 알았던 건데..." 하는 생각과 동시에, 매번 useState를 사용하면서도 그 이유조차 모르고 있었다는 사실이 머리를 스쳤다.
당연하게 써왔던 것들을 제대로 설명할 수 없는 내 자신이 한심하게 느껴진 순간이었다. 그래서 다시 기초부터 다잡기로 했다.
프로그래밍 공부의 시작은 언어의 문법을 외우는 것이 아니라, 컴퓨터처럼 생각하는 법을 알아가는 것이다.
프로그래밍에서 가장 중요한 것은 근거다.
내 생각에는 아래와 같은 말을 하는 개발자는 단순한 코더로 가는 지름길이나 다름없다.
"그냥 이렇게 하니까 되던데?", "다 이거 쓰던데?", "이게 좋다던데?"
코드 한 줄을 작성하더라도 그 한 줄에 대한 근거나 내용을 설명할 줄 알아야 한다.
(사실 이걸 잘 할 줄 몰라서 기초 학습을 시작했다..)
사람과 컴퓨터는 사고 방식이 다르다.
우리는 컴퓨터가 알아들을 수 있도록 아주 구체적이고 논리적으로 명령을 내려야 한다.
이 간극을 이해하는 것이 코딩의 시작이라고 볼 수 있다.
채용 시장에서 많은 기업들이 코딩 테스트(알고리즘)을 요구하는 이유도 마찬가지다.
순서도를 효율적으로 그릴 수 있다는 것은 문제를 논리적인 순서로 분해할 수 있다는 뜻이다.
이것이 곧 프로그래밍적 사고다.
나는 프론트엔드 개발자로서 주 언어로 타입스크립트를 사용한다.
하지만 타입스크립트는 결국 자바스크립트의 상위 집합이기에, 그 근간이 되는 자바스크립트부터 제대로 알고 넘어가려 한다.
자바스크립트는 타 언어에 비해 자유도가 높은 편이지만, 그만큼 개발자가 지켜야 할 규율이 중요한 언어이기도 하다.
자바스크립트는 명령이 끝날 때 세미콜론을 붙이지 않아도 된다. 이는 자바스크립트 엔진이 코드를 해석할 때, 세미콜론이 빠진 곳을 추론하여 자동으로 넣어주는 ASI (Automatic Semicolon Insertion) 기능 덕분이다.
물론 팀마다 컨벤션은 다르겠지만, 나는 세미콜론을 명시적으로 붙이는 것을 선호한다.
ASI에 전적으로 의존하기보다는, 혹시 모를 모호함을 제거하고 코드의 의도를 명확히 하여 에러를 방지하는 것이 더 중요하다고 생각하기 때문이다. 이러한 작은 습관들이 모여 코드의 일관성을 만든다.
주석은 컴퓨터가 무시하는 영역이다.
가볍게 보고 넘길 수 있는데, 주석을 잘 작성하는 것은 매우 중요하다.
각자의 코드 스타일이 다르기 때문에, 협업에 있어서 주석을 잘 작성하면서 이 코드의 의도가 무엇인지 동료에게 명확하게 나타낼 수 있는 것이 바로 주석이다. 주석은 협업의 기본이라고 볼 수 있다.
들여쓰기는 코드의 가독성을 책임진다.
들여쓰기가 엉망인 코드를 읽는다는 것은 매우 심란한 일이다..
UX 를 중요하게 여겼던 나는 최근 여러 프로젝트을 진행하면서 DX 도 매우 중요한 부분이라는 것을 깨닫게 되었다.
화려한 라이브러리나 프레임워크도 결국 이러한 기본기 위에서 돌아간다.
**"이유 있는 코드", "배려심 있는 코드"**를 작성하는 개발자가 되기 위해, 다시 기초부터 차근차근 쌓아올려 보겠다.
Next: [JS 기초 학습] 02. 자료형과 변수