회사에서 Staff front-end engineer 라는 이름으로 일한지 2년이 지났다. 대부분의 회사가 그렇지만 front-end engineer 한 명이 대개 5~6명의 BE Engineer 와 일하게 되는 구조이고, 나같은 경우는 지금 두 팀의 front-end 를 담당하고 있기 때문에 두 팀 규모의 백엔드 엔지니어들과 일하고 있다.
Front-end 엔지니어라고 하나 필요하다면 API 를 직접 연동하는 작업도 하고, Client Server 에서 필요한 Infra 작업을 하기도 하고, API 의 DTO를 직접 수정하기도 한다. 가끔은 API를 직접 구현하게 되는 일도 생긴다. (* 얼마전에 우리 회사에서는 처음으로 API 배포해봤다)
Full-stack engineer 의 허상에 대해서 많은 이야기를 하지만, 최근 몇 년 간 내 생각은 모두가 Full-stack engineer 가 되어야 하고, 거기서 얼마나 깊이있게 한 분야의 지식을 가지고 있는가로 승부를 봐야한다는 것이다. “Front-end 엔지니어니까 BE는 몰라도 된다” 같은 식의 접근이 좋은 접근이라고 생각하지 않는다.
Product engineer는 Front-end 엔지니어건 Back-end 엔지니어건 제품을 만드는 사람이라는 본질을 잃어서는 안된다.
전문성이란
전문성이라는 말에 대해서 종종 다시 생각하게 된다. 얼마 전 트위터 (현 X)를 보다보니 프론트엔드 개발자라면 수학이 필수라는 이야기를 보게 되었다. 아마 그 분의 경험에서는 프론트엔드 개발 전문성에 수학이 필수라 생각하였을 것이다.
또 어떤 사람은 웹 접근성이, 어떤 사람은 UX에 대한 이해가, 어떤 사람은 라이브러리에 대한 이해도가 높아야, 어떤 사람은 JavaScript를 잘 해야, 어떤 사람은 브라우저 API를 잘 알아야한다고 할 것이다. 나는 어떤 분야의 전문성을 논할 때, 가지면 좋은 것 (Good to have) 과 필수인 것 (Required)을 구분해야한다 생각한다.
제품을 만드는 사람에게 있어 전문성은 크게 도메인에 대한 이해도와 기술에 대한 이해도로 나뉜다고 생각한다. 예를 들어 나는 E-commerce 도메인에 대한 이해, 개 중에서도 정산 시스템에 대한 이해도가 높은 Front-End 개발자일 것이다.
여러 회사에서 다양한 도메인을 접하고 다양한 시스템을 접하다 보면 도메인에 대한 이해도는 자연스럽게 높아지지만, 기술에 대한 이해도는 직접 학습하거나 문제를 직면하지 않으면 쉽게 성장하지는 않는다. 그래서 기술에 대한 이해도를 높여 도메인에서 가진 문제를 해결할 수 있는가가 개발자의 전문성이라 생각한다.
관심사
몇 년동안 여러 신입 개발자들의 이력서를 살펴보면서 “나는 OO에 관심이 많은 개발자” 라는 이야기를 많이 보게된다. 하지만 관심이 많다고는 하지만 실제로 그 기술에 대해 깊이있게 공부하거나 나름대로의 통찰을 가지는 사람은 그렇게 보지 못했다.
사용자 경험에 대한 관심이 있다면 적어도 UX 도서 한 권 정도는 읽어봤어야 하지 않을까? 사용자 경험이 어떤 걸 의미하고 실제 개발에서 어떤 식으로 적용되어야하는 지는 전혀 공부하지 않지만 “나는 더 좋은 UX를 제공하고싶다” 라는 식의 이야기는 허상에 불과하다.
앞서 이야기했지만 기술에 대한 이해도는 직접 학습하는 방법으로 습득해야하기 때문에, 기술에 대한 관심이 없다면 지식의 습득은 자연스레 느려질 수밖에 없다. 거기에 전공자가 아니라면 더 장벽은 높게 느껴질 수밖에 없다. 하지만 그럼에도 불구하고 부딪치고 배울 수밖에 없다.