people video thumbnail

좋은 영향력을 개발합니다

자체 개발한 웹 브라우저를 가진 나라는 많지 않다. 높은 수준의 개발 기술이 필요할 뿐만 아니라, 시장 점유율을 확보하기 위한 유지 비용 또한 상당하기 때문. 그러나 냉장고부터 차량의 시스템까지, 브라우저의 활용 범위와 영향력은 점점 더 커지고 있다. 무엇보다 여러 서비스를 하나로 모아 제공하는 만큼 사용자 이해에 굉장히 큰 도움이 된다. 네이버 자체 브라우저 웨일(Whale)의 초기 버전부터 담당해 온 8년차 개발자 고상우는 브라우저 프로덕트 자체가 가지는 위상과 무게감 자체가 일할 때의 동력이 된다고 말한다. 크로미움 오픈소스 커뮤니티 내에서 핵심 소스코드의 수정과 관리 권한을 가진 개발자, 크로미움 커미터(Chromium Committer)이기도 한 그가 요즘 고민하는 화두는 함께 일하는 법에 머물러 있다. 좋은 영향력을 개발하는 일에 관하여.

고상우님 이미지1
웨일의 개발 과정을 소개해 주세요.

저희가 기술 스택을 바꿔가면서 브라우저를 세 번 정도 만들었어요. 사내 베타까지 하고 두 번째, 세 번째 만든 게 지금의 코드 베이스인데 아무래도 가장 처음의 버전이 가장 기억에 많이 남습니다. 첫번째 버전에서는 크로미움 베이스가 아니라 네이버 자체 엔진부터 쌓아 가려는 시도들이 있었어요. 스크래치부터 시작을 했었거든요. 그런데 그 당시에는 제가 웹 개발까지만 배웠던 상태였어요. 주 전공이 아니다 보니까 웹 개발까지만 배우고 실무에 투입이 된 거예요. 전혀 모르는 기술 스택으로 일을 해야 하다 보니까 공부도, 주변의 도움도 많이 필요했죠. 그러다 보니 미려함과는 조금 거리가 멀었고, UI가 많이 투박했던 것 같습니다. 좀 더 예쁘게 만들 수 있는 방법을 찾아서 두 번째 버전을 다시 만들었는데 사내 베타를 진행을 하는 순간에 저희가 열심히 만든 것과는 별개로 호환되지 않는 사이트가 너무 많았어요. 이런 문제는 저희가 아무리 열심히 해도 해결하기 힘든 부분이고, 점유율이 없는 신규 주자이니 서비스 프로바이더들이 대응해 주길 기대하는 것도 어려웠습니다. 결국 오래 고생했던 자체 엔진은 접어두고 오픈소스인 크로미움 베이스로 브라우저를 다시 만들기로 했는데, 이것이 지금 배포된 버전의 시작입니다. 버전마다 많이 고생했고, 접게 될 때는 아쉽기도 했는데 매 순간이 경험이 되었던 것 같아요. 경험치가 계속 쌓이다 보니까 두 번째, 세 번째 만들 때는 점점 속도가 빨라졌거든요. 완전히 무의미한 삽질은 아니었다고 생각합니다.

컴퓨터공학이 주 전공이 아니셨나요?

저는 상경계열을 전공했는데, 원래는 광고 회사에 가고 싶었어요. 디지털 캠페인에 관심이 있었지만 막상 인턴을 해 보니까 너무 힘들더라고요. 그래서 아예 IT 회사에 취업을 해야겠다는 결심을 했죠. 뭐라도 알아야 할 것 같아서 네이버 소프트웨어 멤버십을 했는데 오히려 그게 더 적성에 잘 맞았던 것 같아요. 네이버에 개발자로 합류하게 된 계기이기도 하고요. 개발을 시작할 때는 간단한 코드를 짜면 그게 의도대로 나온다는 것 자체가 너무 재미있었는데, 배울수록 더 흥미로워졌어요. 현실 세계의 문제를 나름대로 정의하고 논리적인 모델로 만들어내는 일은 매일매일 새로운 퍼즐을 푸는 느낌이었죠. 어떻게 보면 0에서부터 창의성을 발휘해야하는 것보다는 상황을 분석하고 어느 방향이 맞는지 비교하는 일이 저한테 잘 맞았던 것 같아요. 어쩌다 보니 그때부터 쭉 브라우저만 하고 있네요.

웨일 프로젝트를 진행하면서 어떤 도움들을 받으셨나요.

당시는 저희 팀이 거의 처음 셋업되던 시기였어요. 브라우저 개발 인력을 막 충원하기 시작하던 때였는데, 그때 합류하신 분 중에 크로미움 커미터가 계셨어요. 제가 처음 만난 선배 개발자였기 때문에, 그분을 기준으로 ‘개발자의 스탠다드’ 같은 것들이 잡힌 것 같아요. 아직까지 기억이 나는 게 제가 첫 패치의 리뷰를 부탁드렸는데 코드 리뷰가 영어로 달렸어요. 꽤 드문 일이죠. 한국 사람밖에 없는 팀에서 코드 리뷰가 굳이 영어로 달린다는 건 상당한 충격이었어요. ‘글로벌 회사의 스탠다드가 이 정도는 되는구나’ 라는 생각이 들었습니다. 그때부터 거의 2~3년 가까이 코드 리뷰를 영어로 했던 것 같아요. 나중에 알게 된 것이지만 그건 굉장히 높은 기준이었죠. 어떻게 보면 첫 프로젝트에서 트레이닝을 확실하게 받았던 것 같기도 해요.

지금은 직접 크로미움 커미터로 활동하신다고 들었습니다.

첫 사수는 몇 년 후에 이직을 하셨어요. 롤 모델로 삼고 따라가야 할 대상이 항상 있었는데 이제는 내가 그 롤 모델이 되어야 하는 시점이 오더라고요. 그분이 커미터를 하셨었으니까 나도 커미터를 한번 해봐야겠다는 생각이 먼저 들었습니다. 저희 팀은 크로미움 베이스로 일을 하다 보니 크로미움 관련 일을 하면 어떤 식으로든 코드 베이스에 반영이 돼요. 사이드 프로젝트를 하기에 굉장히 좋은 환경이죠. 크로미움 커뮤니티에 있는 글로벌 개발자들에게 피드백을 받을 수 있다는 점도 큰 자극제가 되었습니다. 내로라하는 글로벌 회사에서 20년씩 일한, 굉장히 잘하는 개발자들에게 코드 리뷰를 받거나 어떻게 일하는지를 보게 되면 굉장한 동기 부여가 되니까요.

“개발자로 일하면서 개인적으로 기억에 남는 순간이 있다면
커미터가 되었을 때인 것 같아요. 회사 생활을 하면서 본인이
얼마나 성장했는지를 객관적으로 평가받는 기회가 많지 않잖아요.”

크로미움 커미터에 대해 소개해 주세요.

크로미움 커미터(Chromium Committer)란 크로미움 오픈소스 커뮤니티에서 핵심 소스코드의 수정 및 관리 권한을 가진 개발자를 뜻합니다. 크로미움 커미터가 되기 위해서는 의미 있는 패치, 너무 사소하지 않은 패치를 최소 10개 이상 만들어서 기여를 한 다음, 기존 멤버의 지명을 받아야 합니다. 그리고 두 명 이상의 찬성을 얻어야 하는 꽤 까다로운 자격 요건이 있죠. 크로미움 커뮤니티 일원으로 인정을 받으면서 내가 이때까지 쌓아온 지식이 아주 잘못되지는 않았다는 것을 느낄 수 있었습니다.

커미터로 활동하시면서 기억에 남는 에피소드가 있나요?

한번은 구글의 크롬 팀에서 인력 부족으로 구현하지 못했던 일을 도왔던 적이 있어요. 제가 해 보고 싶다고 먼저 손을 들었죠. 아직 컨셉만 있고 세부 사항이 확정이 되지 않은 상태였는데 그 컨셉을 기반으로 3~4개 정도의 버전을 만들어서 보내 주었습니다. 실제로 크롬 프로덕트에 쉬핑되었고요. 고생을 정말 많이 했었는데, 이 기능이 유저들에게 호응이 정말 좋았어요. 커뮤니티에 ‘이 기능 만들어 줘서 정말 고맙다’는 댓글이 달리기도 했습니다.
그런데 알고 보니까 제가 만든 패치에 문제가 있었어요. 일부 환경에서 엄청난 문제를 일으키는 바람에 많은 사용자들이 불편을 겪었죠. 저는 그게 왜 일어났는지 전혀 짐작도 못하고 있는 상황이었는데 다른 커뮤니티 개발자들이 직접 원인을 찾아서 고쳐 줬어요. 너무 미안해서 몇 번씩 사과를 했는데, 놀라운 대답이 돌아왔습니다. “괜찮다, 우리 모두는 실수를 하기 마련이다.” 라고요. 지금 팀에서도 가끔 사고가 일어나면 그 말로 위안을 드리고 있습니다.

고상우님 이미지2
웨일 프로젝트를 진행하면서 목표도 계속 변하셨을 것 같아요.

브라우저가 사용자들에게 좀 어려운 프로덕트인 것 같아요. 물론 잘 사용하는 분들은 이것저것 설치해서 본인 입맛에 맞게 커스터마이즈를 하기도 하고, 고급 기능을 활용해서 생산성도 높이고 하시지만요. 대부분의 사용자들은 기본 기능에 한정해서 사용하는 경우가 많아요. 초기 기획에서도 이런 부분을 보완하는 게 1순위였어요. 어려운 기능도 쉽게 사용할 수 있으면서 디자인도 예쁘게 제공하는 것.
그 이후로도 디자인을 바꾸고, 그때그때 고급 기능을 올리고 하는 변화들이 있었는데, 최근에는 코로나 때문에 또 완전히 새로운 시장이 되었어요. 화상회의 플랫폼 같은 것들이 나오면서 그런 것들까지 브라우저에 녹여 보자는 것이 또 새로운 목표가 되었죠.

“웹이 여전히 중요하다, 그리고 그 바탕에는 브라우저가 있다, 이런 부분들이
일을 하면서도 저에게 큰 동력으로 작용합니다.
브라우저에 대한 자부심이죠.”

힘든 순간도 많을 텐데, 그럼에도 불구하고 지속하게 만드는 동력은 무엇인가요.

자체 브라우저를 가진 나라가 많지 않아요. 그럼에도 브라우저를 가지고 있으면 사용자를 이해하는 일에 굉장히 큰 도움이 된다고 생각해요. 그런 분들을 위해서 또 뭔가를 준비를 할 수 있는 토양이 되는 거죠. 프로덕트 자체가 가지는 어떤 무게감과 위상이 일할 때 굉장히 큰 동력이 되는 것 같아요.
현대 소프트웨어 중에서 OS를 제외하고 가장 많이 사용하는 소프트웨어는 웹 브라우저라고 할 수 있을 것 같습니다. 인터넷을 할 때 사용하는 브라우저뿐 아니라 차량의 시스템에 들어가기도 하고, 스마트TV나 냉장고 같은 곳에 들어가기도 하죠. 심지어 네이버 앱 안에 들어가는 브라우저 엔진도 저희 팀에서 일부 커스터마이즈한 프로덕트이기 때문에 이것을 봐도 브라우저가 얼마나 많이 쓰이는지 알 수 있어요.

직업병이 있으신가요.

소프트웨어를 보면 어떻게 만들었는지 궁금할 때가 많아요. 특히 게임을 할 때 자주 궁금증이 생깁니다. 이걸 개발하려면 사람은 몇 명 정도 필요했을까, 카메라 워킹은 어떤 식으로 개발했을까. 하다못해 엘리베이터가 늦게 올 때도요. 도대체 이 알고리즘이 어떻게 되어 있길래 버튼을 눌러도 안 열리는 거지? 왜 다른 엘리베이터가 먼저 오는 거지? 하면서 고민하는 식이에요.

일을 잘한다는 것은 무엇일까요.

저도 항상 궁금한 부분이에요. 매년 리뷰할 때마다 동료들에게 질문하는 부분이기도 하고요. 그런데 개발을 잘하는 것과 일을 잘하는 것은 확실히 다른 이야기 같아요. 일을 잘한다는 건 개발만 잘해서 되는 게 아니라 그 외의 일들까지 잘 커버해야 하는 거잖아요. 사람과 사람 사이의 일을 조율한다든지, 프로세스를 만든다든지 하는 것들 말입니다. 이전에는 그냥 닥치는 일을 빨리빨리 쳐내는 데에 좀 급급했던 반면에 요즘에는 내가 이 일을 하려면 대강 어느 정도의 시간이 걸릴까, 그 일을 실제로 진행했을 때 내 추측은 얼마나 정확했을까, 이런 것들을 되돌아보는 시간을 많이 가지려고 해요. 일을 좀 더 체계적으로 할 수 있는 방법을 자주 고민합니다. 예를 들어서 이 일의 난이도를 5라고 평가했다면 이 수치가 합당한지, 5의 난이도를 가진 일을 처리하는데 시간은 얼마나 썼는지 같은 것들을 파악해서 측정하고, 일하는 방식에 반영하려고 해요.
흔한 우스갯소리로 ‘개발자들은 항상 안 된다고 하더라’는 이야기가 있는데, 사실 개발자들이 그 말을 할 때는 정말 안 된다는 의미가 아니라 ‘이 기간 안에는 하기 힘들다’는 경우일 때가 많아요. 커뮤니케이션을 명확하게 하기 위해서는 근거가 있어야 하고, 데이터를 수집해 두어야겠다는 생각이 들었습니다. 요즘엔 그런 쪽으로 노력을 하고 있어요.

요즘 고민하는 화두가 있으신가요.

연차가 쌓이고 직책이 생기고 할 때마다 일의 정의가 달라지다 보니까 계속 다시 질문을 해야 되는 것 같아요. 어떻게 하면 우리가 다 같이 일을 더 잘할 수 있을까, 내가 어떻게 해야 더 다른 개발자들에게 좋은 영향을 미칠 수 있을까. 이런 것들을 더 많이 고민하게 되는 것 같습니다.

고상우님 이미지3

Published APR. 2022

Board the Navership

지원하기 자원하기