The Wires : The Wires : 오픈 소스 개발자 Sindre Sorhus와의 인터뷰

방콕의 길거리 음식 식당에서 Sindre

다음은 태국에 거주하는 많은 오픈 소스 개발자 인 Sindre Sorhus의 인터뷰입니다.

어린 시절과 어디에서 자랐는지 조금 알려주십시오.

노르웨이 오슬로 외곽의 교외 지역에서 자랐습니다. 어렸을 때 레고에 관심이 많았습니다. 매년 나는 생일과 크리스마스를 위해 레고를 얻을 것입니다. 레고 스 (Legos)는 초기에 물건을 짓는 것에 관심을 갖게했습니다. 어느 시점에 방에 거대한 레고 도시가 세워졌고 방 전체를 거의 점령했습니다.

아이로 레고와 함께 건축

프로그래밍은 어떻게 했습니까?

7 살 때 가족은 첫 번째 Windows 95 컴퓨터를 구입했습니다. 나는 수학 문제를 해결하기 위해 캐릭터가 뛰어 다니는 맵 블래스터 (Map Blaster)라는 게임을했습니다. 몇 년 후 우리는 마침내 인터넷에 접속할 수있게되었습니다. 다른 사람들의 웹 페이지에서 방명록을 쓰고 GIF를 수집하는 데 많은 시간을 보냈습니다. 어느 날 웹 사이트가 어떻게 작동하는지 궁금해서 브라우저에서 "소스보기"버튼을 발견했습니다.

가족 컴퓨터에서 Sindre는 Microsoft Outlook Express를 확인하고있었습니다.

그것은 나를 위해 마음을 부는 발견이었습니다. 마우스 오른쪽 버튼을 클릭하고 소스를 본 다음 모든 것이 어떻게 만들어 졌는지 볼 수 있습니다. 처음에는 많이 이해하지 못했지만 똑같은 것을 반복해서봤을 때 그 작동 방식을 이해하기 시작했습니다. 이것이 제가 프로그래밍 여정을 시작한 방법입니다.

열 살 때 첫 웹 사이트를 만들었습니다. 몇 년 동안 소스를 살펴본 후였습니다. 미디어 배경 음악으로 애니메이션 처리 된 스타 패턴 배경의 모든 종류의 색상을 가졌으며, 그 당시 모든 사람들이 웹 사이트에서 접했던 터치 중 하나였습니다. Microsoft FrontPage를 사용했습니다.

한 번은 지루해서 아빠의 컴퓨터에 수천 개의 중첩 디렉토리를 만들었고 결국 컴퓨터가 다운되었습니다. 아빠는 컴퓨터를 다시 포맷해야했습니다. 그는 동시에 감동과 짜증을 냈습니다. 그것은 또한 내가 첫 번째 웹 사이트를 잃어버린 방법이었습니다.

나중에 학년 동안, 나는 플래시 게임에 들어갔고 우리는 방학 동안 많은 플래시 영화를 볼 것입니다. 나는 그들이 어떻게 만들어 졌는지 궁금했지만 소스 버튼은 없었습니다. 그래서 swiff 파일을 디 컴파일했습니다. 난독 처리되지 않았기 때문에 쉬웠습니다. 다시 말해 다른 사람들의 연구에서 배울 수있는 기회가되었습니다. 다른 사람들의 게임을 수정하고 모든 캐릭터를 수정하고 새로운 적을 만들었고 높은 점수를 얻었습니다. 다른 사람들이 실제로 서로 붙어있는 게임을 할 수 있다는 것을 깨달았을 때 정말 자랑스러운 순간이었습니다.

당신은 프론트 엔드 개발자이자 사진 작가로 군에서 5 년을 보냈습니다. 당시 웹 개발은 어땠습니까?

군대의 신 드레

고등학교를 졸업 한 후 노르웨이의 군대에 직접 징집되었습니다. 나는 인트라넷에서 일하는 사무실에서 대부분의 시간을 보내는 미디어 부서에 들어갔다. 우리가 막사에 살았 기 때문에 저녁에 할 일이 많지 않아서 물건을 만들기로 결정했습니다. 그러나 대부분의 경험은 다른 사람들의 PHP와 JavaScript를 복사하여 붙여 넣은 경험이었으며 그들이 어떻게 작동하는지 잘 몰랐습니다. 어느 날, 파이썬과 장고를 우연히 발견했는데 PHP에는 없었던 훌륭한 문서와 튜토리얼이있었습니다. 나는 매일 튜토리얼을 읽고 직장에서 물건을 만들기 시작했습니다.

이것이 실제 코딩이 시작된 방식입니다. 징병 후, 나는 대학 전에 여행을 갈 계획이었습니다. 그러나 나는 사이버 방어 유닛이라는 군대의 한 유닛으로부터 구인 제안을 받았습니다. 그 제안을 받아들이는 것은 흥미 로웠으며 거기서 5 년을 보냈습니다.

Sindre가 군대에서 만든 앱

TodoMVC와 Yeoman에 어떻게 참여 했습니까?

나는 2011 년경 GitHub를 사용하기 시작했지만 주로 소비자로 사용되었습니다. 나는 재미있게 보였으므로 다른 repos를보고 주연을 맡았습니다. README.md 파일에서 오타를 수정했지만 그 정도였습니다.

어느 날 TodoMVC를 우연히 발견하여 JavaScript 프레임 워크를 선택하는 데 도움이되었습니다. 비록 실제로는 성능 테스트 및 프레임 워크 기능의 문제를 해결하기 위해 훨씬 더 고급 응용 프로그램이 필요하지만, 정말 멋진 아이디어였습니다. TodoMVC에 대해 처음으로 기억 한 것은 멋진 로고가 있다는 것입니다. 매우 피상적 ​​인 것처럼 보이지만 그것이 바로 시작되었습니다.

TodoMVC 로고

나는 로고를 너무 좋아서 조금 더 둘러보기로 결정했습니다. 나는 그들이 실제로 jQuery 애플리케이션을 가지고 있지 않다는 것을 알았으므로 애플리케이션을 만들기로 결정했다. 주말에 풀 요청을 제출하고 프로젝트의 관리자 인 Addy Osmani로부터 응답을 받았습니다. 그는 나의 PR을 빨리 합병했다. 그것은 나와 같은 초보자에게 훌륭한 멋진 경험이었다. 내 앱이 이제이 인기 프로젝트에 포함되어 있다는 느낌이 듭니다. 나는 몇 주 동안 이것을했고 Addy는 정말 멋진 프로젝트에 나를 추가했습니다.

이것은 정말 오픈 소스에 관심이 있습니다. 그 전에는 수동적 인 소비자 였지만 TodoMVC를 사용하면 많은 작업을 수행하는 큰 프로젝트를 유지 관리 할 수있었습니다. 그러나 나는 그 경험에서 많은 것을 배웠습니다.

몇 달 후 Addy는 Google에서 근무했습니다. Google의 첫 프로젝트는 최신 웹 앱을위한 스캐 폴딩 도구 인 Yeoman이었습니다. 우리는 TodoMVC와 함께 일하면서 외부 기고자로 초대했습니다.

여만 로고

Yeoman의 초기 목표는 모든 사람이 훌륭한 웹 앱을 만드는 데 사용할 수있는 도구 세트를 만드는 것이 었습니다. 우리가 알지 못하는 것은 웹에는 사용 사례가 너무 많기 때문에 하나의 도구로 모든 사람의 문제를 해결할 수 없다는 것입니다. Yeoman은 많은 개발자들이 자신의 사용 사례에 맞게 Yeoman을 확장하기 위해 생성기를 생성 한 인기있는 구성이되었습니다.

React App 또는 Webpack 작성을 보면 히스토리도 반복됩니다. 누군가이 문제를 해결하기 위해이 제품을 만들기 시작하지만 모든 사람의 요구가 다르기 때문에 문제가 발생합니다. 이 도구가 모든 것을 다룰 수 없다는 것을 알게되면 구성을 추가합니다. 핵심은 균형 잡힌 접근 방식입니다. “아니요”라고 말해야하며“아니요”라고 말할시기를 알아야합니다. 사용 사례가 모호하기 때문에 일부 사용자를 실망시킬 수 있습니다. 도구를 만드는 것은 어려운 일이며 피드백이 너무 많기 때문에 오픈 소스 프로젝트에서는 훨씬 더 어렵습니다.

왜 오픈 소스에 열정을 가지고 있습니까?

오픈 소스가 마음에 들며 브라우저의 "소스보기"버튼으로 돌아갑니다. 제 생각에는 오픈 소스는 소프트웨어를 구축하는 가장 효과적인 방법입니다. 한 사람이 어려운 문제를 해결하면 모든 사람에게 이익이됩니다. 오픈 소스를 사용하면 전 세계의 믿을 수없는 사람들과 함께 일할 수 없었습니다. 우리는 우리에게 중요한 일을하고 수익 창출에 중점을 두는 대신 커뮤니티가 필요로하는 것에 집중합니다.

Paul Irish는 YouTube에서“jQuery 소스에서 배운 10 가지”라는 제목의 멋진 동영상을 보유하고 있습니다. 이것이 jQuery 소스 코드를 읽는 데 관심이있는 것입니다. Paul Irish는 옳았습니다. 실제로 배우고 싶은 방법은 무엇이든함으로써 많은 것을 배웁니다.

오픈 소스 지속 가능성은 어떻습니까?

그것은 내가 최근에 많이 생각했던 갈등의 지점입니다. 저는 약 3 년 동안 오픈 소스를 풀 타임으로했습니다. 나는 돈을 벌지 않지만이 정규직을 유급 직업으로하는 것이 좋을 것입니다. Vue.js by Evan 당신은 오픈 소스 지속 가능성이 어떻게 작동하는지 보여주는 훌륭한 예입니다. 그는 모든 사람이 원했던 프레임 워크를 만들었으며 꽤 많은 회사에서 사용했습니다. 다른 회사와 개인은 생산에 유용하기 때문에 그의 프로젝트에 투자 할 동기가 있습니다. 핵심은 프로젝트를 신뢰할 수있게 만드는 것입니다. 개인적으로 개인의 기여가 프로젝트를 유지하기에 충분하다고 생각하지 않습니다.

기부자와 이벤트 프로모션에 보상하기 위해 돈을 모을 수 있도록 Open Collective 사용에 대해 생각하고 있습니다. Webpack은 거기서 훌륭한 일을 해냈습니다. 누군가가 프로젝트에 돈을 넣을 때마다 원치 않는 변경을 할 것이라는 기대가 있었기 때문에 실제로이 문제에 오랫동안 반대했습니다. 일반적으로 회사가 프로젝트에 투자하는 경우 업무의 우선 순위를 정하고 문제를 신속하게 해결하기를 원합니다.

저는 현재 태국에 살고 있으며 1500 달러 미만이면 괜찮을 것 같습니다.

1000 개가 넘는 npm 패키지가 있습니다. 어떻게 그렇게 생산성을 유지합니까?

오해입니다. 사람들은 1000 개의 패키지를보고 매우 생산적인 제품이라고 생각하지만 깨닫지 못하는 것은 대부분의 패키지가 작고 모듈 식이라는 것입니다. 그들은 출판 될 때 거의 끝났습니다. 저는 레고를 사용한 건물과 프로그래밍을 비교하고 싶습니다 : 더 큰 구조물을 만들기 위해 조립할 수있는 많은 레고 벽돌을 만듭니다. 게시하기 전에 다른 패키지와 함께 사용하여 문제를 해결합니다. 그렇기 때문에 사용자는 너무 작기 때문에 많은 기능 요청을 제출하지 않을 것입니다. 더 필요한 것이 있으면 다른 모듈을 만들면됩니다. 내 시간의 90 %가 가장 큰 10 개의 프로젝트에 사용됩니다.

까다 롭고 독성이있는 사람들을 다룰 때 새로운 OSS 기고자에게 제공 할 수있는 조언은 무엇입니까?

저는 6 년 동안 오픈 소스를 사용해 왔으며 두꺼운 피부를 개발했습니다. 나는 그것을 모두 경험했다고 생각하기 때문에 더 이상 아무것도 귀찮게 생각하지 않습니다. 나는 약간의 독성을 경험하고 그만 둔 많은 초보자들과 이야기합니다. 오픈 소스는 인생에서 스트레스의 원인이 아닌 재미있는 일로 여겨집니다.

새로운 개발자에게 조언하는 것은 인터넷의 낯선 사람이 기분이나 운전에 부정적인 영향을 미치지 않도록하라는 것입니다. 그만한 가치가 없습니다. 걸어 갈 수있는 옵션이 있다면 탈퇴 버튼을 활용하십시오. 오픈 소스 관리자는 사용자가 고객에게 비용을 지불하지 않는다는 것을 기억해야합니다. 우리는 자유 시간에 그들에게 무언가를 무료로 제공하고 있습니다.

독성이있는 사람들은 항상 더 큰 사람이어야합니다. 그것은 잘못 들리지만, 내가하려는 것은 친절하게 그들을 죽이는 것입니다. 어떻게 든 그것은 몇 년 동안 저를 위해 일했습니다. 예를 들어 누군가 성가신 경우 상황에 대해 개방적이고 친절하게 노력하겠습니다. 나는 결코 냉소적이거나 ​​그들과 대화하지 마십시오. 트롤은 당신의 성가심과 담론에 영향을 미치므로 트롤이 없으면 당신을 내버려 둘 것입니다.

제공되는 모든 위치, 특히 Twitter에서 뮤팅 옵션을 사용합니다. 누군가가 유독 물질에 접했을 때만 깨닫는 것이 좋으며, 불필요한 갈등을 일으키는 대신 단순히 그 목소리를 끄고 입력하는 것이 훨씬 좋습니다.

당신은 당신의 자신의 모듈에 대한 몇 가지 로고를 디자인, 그들은 굉장합니다. 디자인을 어떻게 배웠습니까?

XO 프로젝트

멋진 튜토리얼을 만들기 위해 온라인 자습서를 따라 시작했습니다. 예전에는 Adobe Illustrator를 사용했지만 이제는 Sketch를 사용합니다.

디자인하기가 정말 재미 있고 더 많은 프로그래머가 시도해야한다고 생각합니다. 몇 시간 동안 프로그래밍 한 후 다른 방식으로 창의적인 작업을하기 위해 휴식을 취하는 것이 좋습니다.

또한 로고를 만들어 프로젝트에 더 많은 개성을 부여하기 때문에 프로젝트에 도움이됩니다. 일반적으로 GitHub에 리포지토리를 입력하면 헤더, 소개 및 README.md와 같은 텍스트 기반 항목이 표시됩니다. 일부 그래픽으로 마무리하는 것이 좋습니다. 로고가 있으면 사람들이 프로젝트를 사용할 가능성이 더 높습니다. 예를 들어, 우크라이나의 개발자 인 Vadim Demedes는 AVA가 릴리스 된 직후이 풀 요청을 제출했습니다. Vadim은 나중에 AVA 팀원이되었습니다. 그는 멋진 로고 때문에 AVA에 관심이 있다고 말했습니다.

Sindre가 디자인 한 AVA 프로젝트 로고

태국으로 이사하게 된 계기는 무엇입니까? 전형적인 하루의 모습을 알려주세요.

나는 태국에 대해 전혀 몰랐습니다. 군 의무 서비스에서 일할 때 여행을 계획했습니다. 나는 제안을 받고 또 다른 4 년 동안 머물렀다. 인생이 일어나기 때문에 방금 흐름을 따라갔습니다.

어느 날 Google과의 전화 인터뷰를 준비 할 때 여행을한다면 지금은 그렇지 않을 것이라고 생각했습니다. 그래서 나는 인터뷰를 취소하고 다음날 직장에서 사직서를 제출했다. 나는 태국으로가는 편도 티켓을 샀다.

동남아시아에서 반년 동안 배낭 여행을했는데 여자 친구를 만났습니다. 나는 그것이 내가 가장 좋아했기 때문에 결국 태국에 정착했습니다. 나는 풍부한 문화, 친절한 사람들, 음식을 좋아합니다. 나는 태국에서 2 년 동안 살고 있습니다.

주변 사람들이있을 때 생산성이 높기 때문에 일주일에 3 일 현지 커피 숍에서 일합니다. 그렇지 않으면 9에서 6까지 많은 오픈 소스 코딩 및 유지 관리, 때로는 내 부수적 인 프로젝트를 수행합니다. 대부분의 날, 20 건 이상의 풀 요청과 수많은 문제가 해결되었습니다. 저녁에는 여자 친구와 시간을 보냅니다. 우리는 야시장에서 매운 길거리 음식을 좋아합니다. 때로는 근무 시간에 전화를해서 늦은 밤 컴퓨터 앞에서 내 자신을 찾았습니다.

Sindre와 그의 여자 친구 임 태국 코 막에서

저는 태국어를 배우지 못했습니다. 프로그래밍 언어는 능숙하지만 구어는 프로그래밍 언어보다 훨씬 어렵고 태국어는 특히 어렵 기 때문입니다. 반면에 제 여자 친구는 태국어, 러시아어, 영어에 능통하며 스웨덴어에 능숙합니다. 어느 시점에서, 나는 태국어와 다른 언어를 배우고 싶지만 시간이 지나지 않았습니다.

AVA 프로젝트를 시작한 동기는 무엇입니까?

테스트해야 할 모듈을 많이 만들었 기 때문에 Mocha를 많이 사용했습니다. 나는 그것이 작동하는 방식에 정말로 만족하지 않았습니다. 모카는 일부 전역 객체를 주입하지만 어디에도 정의되지 않았습니다. Node.js에서 수행했기 때문에 비동기 API가 많았으며 Mocha와 관련하여 매우 편리하지 않았습니다.

사용 사례에 더 단순하고 최적화 된 것을 원했습니다. 그래서 어느 주말에, 나는 그 일을하기로 결정했고, 일요일 저녁까지 npm에 AVA 용 0.0.1 버전을 공개했습니다. JavaScript는 단일 스레드이지만 Node.js의 IO는 비동기 특성으로 인해 병렬로 발생할 수 있습니다. AVA는이를 활용하여 테스트를 동시에 실행하며, 특히 IO 무거운 테스트에 유용합니다. 또한 테스트 파일은 별도의 프로세스로 병렬로 실행되므로 잠재적으로 더 나은 성능과 각 테스트 파일에 대한 격리 된 환경이 가능합니다.

AVA 프로젝트

버그를 고칠 시간이 없었고 내 프로젝트에서만 버그를 사용하고 싶었 기 때문에 비공개였습니다. 1 년 반이 지난 후 마침내 AVA 로고를 만들고 레포를 정리하고 많은 문서를 작성했습니다. 그런 다음 프로젝트를 게시했습니다.

우리는 항상 프로젝트에 대해 긍정적 인 트윗을 받기 때문에 대부분의 사용자는 AVA에 대해 매우 행복해 보입니다. 그들은 구문이 얼마나 간단하고 시작하기가 쉬운 지 정말 좋아합니다. 방금 내 가려움증을 긁기 위해 만들었지 만 다른 사람들도 같은 문제가 있었고 내 솔루션을 좋아했습니다.

요즘에는 매주 새로운 문제와 풀 요청이 많기 때문에 프로젝트 관리에 더 많은 시간을 할애하므로 코딩 시간이 거의 없습니다.

macOS 개발에 참여하기로 결정한 이유는 무엇입니까?

Objective-C 프로그래밍을 조금했지만 좋은 경험이 없었습니다. 올해 1 월에는 Mac 응용 프로그램에 대한 아이디어가 생겼고 자유 시간이있어서 Swift로 바로 뛰어 들었습니다. 그것이 내가 보통 새로운 것을 배우는 방법입니다. 매우 자연 스럽습니다. 나는 제품을 만들고자하는 욕망으로 시작한 다음, 그 제품을 만들기 위해 어떤 기술이 필요한지 알아 낸 다음 배웁니다. 아이디어는 계획 전에옵니다.

Swift는 JavaScript보다 초기에 배우기가 훨씬 어렵지만 Swift는 형식이 강하기 때문에 빛납니다. 컴파일 할 때 옵션을 올바르게 사용하면 충돌이 거의 발생하지 않습니다. Swift에서 마음에 들지 않는 유일한 점은 여전히 ​​C의 기존 API와 상호 작용해야한다는 것입니다.

룽고 프로젝트 로고

몇 가지 생산성 및 유틸리티 앱을 작성했습니다. Lungo는 내가 작성한 메뉴 막대 앱이며 App Store에서 찾을 수 있습니다. 내가 쓴 다른 하나는 배터리 표시기입니다.

내년 계획은 무엇입니까? 풀 타임으로 가거나 재정적으로 지속 가능한 다른 방법을 고려하고 있습니까?

지난 3 년간 저축을 해왔으며 오픈 소스 소프트웨어를 사용하고 있습니다. 아시아에서는 훨씬 쉽지만 영원히 지속되지는 않습니다. 이상적으로는 재정적으로 지속 가능한 방식으로 오픈 소스를 만들고 싶지만 어렵 기 때문에 내년에 계약을 맺을 것입니다.

나는 몇 가지 다른 것을 시도했다. 내가 한 일은 GitHub README.md 파일에서 지원을 요청하는 것입니다. 광고라고 부르지 않고 작은 배너에 가깝습니다. 약간의 돈을 벌었지만 저를 지탱할 수는 없습니다.

Patreon에게 시도해 볼 수도 있습니다.

JavaScript 생태계에서 개선하고 싶은 것은 무엇입니까?

제 생각에는 JavaScript 생태계는 이미 훌륭하지만 브라우저 측면에서 해결해야 할 단점이 여전히 많습니다. 이 거대한 빌드 스크립트에는 간단한 앱을 얻기 위해 너무 많은 프로젝트가 있으므로 Node.js를 좋아합니다.

브라우저의 문제점은 브라우저가 매우 복잡하다는 것입니다. 네트워크를 생각하고, 크기와 성능을 모두 최적화해야하며, 다양한 사용 사례, 선택할 수있는 프레임 워크가 있습니다. 모든 사람들이 단순화하려고 시도하지만 너무 많은 의견을 듣고 구성을 추가하지만 상용구가 너무 많습니다. 많은 솔루션을 만드는 대신 실제 플랫폼을 수정하지 않으면 쉬운 길을 찾을 수 없습니다. 상황을 개선 할 것이라고 생각하는 것은 브라우저에서 모듈을 마침내 얻는 것입니다. 그러면 모든 것을위한 빌드 단계가 필요하지 않을 수 있습니다.

JavaScript 개발자가 유니콘에 집착하는 이유는 무엇입니까?

전체 조랑말 운동은 실제로 Django 커뮤니티에서 시작되었습니다. 원하는 기능을 묻기 시작했을 때 개발자는 "더 빠른 HTTP 파서를 원합니다"또는 "작동하는 ORM을 원합니다"라고 말합니다. 어느 날, Django 메일 링리스트의 핵심 개발자 중 하나가 기능 요청 중 하나에 응답했습니다. "아니요, 당신은 조랑말을 가질 수 없습니다!"로 전체 유니콘 운동은 그 기능 요청 거부로 시작되었습니다.

사랑스러운 조랑말 전용 웹 사이트도 있습니다.

장고, 마법의 힘을 가진 조랑말을위한 웹 프레임 워크.

JavaScript 커뮤니티에 어떻게 전파되었는지 기억이 나지 않습니다. 방금 자체적으로 일어난 일 중 하나였습니다. 유니콘처럼 재미 있고 어리석은 일을하면 프로그래밍과 OSS를 통해 일하는 데 도움이되고 사기가 높아집니다. 바보 같은 GIF도 마찬가지입니다.

ESPN.com은 Konami 코드에 마법을 부여했습니다. (출처 : http://kotaku.com/5230185/the-konami-code-makes-espncom-magical)신 드레의 웹 사이트Sindre의 노트북 홈 화면

필자는 원래이 인터뷰를 개발자와 디자이너 제품을 제작하는 사람들을 대상으로 한 인터뷰 시리즈 인 '와이어스 와이어스'에 게시했습니다.

이 프로젝트는 frontendmasters.com, egghead.io, Microsoft Edge 및 Google Developers의 후원으로 가능합니다.