← Writing

문제를 해결하는 사람

What It Means to Be a Product Engineer

dev

나는 제품을 만드는 엔지니어이자 메이커가 되고 싶다. 코드에만 머무르지 않고, 현실의 문제를 해결하는 사람이고 싶다.

제품 엔지니어도 코드를 작성하고, 코더도 코드를 작성한다. 겉으로 보기에는 차이가 없어 보이지만, 사실 나는 이 둘 사이에 큰 차이가 있다고 생각한다.

나는 그 차이가 마인드셋, 즉 생각하는 방식에 있다고 본다.

자신을 사람들이 사용하는 제품을 만드는 메이커라고 생각하면 일하는 방식도 달라진다. 반대로 자신을 그저 코드를 작성하는 사람이라고 생각하면, 결국 코드 안에서만 답을 찾게 된다.

내가 생각하는 제품 엔지니어는 사람들에게 필요한 것을 만들고, 어떤 문제를 해결할지, 어떻게 사용될지를 고민하는 사람이다. 반면, 코더는 코드를 더 깔끔하고 단순하게 만드는 것이나 코드 구조를 정리하는 것에 집중한다.

물론 나도 코드의 품질, 좋은 설계 방식 같은 것들에 관심이 있다. 하지만 그것이 가장 중요한 요소는 아니라고 생각한다. 사람들은 자신이 사용하는 앱이 어떤 코드로 만들어졌는지, 얼마나 깔끔한 구조로 개발되었는지 신경 쓰지 않는다. 아니, 아예 관심조차 없다. 그들이 신경 쓰는 것은 오직 ‘이 제품이 나에게 도움이 되는가?’ 하는 점이다.

나도 그렇지만, 개발자들은 종종 자신이 만든 함정에 빠진다. (일론 머스크도 같은 말을 했다.) 늘 새로운 기술을 탐색하고, 그것들이 마치 가장 중요한 것처럼 이야기한다. 하지만 실제로는 그렇게 중요한 경우가 많지 않다.

기술은 결국 제품을 만들기 위한 수단일 뿐이다. 기술 그 자체로는 아무런 의미가 없다. 극단적으로 말하면, 사람들이 불편함 없이 사용할 수만 있다면, 하드코딩이든 뭐든 상관없다.

어떤 앱은 새로운 프레임워크를 사용했고 예쁘고 우아한 코드로 만들었지만, 아무도 사용하지 않는다. 반면, 어떤 앱은 코드가 조금 엉망이고 복잡하게 만들어졌지만, 사람들이 실제로 유용하게 사용하고, 심지어 돈까지 낸다.

물론, 코드의 품질이 전혀 중요하지 않다거나, 사람들이 잘 사용하기만 하면 코드가 엉망이어도 된다는 얘기를 하려는 것은 아니다. 좋은 코드를 작성하면, 제품이 성공할 확률은 더 높아진다.

하지만 제품을 만들다 보면 수많은 선택을 하게 된다. 이때, 개발자는 자신의 만족이나 코드를 더 멋있어 보이게 만드는 것에 집중할 수 있다. 반면, 제품 엔지니어는 멋이 없고 오래된 기술을 써야 하더라도, 사람들의 불편을 가장 빠르고 효과적으로 해결할 수 있다면 그것을 선택한다.

나는 교과서에 나올 법한 깔끔한 코드를 작성하는 사람이 아니라, 사람들이 실제로 사용하는 제품을 만들어내는 사람이 되고 싶다. 내 목표는 유용한 제품을 만들어 세상에 가치를 더하는 것이다.