웹 퍼블리셔는 프론트엔드 개발자가 아니다?


지난 포스팅에서 웹 퍼블리셔가 다루는 언어를 통해 어떤 일을 하는지에 대해 포스팅을 했었다. 그 연장선 상에서 많은 말들이 일어나는 주제를 가지고 다른 이야기를 풀어내보고자 한다.

많은 이들이 "웹 퍼블리셔는 프론트엔드 개발자가 아니다." 라는 이야기를 많이 하고 다니나, 필자는 반대로 웹 퍼블리셔는 프론트엔드 개발자다 라고 말한다.

System Architecture Tier에 따른 개발 직군 명칭

보통 웹 개발 쪽에서 직군의 이름을 부르는 데에는 System Architecture에 따라 이름을 부르고 있다.
2-tier(Client – Server)의 System Architecture에서 server-side를 담당하는 개발자를 우리는 보통 웹 개발자 혹은 server-side 개발자라고 부르고, 3-tier(Client – Server – DataBase)의 System Architecture에서는 server-side를 담당하는 개발자를 여전히 server-side 개발자라고 부르고 DataBase를 담당하여 다루는 개발자를 DBA(DataBase Administrator)라고 부르고 있다.
다시 말해,

DataBase 관리자
DataBase를 담당하는 엔지니어
Web 개발자, Server-side 개발자
server-side를 담당하는 엔지니어
???
Client-side를 담당하는 엔지니어

라고 할 수 있을 듯 하다.

그렇다면 Client를 담당하는 개발자는 뭐라 불러야 할까?
Chris Coyer는 CSS Trick에 작성한 글 — Job Titles in the Web Industry에서 이 분야의 직업을 Front-End Developer로 정의하고 있다.
그리고 국내에서는 신현석님이 클라이언트 사이드 개발자를 두고 퍼블리셔라는 직업명을 만들었다. (프론트 엔드 엔지니어와 웹 퍼블리셔 참고)

여기서 "퍼블리셔는 Front-End 개발자가 아니다"라고 주장하는 분들에게 한 가지 질문을 던져보고 싶다. 퍼블리셔는 Front-End 개발자가 아니라면 퍼블리셔가 담당하는 tier는 대체 어디인가?

Front-End 개발자는 퍼블리셔인가?

아마 고등학교 시절 명제를 기억하는 이는 역·이·대우가 떠오를지 모르겠다.
퍼블리셔는 Front-End 개발자인가가 참일 때, Front-End 개발자는 퍼블리셔다는 참인가?

당연히 참 혹은 거짓 모두가 가능하다.
이 이야기를 하자는건 아니고, 퍼블리셔는 Front-End 개발자이다. 하지만 Front-End 개발자는 퍼블리셔다 라는 것은 아니다라는 말을 하고 싶다.

이게 무슨 말장난이냐 할지 모르겠지만, 사실 System Architecture로 구분되는 직업명은 포괄적으로 나타날 수 밖에 없다.
실제로 web 개발자라는 직업 내에는 다루는 언어에 따라 PHP 개발자·APS 개발자·JSP 개발자 등으로도 나누이고, 개발물에 따라 쇼핑몰 개발자·ERP 개발자 등으로 부르기도 하니까 말이다.

필자는 Web Front-End 개발에 있어 2가지 분류로 나누어 본다. 하나는 문서로서의 웹을 만드는 케이스 또 하나는 어플리케이션으로서의 웹을 만드는 케이스다.
전자가 바로 웹 퍼블리셔인 것이고 후자는 따로 부르는 용어가 있는지 모르겠지만… 웹 앱 개발자라고 할까? 그렇기 때문에 웹 퍼블리셔이든 웹 앱 개발자이든 둘 모두는 Front-End 개발자라 볼 수 있다는 거다.

일전에 하코사 세미나에서 수호님이 자신은 프론트엔드 개발자도 아니고 퍼블리셔도 아니라고 했지만, System Architecture로 따르자면 Front-End 개발자는 맞는게 아닐까 싶다.

웹 퍼블리셔라는 말은 해외에는 없다. Front-End 개발자로 써야한다?

간혹 웹 퍼블리셔라는 용어에 대한 이야기를 하다보면 이런 이야기를 하는 분이 꼭 한 분씩은 있다. 틀린 말이라고 하기는 어렵겠지만 그렇다고 동의하기에도 역시 어렵다.

웹 개발 직군의 직업명칭이 해외에서부터 들어온 것은 맞는 말이고, 해외에서 웹 퍼블리셔는 콘텐츠를 작성하는 사람 정도의 의미를 가지기 때문에 혼동을 줄 여지가 많기 때문에 Front-End 개발자라는 말을 써야 한다라는 주장은 분명 일리가 있는 말이기는 하다.

하지만… 그러한 논리라면 해외에서 부르는 명칭이 가지는 업무영역 역시 동일하게 적용이 되어야 하는게 맞지 않는가라는 이야기를 먼저 해보고 싶다.

앞서 언급했던 Chris Coyer의 글을 보면 웹 디자이너의 업무롤에는 HTML, CSS, light-javascript까지 있다. 과연 이것을 국내 웹 디자이너들이 수용을 할 것인가?라는 문제가 발생될 수 밖에 없다. (물론 이를 겸하는 웹 디자이너도 존재하기도 하지만 이 직군의 업무롤이 그렇다 하는 것과 몇몇은 그렇게 한다라는 것과는 매우 다른 이야기이다.)

갑자기 왜 웹 디자이너의 이야기를 끌고 오느냐 하는 이도 있을지 모르겠지만, 그렇다면 반대로 왜 웹 퍼블리셔만 해외 사례에 적용해야 하는가? 라는 질문이 나올 수 밖에 없다.

물론 해외에서 내 직군이 무엇인지 이야기 해야 한다면 그에 맞는 용어를 쓰던 혹은 어떤 일을 한다고 설명을 해야 하겠다. 하지만 그렇다하여서 해외의 사례가 반드시 국내의 사례에 일치해야 할 필요는 없다고 본다.

이름이 웹 퍼블리셔이든 Front-End 개발자이든 중요한 것은 그 정체성이고 방향성이다.
웹 퍼블리셔라는 용어는 해외에는 없으니 옳지 않다가 아니라, 웹 퍼블리셔가 가져야 할 정체성은 마크업과 CSS에 제한되어서는 안 된다가 맞는 이야기가 아닐까?

용어를 만든 의도가 어떠하든 모두가 사용하는 의미가 맞는 의미다?

웹 퍼블리셔 vs. Front-End 개발자에 대한 이야기를 하다보면, "웹 퍼블리셔"라는 용어를 만든 신현석 님의 의도가 어떤 것이었든 설사 그것이 클라이언트 사이드 개발자였다 하더라도 업계와 많은 이들이 다른 의미로 사용하고 있다면, 많은 이들이 사용하고 있는 의미로 써야 한다라는 이야기를 하는 이들을 더러 보게 된다.

솔직한 말로 이 말의 근거가 대체 어디에 있는 것인지 궁금하다.
그런 논리라면 동해(East Sea)는 국제적으로 Sea of Japan이라고 부르니 Sea of Japan의 맞다는 얘기나 진배없지 않나? ( 오해 말자 필자는 철저히 대한민국 사람이고 East Sea의 주장을 지지하는 사람이다. = _=a )

W3C에서 데이터 테이블을 표기하는 의도로 table 이라는 element를 정의했다. 그런데 업계와 많은 이들이 table을 가시적 표현을 위해 사용하고 있다면 과연 그것은 많은 이들이 그렇게 쓰니까 옳은 것인가? 웹 표준이라는 개념이 국내에 들어오기 전에 짜여졌던 그 때는 과연 W3C의 의도가 어떠한 것이었든지 대다수의 이들이 가시적 표현을 위해 table을 사용했으니 table은 가시적 표현을 위한 element였을까?

정체성과 방향성을 제대로 잡자

사실 필자가 이야기 하고 싶은 것은 이것이다. 정체성과 방향성을 제대로 잡자라는 것.

단순히 이미지를 자르고 tag를 나열하고 css로 시안과 똑같은 모양이 나오게 작성하는 것이 웹 퍼블리셔의 업무가 아니다.
앞선 포스팅에서 웹 퍼블리셔의 업무에 대한 이야기를 포스팅하기도 했지만 Markup Language라는 언어의 용도에 맞게 개발을 해야 하는 것이고 전문성을 가져야 하는 직군이다.

간혹 웹 퍼블리셔와 Front-End 개발자의 이야기를 할 때에 "그럼 HTML/CSS만 다루는 이는 개발자냐?"라는 이견을 내는 이들도 있다.
필자는 이들도 개발자다 라는 의견을 가진다 (하지만 프로그래머로서는 아니다). 물론, HTML/CSS만 다루는 이들의 대다수는 개발자가 아닌 케이스가 더 많다고 본다. 그럼에도 불구하고 필자가 HMTL/CSS를 다루는 이도 개발자다 라고 하는 이유는, HTML/CSS에도 구조적·논리적·의미론적으로 코드를 작성하기 위한 설계를 해야하고 논리 구조에 따라 마크업이 진행되어야 하며 JavaScript로 DOM을 컨트롤 하기 위한 로직을 고려하여 어떤 구조로 마크업을 할 지 어떤 속성을 활용할지등의 마크업 자체에 대한 로직 또한 고려햐여 설계와 coding을 진행해야 하기 때문이다. 다만 문제는 그렇게 고려하며 마크업을 하는 이들이 극단적으로 적달까..?

웹 퍼블리셔가 가져야 할 정체성과 방향성은 분명 사용자와 맞닿는 화면 단을 구성하는 일에 있다라는 것이다. JavaScript를 하고 안 하고에 따라 웹 퍼블리셔 vs Front-End 개발자라고 선을 그어 놓는 게 중요한게 아니라, 내가 작업 해야 하는 것이 어떤 부분이고 무얼 위해 해야 하며 어떤 목적으로 가지고 작업을 해야 하는 것인지를 바로 알고, 그를 위한 기술들을 습득하고 활용하며 더 좋은 품질의 것을 만들기 위한 노력을 기울여야 한다.

그게 아니라 단순히 그냥 아무 생각없이 눈에 보이는 것만 잘 보이게, 결과적으로 원하는 기능이 동작이 되게만 만든다면 그건 그냥 말마따나 코더일 뿐이지 웹 퍼블리셔도 Front-End 개발자도 아닌 것이 아닐까?