Puffin's DevLog

[번역] Between the wires | Evan You

Between the Wires (인터뷰어: Vivian Cromwell) 의 허락을 받고, Evan You 인터뷰를 한국어로 번역했습니다. 개발 용어 등은 제대로 번역이 되어 있지 않을 수 있습니다. 따끔한 지적 부탁 드립니다! https://betweenthewires.org/between-the-wires-evan-you-cb56660bc8a4#.2drruksn


나는 vuejs.org 의 창작자다. vue.js 는 인기 있고 진보적인 자바스크립트 프레임워크다. 나는 Patreon 캠페인 펀딩으로 Vue 를 만들어 나가고 있다. 이전에는 구글과 미티어(Meteor)에서 일을 했다.


Q. 어린 시절과 성장한 장소에 대해 조금 이야기해달라. A. 상해 근처 중소도시에서 성장했고, 고등학교 3년 내내 상해까지 통학을 했다. 대학은 미국으로 건너갔다. 어린 시절 컴퓨터를 접했다고 생각하지만, 프로그래밍에 그렇게 빠졌던 것은 아니었다. 나는 게임에 조금 더 흥미가 있었고, 고등학생 때는 플래쉬를 가지고 많이 놀았다. 왜냐하면 상호작용하는 이야기 경험을 만들어나가는 것을 정말 즐겼기 때문이었다.

Q. 첫 프로그래밍 경험은 무엇인가? A. 미국에서 대학에 들어갔을 때, 솔직히 말하자면 무엇을 하고 싶었는지 잘 알지 못했다. 그래서 나는 미술(studio art)과 미술사를 전공했다. 졸업할 무렵, 미술과 미술사로는 직업을 찾기가 꽤나 어렵겠다는 것을 깨달았다.

내 흥미와 더 맞고 더 많은 능력을 발전시켜볼 수 있는 석사과정에 갈 수도 있겠다는 것을 알았다. 파슨스에 가서 디자인&테크놀로지 순수예술 석사과정(Master of Fine Arts for Design and Technology)을공부했다. 이건 꽤 좋은프로그램이었는데, 모든 사람이 반은 디자이너였고 반은 개발자였기 때문이다. 오픈프레임워크, 프로세싱, 일고리즘 애니메이션 같은 걸 가르쳤고, 앱과 인터페이스를 디자인해야만 했다.

파슨스는 딱히 자바스크립트를 많이 가르친 건 아니었지만, 자바스크립트에 끌렸다. 그냥 무언가를 막 만들고 곧바로 세계와 공유할 수 있다는 점에서 자바스크립트에 끌렸다. 웹에 올리고, URL을 얻으면, 브라우저를 통해 누구에게든 보낼 수가 있다. 그게 바로 웹과 자바스크립트에 끌렸던 이유다.

그때, 크롬 익스페리먼트가 막 생겨났다. 나는 완전히 반해버렸다. 즉시 자바스크립트에 빠져들어 스스로 공부하기 시작했고, 크롬 익스페리먼트와 비슷한 것들을 만들어나가기 시작했다. 그리고 포트폴리오에 포함시켰고, 구글 크리에이티브 랩의 채용담당자들이 보게 되었다. 나는 the Five Program의 일원이 되었다. 매년 크리에이티브 랩은 5명의 졸업생을 채용한다. 주로 카피라이터, 크리에이티브 테크놀로지스트, 그래픽 디자이너, 전략가, 그리고 와일드카드로 이뤄진 작은 팀이다.

Q. 좋다. 언제 그리고 어떻게 해서 지금 Vue.js 로 풀려고 하는 문제에 대해 알게 되었는가? A. 구글에서의 내 역할은 브라우저 상에서 여러 프로토타이핑을 하는 것과 관련이 있었다. 우리가 가진 생각을 가능한 한 빠르게 손에 잡히는 무언가로 만들고 싶었다. 그때 진행한 프로젝트 중 일부에는 앵귤러(Angular)를 사용했다. 나에게 있어 앵귤러는 데이터 바인딩과, DOM을 다루는, 그래서 DOM을 스스로 만질 필요가 없는 데이터 드리븐 방식의 어떤 멋진 무언가를 제공하는 것이었다. 또 그게 당신이 하길 바라는 방식으로 코드를 구조화하도록 강요하는 이런 모든 추가적인 개념을 가지고 왔다. 당시에 내가 가지고 있던 사용 사례에는 너무 무겁게 느껴졌다.

생각할 때, 앵귤러에서 내가 정말 좋아했던 부분을 뽑아내서 관련된 모든 추가적인 개념 없이 진짜 가벼운 걸 만들면 어떨까 싶었다. 나는 그 내부 구현이 작동하는 방식에 관해서도 호기심이 있었다. 이 최소한의 특징 셋을 복제하는 방식으로 이 실험을 시작했다. 예를 들면 declarative 데이터 바인딩 같은 것 말이다. 그게 바로 Vue 가 기본적으로 시작한 방식이었다. 작업을 해나갔고, 그게 잠재력이 있다는 것을 느꼈다. 내 스스로가 쓰면서 즐거웠기 때문이었다. 나는 조금 더 시간을 많이 쓰게 되었고 적절하게 채워나갔으며, 이름을 붙였고, Vue.js 라 부르게 되었다. 그게 2013년이다. 나중에, “있잖아, 내가 여기에 시간을 너무 많이 썼어. 이걸 다른 사람들이랑 나눠서, 적어도 그 사람들이 여기서 이득을 좀 보면 좋겠고, 그게 안되더라도 이걸 흥미있다고 느끼면 좋겠어”라고 생각했다.

2014년 2월, 이걸 진짜 프로젝트로 처음 릴리즈했던 방식이었다. 깃헙에 올렸고 링크를 해커뉴스에 보냈는데, 그게 실제로 첫 페이지에 올라가도록 투표를 받았다. 몇 시간 정도 거기에 있었다. 나중에, 나는 첫주 사용 데이터와 내가 배운 것을 공유하고자 기사를 썼다.

깃헙에 사람들이 와서 프로젝트에 별을 날린 첫 경험이었다. 첫 주에 아마도 수백 개의 별을 받았던 것 같다. 돌이켜보면 그땐 정말 최고 신났었다.

Q. 다른 프레임워크와 비교했을 때 Vue 를 정의하는 중심적인 것들을 나열해보자면, 무엇이 있을까?

A. 내 생각에, 다른 모든 프레임워크의 관점에서 보았을 때, Vue 는 아마도 리액트(React) 와 가장 많이 닮아있을 것이다. 하지만 좀 더 넓은 의미에서, 모든 프레임워크 중에, 나 스스로 만들어낸 용어로 ‘진보적인(progressive) 프레임워크’가 있다. Vue 가 데이터 바인딩이나 컴포넌트 같은 중심개념으로 만들어졌다는 생각은 리액트와 비슷하다. 그건 매우 집중되고, 한정된 일련의 문제를 푼다. 리액트와 비교했을 때, Vue 는 약간 더 쉽게 접근할 수 있는 데 중점을 두었다. 사람들이 HTML, JavaScript 와 CSS 같은 기본 개념을 안다면 가능한 한 더 쉽게 사용할 수 있다.

프레임워크 레벨에서, 우리는 매우 린(lean) 하고 최소한의 핵심으로 만들기 위해 노력했지만, 좀 더 복잡한 애플리케이션을 만들고자 한다면, 자연스럽게 부가적인 문제를 풀어야 할 필요를 느낄 것이다. 예를 들어 라우팅 또는 교차 컴포넌트 커뮤니케이션을 처리하는 방법은 더 큰 응용 프로그램에서 상태를 공유할 것이다. 그리고 코드 기반(code base)을 모듈화하기 위해 이러한 빌드 도구가 필요할 것이다. 어떻게 스타일을, 앱의 다른 asset 을 구성할 수 있을까? 엠버(Ember)나 앵귤러 같이 더 완벽한 프레임워크 중 대부분은 당신이 마주치는 모든 문제에 대해 자기만의 방식을 고집하려 노력할 것이며, 모든 것을 프레임워크 안에 내장하려 할 것이다.

이건 일종의 트레이드 오프(trade off)다. 사용자의 사용에 관하여 더 많은 가정을 만들려할수록, 프레임워크가 궁극적으로 감당할 수 있는 유연성은 떨어지게 되어 있다. 혹은 리액트 같은 에코시스템에 모든 것을 그대로 맡겨버려도 된다. 리액트의 에코시스템은 매우, 매우 역동적이다. 멋진 아이디어가 많이 나오지만, 변동 또한 많이 발생한다. Vue 는 핵심이 여전히 정말 최소한의 기능 셋으로 여전히 노출되어 있는 그 중간 지점 어딘가를 고르려 노력하지만, 우리 역시 라우팅 솔루션, 상태 관리 솔루션, 빌드 툴체인, CLI와 같은 점진적으로 채택할 수 있는 부분도 제공을 하고 있다. 이러한 건 공식적으로 관리되고, 잘 문서화되어 있으며, 함께 작동되도록 고안되어 있으나, 그 모든 걸 사용할 필요는 없다. 아마 이것이 Vue 와 다른 프레임워크를 다르게 만드는 가장 중요한 지점이라 생각한다.

Q. 어떤 방식으로 Vue.js 를 재정적으로 지속가능하게 만들었는가? A. 나는 이러한 사람들을 위해 가치를 창출해나고 있기 때문에, 이론적으로 이러한 가치를 재정적인 형태로 어떻게든 모을 수 있다면, 나 스스로 유지가능할 수 있어야 할 것이다. 자바스크립트 프레임워크는 비교적 사람들이 선뜻 돈을 먼저 지북하기 어렵기 때문에, 이건 꽤나 복잡한 일이다. 자바스크립트 에코시스템이 돌아가는 것을 감안하면 그렇다.

Vue 는 매우 활발한 사용자 기반을 가지고 있다. Vue 사용자 중 많은 사람들이 라라벨(Laravel) 커뮤니티 출신이며, 또한 매우 열정적이면서도 좋은 사람들이다. 생각하기에, 크라우드 펀딩이 효과가 있을까 싶었다. 나는 그 아이디어를 패트레온(Patreon)에서 실험을 해보려 했다. 리액트에서 인기가 많은 로더(loader)인 리덕스(Redux)의 창시자 댄 아브라모프(Dan Abramov)도 사실 전에 패트라온에서 비슷한 작은 캠페인을 했었다. 이건 사실 내 관심사이기도 했다. 얼마나 많은 사람들이 Vue 를 이용하는지를 확인해볼 수 있는 러프한 생각이 있는데, 가령 1만 명의 사용자가 있다고 해보자. 만약 그 중 1%가 매달 10달러 정도를 낼 의향이 있다면, 그건 정말 짱이다.

2월에, 나는 패트레온 캠페인을 시작했고, 이건 두 부분으로 구성되어 있다. 한 부분은 Vue 를 이용하는 개인을 타겟으로 한다. 일반적으로 커피값 정도의 작은 금액을 기꺼이 낼 용의가 있다. 그리고 실제 회사인 다른 부분은 스타트업이나 컨설팅 회사로, Vue 로 무언가를 만든 팀이다. 그들의 입장에서, Vue 가 오래 유지되는 건 중요하다. 그들의 재정적인 지원이 Vue 를 좀 더 지속가능하게 만들며 장기적인 관점에서 이용할 때 안전하다고 느낄 수 있도록 마음의 평화를 줄 것이다.

다른 부분은 리워드다. 만약 회사가 우리를 지원하기로 했다면, 나는 vuejs.org 에 로고를 올릴 수 있다. 이건 커뮤니티에 대한 인식을 높인다. 절반의 패트레온 펀드가 개인에게 왔고 그 중 하나는 매달 2,000달러다. 내가 처음 시도했을 땐 이게 성공할 거라고 생각하지 않았는데, 꽤나 먹혔다는 것으로 드러났다. 한 달에 4,000달러를 벌었을 때 꽤나 큰 도약을 한 것 같고, 이제는 월 9,800달러 넘게 늘어나 있다.

Q. 사람들에게 당신을 지원하라고 설득하는 데 많은 시간이 걸렸나? 이건 그저 새로운 프레임워크일 뿐이고, 고작 6개월밖에 되지 않은 데 대하여 그들이 회의적이지는 않았나?

A. 패트레온 캠페인을 시작했을 때 , Vue 는 이미 엄청나게 강력한 성장을 보여주고 있었다. 2015년 초, Vue 는 대체로 랜덤한 오픈소스 프로젝트였지만, 라라벨 커뮤니티는 Vue 를 가지고 박차를 가하기 시작했다. 나는 내가 이걸로 어떤 돈도 벌지 못한다면, 말도 안될 것이라 느꼈다.

나는 Strikingly 에 특별한 감사를 표한다. 상해에 기반한 스타트업이다. 중국에서 자바스크립트와 루비(Ruby) 커뮤니티에서 활발하게 활동하고 있다. 그들은 실제로는 Vue 를 그렇게 많이 쓰지는 않았지만, 오픈소스 프로젝트를 매월 후원하고 있다. 6개월 동안 매월 2,000달러씩 후원을 했다.

이건 초기에 상당한 도움이 되었다. 또한, 라라벨의 창시자인 테일러 오트웰(Taylor Otwell)도 Vue 를 지원했다. 100달러에서 시작해, 200달러로, 500달러까지 올렸다.

Q. 매우 빠르게 성장했기 때문에 지원을 받았다고 말했다. 마케팅은 하지 않았나? 아니면, 오가닉하게 성장했나?

A. 단언컨대 마케팅으로는 어떤 실제 돈을 쓰지 않았다고 말할 수 있다. 광고나 그런 건 사지 않았다. 대부분은 그냥 블로그에 글을 좀 썼다. 트위터 계정을 관리하는 데는 시간을 좀 썼다. 가끔 미디엄(Medium)에 포스트를 썼다.

Q. 국제적으로 큰 호응을 얻었다. 이건 매우 독특한 일이다. 이게 어떻게 일어났으며, 미국 이외의 지역에서 개발자를 끌어들일 수 있었던 도전과 모범 사례에 대해 듣고 싶다.

A. 중국 시장은 독특하다. 나는 중국사람이고, 중국의 자바스크립트 커뮤니티에 관련이 되어 있다. 많은 사람들이 Vue 를 알고 있었는데, 그들이 나를 알고 있었기 때문이었다. 우리는 Vue 문서 전체를 정말 잘 쓰여진 중국어로 번역했고, Vue 가 중국에서 자리잡는 데 큰 도움이 되었다. 많은 사용자들은 또한 “이 라이브러리 저자가 중국 사람”이라는 걸 알 것이다. 이건 자연적으로 한번이라도 클릭해보도록 만들 것이긴 하지만, 초기 단계에서는 큰 도움이 되었다. Vue 는 알리바바, 텐센트, 바이두를 포함해 중국의 많은 회사에서 사용되기 시작했다. 이건 모두 중국에서 10억달러의 가치가 있는 회사들이다. 리액트 또한 중국에서 큰 지분을 가지고 있는 게 사실이다.

Quora 와 비슷하게, 중국에는 Zhihu 라는 사이트가 있는데, 사람들은 여기서 갖가지 질문을 한다. 나는 여기서 자바스크립트와 Vue.js 와 관련한 질문에 대답을 해주고 있다.

Q. 세계의 커뮤니티와 쉽게 소통할 수 없는 회사나 스타트업, 오픈소스 프로젝트에 해주고 싶은 이야기가 있는가?

A. 아마도 언어 장벽은 가장 어려운 부분이다. 중국에서 열과 성을 다해 노력하지 않은 경우, 누구도 당신의 아이디어를 알아차리지도 못할 것이다. 리액트만큼 크지 않는 한 말이다. 중국어를 할 수 있는 누군가가 필요하다.

또 다른 흥미로운 사례는 이탈리아, 스페인, 포르투갈, 일본 같은 다른 지역에서의 수많은 사용자들이다. 대부분의 활발한 컨트리뷰터 중 일부는 일본 사람이다. 이들은 정말로, 정말로 번역을 함에 있어 세심하다.

Q. Vue 를 만드는 동안 다시는 저지르고 싶지 않은 문제가 있었나?

A. 흐음, 아마도 몇몇이 있을 것이다. 돌이켜보자면, Vue 는 바닥에서부터 두 번 재작성되었다. 분명히, 원래 구현을 하는 데 있어 점진적으로 다시 해결해서 풀 수 없는 문제가 있었기 때문이다. 6개월 전부터, 6개월마다 코드를 베이스부터 보고 있다. 나는 “우와. 대체 이게 어떻게 작동한거야?” 싶을거다. 나는 특정한 방법으로 문제를 완전히 다시 생각해봐야 겠지만, 그게 바로 소프트웨어 개발이라고도 생각한다. 처음해서는 절대로 옳은 것을 가질 수 없기 때문이다.

Vue 를 만드는 여정은 개발자로 성장하는 여정이기도 했다. 왜냐면 시간이 지날수록 나는 새로운 기능을 추가해야 했고, 유지해야 했으며, 버그를 고쳤고, 전체 에코시스템이 올바르게 돌아갈 수 있게 만들어야 했기 때문이다. 그건 아마도 자연스럽게 소프트웨어 엔지니어가 되어 가면서 마주치는 문제에 노출되는 과정이라 생각한다. 배우는 단계다.

Q. Vue 에 직면했을 때 겪었던 감정적인, 혹은 비기술적인 어려움이 있었나?

A. 분명히 있었다. 경쟁 측면에서 많은 압박을 느꼈다. Vue 가 여전히 덜 알려져 있던 시잘, 그 압박은 그렇게 크지 않았다. 어떤 노출이라도 좋은 것이었기 때문이다. 사람들은 당신을 특정한 기준으로 올려두지도 않을 것이다. 하지만 Vue 가 점점 성장하면서, 자연스럽게 사람들은 Vue 를 앵귤러나 리액트와 비교하기 시작했고, “이봐, 리액트는 이걸 더 잘한다고. 앵귤러는 이 부분에서 더 낫다고” 하며 지적하기 시작했다.

그건 정말 많은 압박이 되며, 다른 모든 거대한 녀석들과 경쟁하는 건 정말 스트레스가 많을 수밖에 없다. 특히 지금 나는 내 시간을 온전히 여기에 쏟고 있다. 에코시스템에서 Vue 의 생존가능성은 기본적으로 내가 얼마나 잘하는지에 달려 있다.

하지만 최근 Elm 의 저자인 Evan Czaplicki 의 강연을 봤다. Elm 을 만들면서 비슷한 압박을 느끼는 것에 대한 이야기였다. 리액트 위에는 ClojureScript 인터페이스인 Om이 있었다. 저 어딘가에는 자바스크립트 언어에 대한 다른 함수형 컴파일러인 PureScript도 있었다. 그는 또한 Elm 이 어떻게 이러한 라이브러리와 경쟁할 수 있을지를 걱정했다. 나중에, 그가 파이썬의 저자인 귀도(Guido)에게 말했고, 귀도는 조언을 주었는데, “그저 좋은 일을 하라”고 이야기했다. 그 생각 뒤에 보면, 파이썬도 비슷한 문제를 가지고 있다는 것이었다. 루비, 자바스크립트, Perl 등 다른 역동적인 언어와 경쟁을 하고 있으며, 동일한 문제 영역에도 들어가 있다. 결국 이 언어들은 각자의 영역에서 성공을 거둔 후, 그 언어를 즐기는 자신만의 전담 커뮤니티를 운영한다.

사람들은 어떤 이유로 여러 다른 언어를 선호한다. 자바스크립트 프레임워크와 비슷하게, 사람들은 여러 다른 프레임워크를 어떤 이유로 선호한다. 모든 사람을 행복하게 만드는 진정한 하나의 프레임워크가 될 수는 없다. 더 중요한 것은 실제로 이걸 사용하는 사람들이 당신의 프레임워크를 즐기도록 게속 낫게 만들어 나가는 데 있다. 프레임워크에서 가장 가치 있다고 믿는 것에 집중하고 당신이 훌륭한 일을 하고 있다고 그저 확신을 해야 한다. 다른 것과 비교하지 말고 말이다.

Q. Vue 를 위한 성공적인 결과물은 무엇이라 생각하나?

A. 이건 좀 어려운 질문이다. Vue.js 의 범위가 시간이 지남에 따라 확실히 넓어지고 있기 때문이다. 우리는 이제 이 전체 프레임워크 에코시스템을 보유하고 있으며, Vue 컴포넌트를 네이티브 UI 로 렌더링하는 Weex 와 같은 것을 탐색하는 데까지 넓혀가고 있다.

나는 또한 Vue 의 접근가능성에도 정말 신경을 쓰고 있다. 기술이 더 많은 사람들이 무언가를 만들도록 해야 한다는 믿음에 뿌리를 내리고 있기 때문이다.

Q. 다음 몇 가지는 프로그래밍과는 무관한 질문이다. 프로그래밍 말고 다른 취미가 있는가?

A. 애니, 나는 만화를 정말 많이 읽는다. 알아차리지 못했을까봐 얘기하자면, Vue 의 릴리즈는 애니 이름을 기반으로 한 코드이름을 가지고 있다. (…!) 나는 노래방도 정말 좋아한다.

Q. 가장 흥미가 있는 기술이나 트렌드를 얘기해달라.

A. 일반 기술(General technology)이다. 나는 AR 이나 VR 같은 데 그렇게까지 흥미가 있지 않은데, 좀 이상하긴 하다. 나는 정말로 개발자들과 가까운 것들에 대하여 이야기하고 싶다. 길레르모가 Now 와 하고 있는 그 무엇말이다. 개발자는 개발자를 위한 툴을 만든다. 그리고 이러한 툴의 개발자 경험, 즉 사용자 경험이지만 개발자를 위한 툴 말이다.

Q. 프로그래밍 히어로를 몇 명 말해달라.

A. TJ Holowaychuck 와 Guillermo Rauch 다. 나는 컴퓨터공학 전공자가 아니다. 나느 기본적으로 여기저기 흩어져 있는 온라인 자료와 책에서 프로그래밍을 기본적으로 배웠다. 하지만 내가 배운 중요한 방식은 다른 사람의 코드를 읽으면서였다. 내가 TJ 의 코드를 읽으면, 그건 언제나 우아하다고 느낀다. ‘우아함’은 항상 마음에 떠오르는 단어이며, 내게 영향을 많이 준다. TJ 는 확실히 나의 영웅이다.

Between the Wires 트위터: https://twitter.com/betweenthewires

이 프로젝트를 지원하고 싶다면: https://opencollective.com/betweenthewires

Loading script...