웹 퍼블리셔는 무슨 일을 하는가? Part 1 — 구조적 언어의 확립, Part 2 - 표현적 언어의 확립에 이어 세 번째로 "기능 언어의 확립"에 대해 이야기 해본다.

웹 페이지는 상호작용을 가진다.

웹 페이지는 단순히 화면에 정보를 보여주는 것으로 끝이 아니라, 사용자와의 상호작용을 가지며, 유저 에이전트들은 JavaScript, Browser Object Model(BOM), Document Object Model(DOM) 등을 통해 이 상호작용을 가능하게 한다.

단순하게는 특정 요소의 가시성을 제어하거나 (CSS display 속성에 none 값을 동적으로 부여 하거나 제거하는 등), 복잡하게는 AJAX를 이용하여 서버로부터 데이터를 얻어와 페이지에서의 어떤 처리를 하는 등을 하게 된다.

그래, 결국 한 마디로 줄여서 이야기 하자면, JavaScript라는 언어를 다루어 상호작용을 가능하게 한다. 이것도 역시 웹 퍼블리셔가 하는 일 중의 하나다.

JavaScript를 웹 퍼블리셔가 해야 하나요?

지겨울 정도로 몇 해 동안 끊임 없이 나오는 이야기다. 현재는 못하면 취업이 잘 안된다는 논조가 지배적이라 울며 겨자 먹기(?) 식의 이유로 받아들여지는 듯 하지만, 개인적인 견해로 JavaScript는 당연히 웹 퍼블리셔의 몫이다. 물론 클라이언트 사이드 즉, 웹 문서에서 일어나는 부분에 한하여.

최근들어 이야기 되고 있는 Front-End 개발에 대한 부분은 잠시 접어두고, React, Angular, Vue 등 역시 접어두고 여기서는 철저하게 웹 브라우저에서 일어나는 상호작용에 대한 만을 이야기 해본다.

JavaScript의 동작에 따른 결과는 결국 HTML의 변경이다. 그것이 style 속성이 생성/변경/제거이든, class 속성의 생성/변경/제거이든, 혹은 특정 요소(element)들의 생성/변경/제거이든 결과는 HTML의 변경일 뿐이다.

JavaScript를 왜 개발자가 해야 하나요?

나는 오히려 이렇게 묻고 싶다. JavaScript를 왜 개발자가 해야 한다고 이야기 하는지. 일반적으로 웹 산업 직군에서 "개발자"라고 지칭하는 직군은 "서버 사이드 개발자"를 지칭하고 있다. 따라서 이 글에서는 "서버 사이드 개발자"에게 미루려는 현상을 두고 이야기 하려 한다.

클라이언트 사이드를 전문으로 다루는 직군이 없던 시절(?)에야 디자이너가 프로그래밍언어까지 다루기에는 무리가 있기 때문에 이미 프로그래밍언어를 다루고 있는 서버 사이드 개발자가 해왔을 뿐, "당연한" 이유는 사실상 없다고 볼 수 있다.

서버 사이드 개발자는 사실 서버 사이드에서 일어나는 일에 대한 개발은 하는 것이지, 프론트에서만 일어나는 일에 대한 개발을 해야 할 이유가 거의 없다.

사실 서버 사이드 개발자도 JavaScript는 그저 프로그래밍이 익숙하니 상대적으로 덜 어려울 뿐, JavaScript를 다루어보진 않은 개발자에게는 이 언어가 생소하기는 매 한 가지다. 더구나 웹 브라우저별로 서로 다르게 발생하는 이슈 사항이라든가 (예를 들어 safari에서는 popupState 이벤트 발생 시점이 다른 브라우저들과 다르다라는 점 같은), DOM API들은 이들에게도 생소한 API들일 뿐이다.
(오해는 말자. 서버 개발자들이 JavaScript를 모른다고 하는 것이 아니라, BOM, DOM Level 1~3, Event 등등 이것들이 모두 제대로 다루고자 하면 공부해야 할 대상이라는 것 뿐이다.)

어차피 양 쪽 모두 공부해야 하는 대상이다. 그런데 왜 유독 서버 사이드 개발자 쪽으로 밀어내려하는 것인지 모르겠다. 서버 개발자가 JavaScript를 해야만 하는 당위적인 이유를 댈 수 있는 이가 있다면 해당 이유를 설명해주면 좋겠다... 적어도 나는 당위적인 이유를 찾을 수가 없다.

JavaScript를 웹 퍼블리셔가 해야 하는 이유

웹 페이지에서 일어나는 일련의 것들에 대한 전문성은 웹 퍼블리셔가 가지고 있어야할 역량이라는 데에는 이견이 없을 것이라 생각한다.

현재는 웹 퍼블리셔 외에 클라이언트 사이드에서 비지니스 로직을 전문으로 담당하는 직군으로 Front-End 개발자라는 명칭으로 또 다른 군을 현업에서 별도로 분리시켜 채용이 되고 있는 상황으로 가고 있기는 하지만, 이러한 케이스는 아직은 보편화 되어있지 않은 듯 하고 대다수는 웹 디자이너 - 웹 퍼블리셔 - 서버 사이드 개발자의 3 tier가 더 일반적일 것으로 예상한다.

무튼, 이러한 상황에서 순수하게 클라이언트 사이드 즉, 웹 브라우저에서 일어나는 기능에 대해서 작업을 누가해야 할까? 클라이언트 사이드에서 일어나는 기능의 결과, 즉 HTML, CSS 등의 변경은 웹 퍼블리셔의 몫이라는 것은 당연한 것 아닐까?

대다수 JavaScript를 왜 웹 퍼블리셔가 해야 하느냐고 반문하는 웹 퍼블리셔들의 이유는 개인적인 생각이지만, "어려운 것은 하기 싫다"가 아닐까 싶다. 아니 좀 더 풀어보자면 나는 HTML, CSS 같은 개발(이라 쓰고 로직이라고 읽는다)과 상관 없는 일을 하고 있는데 왜 내가 프로그래밍과 관련한 언어를 다루어야 하느냐? 라는 것이 아닐까 싶다.

다시 말하지만, 웹 퍼블리셔가 책임을 져야 하는 부분은 웹 브라우저에서 일어나는 일 전반에 해당한다. 그 이유 만으로도 JavaScript를 웹 퍼블리셔가 해야 하는 이유로 충분할 거라 생각한다.

Front-end 개발자가 다 하면 되지 않느냐라는 반문이 있을지도 모르겠다. Front-End 개발자가 있는 회사라면 충분히 그럴 수 있다고 생각한다. 하지만, 개인적으로 Front-End 개발은 웹 퍼블리셔의 연장선 상에 있어야 하는 업무 역할이라고 생각한다. 이 부분에 대해서는 웹 퍼블리셔는 프론트엔드 개발자가 아니다? 포스트에서 사견을 개진해두었으니 여기서는 더 쓰지 않겠다.