제품 엔지니어

2023년 8월 · 리 로빈슨(Lee Robinson)

프런트엔드와 백엔드 엔지니어를 나누는 구분은 갈수록 쓸모가 줄고 있다.

  • 프런트엔드 개발자는 더 이상 HTML, CSS, JavaScript만 작성하지 않는다. 프런트엔드에 집중하던 개발자가 처음부터 웹 애플리케이션 전체를 만드는 일도 흔해졌다. 데이터베이스를 통합하고 연결하며, 인증 등을 처리한다.
  • 백엔드 개발자는 흔히 두 가지 길 중 하나를 택해야 한다. 백엔드를 지원하기 위해 프런트엔드 코드를 더 작성하거나, 앞서 말한 개발자들이 사용하는 소프트웨어 인프라를 관리·유지·구축하는 쪽으로 옮겨가는 것이다.
  • AI 도구를 활용하는 개발자들은 단순히 코드를 작성하는 데서 좋은 제품을 만드는 쪽으로 초점을 옮겼다. 스타트업에서도 이런 변화가 나타나고 있다. LLM과 코딩 보조 도구를 활용해 더 빠르게 일하는 소규모 엔지니어링 팀을 운영하는 곳이 늘고 있다.

제품 엔지니어란 무엇인가?

제품 엔지니어는 원하는 제품 경험에서 출발해 이를 가능하게 할 기술을 거꾸로 찾아간다. 프런트엔드와 백엔드, 디자인을 비롯한 여러 요소를 고려해 좋은 사용자 경험을 만든다.

이들은 흔히 ‘풀스택’에 대해 오해하듯 모든 영역을 깊이 이해할 필요는 없다. 대신 이용할 수 있는 도구를 폭넓게 이해하고, 그 도구를 제품을 만드는 데 적용한 깊은 경험을 갖춘다(폭넓은 이해).

훌륭한 제품 엔지니어에게 필요한 자질은 다음과 같다.

  • 반복적으로 개선한다. 이들은 빠른 반복 속도와 점진적인 정확성을 중시한다. 혼자서 완성할 때까지 작업하기보다 제품을 출시하고 고객 반응을 얻은 뒤, 그 과정에서 조정하는 편을 택한다.
  • 고객을 중시한다. 고객과 직접 소통하고 제품을 개선할 방법을 배우는 일을 꺼리지 않는다. 규모가 큰 회사에서는 제품 관리자가 이 역할에 특화될 수 있지만, 배운 내용을 알맞은 해결책에 반영하려면 엔지니어와 긴밀히 협력해야 한다.
  • 실용적이다. 기술 선택은 목적을 이루기 위한 수단일 뿐임을 안다. 최신 JavaScript 라이브러리를 선택해도 제품을 쓰는 사람이 없다면 의미가 없다. 제품 목표에 도움이 되지 않는 도구는 기꺼이 제거한다.

그렇다면 소프트웨어 엔지니어의 나머지 절반은 어떤 일을 할까?

제품 엔지니어와 플랫폼 엔지니어

제품 엔지니어가 최종 사용자의 문제를 해결하는 기능을 만들고 개선한다면, 플랫폼 엔지니어는 제품을 뒷받침하는 인프라에 집중한다.

플랫폼 엔지니어링 팀은 제품 엔지니어를 지원하고 이들이 더 효율적이고 생산적으로 일하며 만족할 수 있도록 도구를 직접 만들거나 구매한다. 보통 제품 팀이 사용할 인프라를 선택하는 일도 맡는다.

플랫폼 팀은 과거에는 대규모 조직에서만 둘 수 있었다. 하지만 이제는 작고 효율적인 플랫폼 엔지니어 그룹도 상당한 영향을 미치는 결정을 내릴 수 있다. 작은 팀에서도 제품 조직의 성장에 맞춰 확장할 소프트웨어를 신중하게 평가하고 구매한다.

인재 찾기

대부분의 스타트업은 풀스택 엔지니어를 찾지만, 실제로 필요한 사람은 제품 엔지니어다. 훌륭한 제품 엔지니어에게는 두 가지 공통점이 있다.

  • 높은 품질의 경험을 만드는 데 열정을 쏟는다.
  • 새로운 아이디어를 배우고 탐구하려는 의지가 꾸준하다.

이들은 픽셀을 배치하는 데 그치지 않는다. 자신이 만든 결과물에 자부심을 느끼는 창작자이며, 자신의 제품을 책임지는 일을 꺼리지 않는다. 작업 결과물 가운데 사용자에게 직접 보이는 부분이 많으므로, 자신의 작업 사례도 충분히 갖추고 있어야 한다.

브라우저, 접근성, 애니메이션, CSS, HTML, JavaScript 같은 웹의 기본 원리를 이해한다. React나 Svelte 등 어떤 도구를 쓰는지는 부차적이다. 중요한 것은 도구를 활용해 가능한 한 좋은 제품을 만드는 능력이다.

훌륭한 제품 엔지니어는 화면을 완성하는 데서 멈추지 않는다. 사용자가 제품을 이용하는 경로를 세심하게 살핀다. 인터넷 연결이 느리거나 끊기면 어떻게 될까? API가 오류를 반환하면 어떻게 될까? 터치 기기에서는 경험이 어떻게 달라질까? 목표로 삼아야 할 지연 시간은 어느 정도일까?

결론

제품 엔지니어는 웹 개발의 변화를 보여준다. 특히 AI의 부상과 함께 단순히 코드를 작성하는 데 그치지 않는 개발자의 필요성이 커지고 있다. 큰 그림을 이해하고 여러 기술을 넘나들며 최종 사용자에게 탁월한 제품을 제공하는 개발자가 필요하다.