Generalist
이 글은 조만간 패스트캠퍼스에서 공개할 강의에서 다루는 내용 중 일부를 발췌하였다. 홍보를 위한 글이라고 비판할 수도 있겠지만, 많은 개발자들에게 도움이 될 거라 생각하기에 이 글을 작성한다.
강의가 오픈했습니다-
프런트엔드란 무엇인가?
먼저 철학적인 고민부터 시작해보자. 여러분들이 생각하는 프런트엔드 개발자의 역할이란 무엇인가? 다양한 생각이 있을 거라 생각하지만 많은 사람들의 뇌리에 스치는 건 역시 다음 문장일 것이다.
HTML, CSS, JavaScript 를 활용하여 웹 애플리케이션을 만들어내는 개발자. 백엔드 개발자가 만들어준 API 를 바탕으로 여러 직군의 사람들과 협업하여 좋은 UI / UX를 만들어내는 걸 목표로 한다.
아무도 이 문장이 프런트엔드 개발자의 일이라는 걸 부정하지는 않을 것이다. 다만 이 문장만으로 프런트엔드 개발을 표현할 수 있냐고 하면 그렇지는 않다고 생각한다. 프런트엔드 개발은 훨씬 더 많은 일을 수행해내야 한다.
Web, Web, Web
우리는 프런트엔드 개발자이기 이전에 웹 개발자라는 걸 잊어서는 안된다. 웹 서비스를 만드는 행위에 대한 기초 지식을 알고 있어야 한다는 뜻이다. 기초에 대한 생각은 사람에 따라 다를거라 생각되고, 나도 어디까지를 기초라고 말할 지에 대해서는 고민이 된다.
일단 내가 생각하는 기초 지식은 다음과 같은데,
- 브라우저별 특성을 이해하고 있다.
- 자바스크립트 언어적 특성을 이해하고 있다.
- 브라우저의 렌더링 방식을 이해하고 있다.
- DOM이란 무엇인 지 이해하고 있다.
- HTML과 웹 표준에 대해 이해하고 있다.
- CSS의 특성을 이해한 코드를 구현할 수 있다.
- HTTP에 대한 기초적인 이해를 가지고 있다. (Req, Res, HTTP Status Code 정도로 충분하다고 생각한다)
- HTTPS에 대한 기초적인 이해를 가지고 있다.
- 정적 서버와 CDN에 대한 기초적인 이해를 가지고 있다.
- 호스팅 서버에 대한 기초적인 이해를 가지고 있다.
- Docker 컨테이너에 대한 기초적인 이해를 가지고 있다.
- RESTful API란 무엇인 지 이해하고 있다.
- React의 특성을 이해하고 있다.
- Fetch API 의 특성을 이해하고 있다.
- Web Rendering에 대해 이해하고 있다.
- 에러 처리에 대해 이해하고 있다.
일단 여기까지가 개발을 시작하기 위한 기초 지식이라고 생각한다. 여기에서 좋은 설계를 위한 다양한 방식들을 연구하여서 좋은 설계를 만들어내고, 그걸 바탕으로 회사 전체에 좋은 영향을 미칠 수 있다.
웹을 지탱하는 기술
결국 우리가 알아야 하는 기초 지식은 모두 웹을 지탱하는 기술이며, 그 기술들을 바탕으로 더 나은 코드를 만드는 근거가 나온다. 기초 지식 없이 좋은 코드가 나올 거라는 건 상상이 어렵다.
많은 사람들이 Specialist를 꿈꾸면서 앞서 이야기한 JS, CSS, HTML에 깊게 파고드는 행위 자체는 나쁘지 않다고 생각하지만, 정작 거기에 눈이 팔려서 웹 전체의 기술에 대해서 이해하지 못하는 상황은 결코 좋은 상황은 아니라고 생각한다.
우리는 Specialist 이기 이전에 Generalist 여야 한다. 거기에서 더 좋은 코드가 나온다고 나는 확신하고 있다.