주간 후원자 Pusher to Hacker Noon을 환영해주세요! Pusher는 전 세계 개발자가 앱에 커뮤니케이션 및 협업 기능을 빠르게 추가할 수 있는 실시간 API를 만듭니다. 핵심 제품을 통해 개발자는 인앱 알림, 활동 스트림, 실시간 대시보드, 라이브 추적기 등과 같은 기능을 쉽게 만들 수 있습니다.
오늘 우리는 Pusher 개발자 전도사인 Zan Markan을 만나 Kotlin 의 상태, 그가 하는 일을 하게 된 원동력, 우주 카우보이를 우주 카우보이로 만드는 요인에 대해 논의하겠습니다.
David : Kotlin 상태부터 시작해 보겠습니다 . 최근에 Kotlin 설문조사를 실시하셨습니다( 기본 사항에 대한 자세한 내용은 여기를 참조하세요 ). 생태계의 흐름을 파악하기 위해 2018년 1월부터 3월까지 2,744명을 대상으로 설문조사를 진행하셨습니다. 당신의 가정을 깨뜨린 결과는 무엇입니까? 어떤 결과가 당신의 가정을 확증해 주었나요? 그리고 Kotlin에서 무슨 일이 일어나고 있는지에 대한 엘리베이터 피치의 시사점은 무엇입니까?
잔 : 그렇죠. 우리는 우리 제품으로 애플리케이션을 구축할 때 Kotlin을 사용하는 개발자가 점점 더 많아지고 있다는 사실을 알고 더 깊이 파고들어 그들에게 동기를 부여하는 것이 무엇인지 알아보기로 결정했습니다. 몇 가지 놀라운 사실을 알게 되었습니다.
우선, 저는 학생들과 더 많은 후배 개발자들이 Kotlin에 베풀고 있는 사랑에 진심으로 놀랐습니다. 경험이 많은 개발자와 적은 개발자 사이에 더 큰 차이가 있을 것으로 예상했지만 Google이 커뮤니티를 지원한 이후로 새로운 군중이 실제로 Kotlin에 빠져들고 있습니다.
나를 놀라게 한 또 다른 점은 얼마나 많은 사람들이 Kotlin 팀에서 실험적이라고 분류한 기능, 즉 코루틴과 다중 플랫폼 프로젝트 지원을 각각 약 25~30%씩 시험해보고 싶어한다는 것입니다.
설문 조사 결과는 Android가 얼마나 큰지에 대한 나의 의심을 어느 정도 확인시켜 주었습니다. 설문 조사 데이터에 따르면 약 80%였습니다. 내가 본 다른 설문조사에서는 Android가 약간 덜한 것으로 나타났지만 여전히 75% 이상을 안정적으로 유지하고 있습니다. 이러한 차이점 중 일부는 내 네트워크가 대부분 Android 중심이기 때문일 수 있지만 그 효과는 그다지 크지 않았습니다.
한 가지 시사점은 Kotlin이 흥미로운 언어이며 개발자를 행복하게 만드는 언어라는 것입니다.
이는 매우 드문 일이며(적어도 주류 프로그래밍 언어 같은 경우에는) 전체 Kotlin 생태계를 중심으로 활기차고 열정적인 커뮤니티가 형성되었습니다.
Kotlin의 주요 개발은 러시아 상트페테르부르크에 본사를 둔 JetBrains 프로그래머 팀에서 이루어졌습니다. 창립에 대해 또 무엇을 말씀해 주시겠습니까? 그리고 언제 Kotlin을 처음 사용하셨나요?
내가 아는 바로는 Kotlin의 역사는 JetBrains가 개발자 도구를 위한 "더 나은 Java"를 원했던 역사였습니다. 상호 운용성과 생산성 향상은 주요 목표 중 일부였으며 당시 다른 JVM 기반 언어는 실제로 그 요구 사항에 맞지 않았습니다. Scala는 대부분의 조건을 충족했지만 도구가 없었고 빌드 시간이 너무 느렸습니다. JetBrains의 개발 요구사항을 충족합니다.
상호 운용성이 뛰어나고 더 나은 Java에 대한 정확한 아이디어가 이것이 수많은 Android 개발자(초창기부터 Android를 사용해 온 나를 포함)의 관심을 끌기 시작한 이유였습니다.
몇 년 전 안드로이드 생태계는 대부분 이전 버전의 Java, 즉 Java 7과 Java 6 사이의 이상한 하이브리드 버전에 갇혀 있었습니다. Java 6에는 람다와 같은 멋진 기능이 없고 상당히 장황했습니다. 그래서 사람들은 상호 운용성이 뛰어나고 생산성을 높일 수 있는 이 새로운 것을 가지고 놀기 시작했습니다(특히 모든 것이 망가지지 않았던 시대에는 😅).
2014년에 Kotlin에 대해 처음 들었고 그 후 여가 시간에 Kotlin을 가지고 놀거나 빠르게 프로토타입을 만드는 데 사용하면서 Kotlin의 개발을 면밀히 관찰했습니다. 저는 Pusher Chatkit 및 Feeds 제품 작업을 할 때 첫 번째 프로덕션 Kotlin 코드를 작성했습니다.
Kotlin이 경험이 부족한 개발자에게 적합한 이유가 무엇이라고 생각하시나요? 그리고 그것이 유행이 되는 것을 막으려면 어떻게 해야 할까요?
하아! 나는 그것이 경험이 적은 개발자들에게 적합하다고 생각하지 않습니다. 실제로 StackOverflow 설문 조사 결과 에서 본 것과 매우 유사한 그룹으로 간주되므로 업계가 어떻게 발전하고 있는지에 있어서 예상치 못한 것은 없습니다.
또한 숙련된(고용) 개발자가 주로 처음으로 이를 선택했으며 최근에야 학생과 젊은 개발자가 채택하기 시작한 것을 확인했습니다.
나는 Kotlin을 배우기 쉬운 언어라고 생각합니다. 대부분의 내용을 알지 못하더라도 생산성을 높일 수 있는 뛰어난 도구가 있습니다. Java와 상호 운용이 가능하므로 원하는 속도로 이식이나 마이그레이션을 수행할 수 있습니다. 마지막으로 Google과 JetBrains는 모두 Kotlin을 지원하는 문서와 리소스를 준비하는 데 최선을 다하고 있습니다.
Kotlin이 다른 프로그래밍 언어와 다른 점은 무엇이 Kotlin을 빠르게 채택하게 만들었다고 생각하시나요? 그리고 더 일반적으로, 채택을 얻기 위해 애쓰는 프로그래밍 언어와 채택을 얻는 프로그래밍 언어를 어떻게 구분한다고 생각하시나요?
Google과 JetBrains의 지원이 확실히 도움이 되었습니다. 반면, Google은 개발자 커뮤니티의 대대적인 추진 이후에만 공식적으로 Android에서 Kotlin을 지원하기로 결정했기 때문에 이미 반대편에서도 상당한 추진이 있었습니다.
실제로 저는 이것이 적절한 시기에, 적절한 커뮤니티에 등장한 언어라고 생각합니다. Android 커뮤니티는 성숙해졌고 사람들은 점점 더 생산성이 높아지는 새로운 도구를 원했습니다. Kotlin은 분명 결함이 있었지만 거기에 있었고 사람들이 올바르게 수행할 수 있을 만큼 충분히 훌륭했습니다.
Kotlin이 향후 5년 정도 동안 기존 언어 및 아키텍처와 효과적으로 경쟁하고 보완한다고 보시나요?
분명한 것부터 시작한다면 Java는 다소 쉽고 Kotlin은 이미 이를 잘 보완하고 있습니다. 나는 특히 도구가 통합되고 몇 가지 "최적 표준" 도구가 등장할 때 더 많은 것을 보게 될 것이라고 믿습니다. 이러한 도구 중 하나는 Kotlin용 기능적 프로그래밍 도구 키트인 Arrow입니다. 이 도구는 Funktionale 및 Kategory 팀이 협력하여 더 나은, 더 완전한 것을 만들기 위해 개발되었습니다. 내 생각엔 그게 추세가 될 것 같아.
다른 프로그래밍 언어의 경우 JVM에서는 Scala 및 기타 언어에서 어떤 일이 일어나는지 살펴보고 JVM 세계 외부에서는 아직 말하기 이르지만 Kotlin/Native 및 다중 프로그래밍 언어를 위한 Kotlin에 대한 몇 가지 유망한 아이디어를 보았습니다. 플랫폼 프로젝트 - 둘 다 여전히 매우 실험적이지만 몇 가지 개념 증명이 진행 중이며 매우 흥미롭습니다.
Alberto Ballano 의 " Kotlin Functors, Applicatives, And Monads in Pictures "가 Hacker News에 실렸을 때 흥미로운 토론이 제기되었습니다. Kotlin이 무엇을 위한 게이트웨이 약물이라고 생각하시나요?
사악하게 들리네요! 이는 우리를 생산적이고 행복하게 만드는 현대 프로그래밍 언어의 관문 약물입니다. 특히 Arrow와 같은 기능적 프로그래밍에 많은 사람들을 노출시킬 것이며 일부 사람들은 더 하드 코어 FP로 뛰어들 수 있습니다. 언어가 더 쉬워졌습니다.
그것이 할 수 있는 몇 가지 다른 일은 많은 Android 개발자가 모든 크로스 플랫폼 지원을 통해 웹 또는 기본 개발에 도전하도록 자극하는 것입니다. 또한 점점 더 많은 개발자가 그것을 첫 번째 프로그래밍 언어로 선택함에 따라 필연적으로 Kotlin을 다른 모든 언어를 측정하는 벤치마크로 보게 되었는데, 그것도 매우 흥미롭습니다.
언어학에서는 영어나 스페인어 같은 언어가 채택되기까지 매우 오랜 시간이 걸립니다. 그리고 방언은 많지만 완전히 새로운 음성 언어를 사용하는 것은 새로운 소프트웨어 언어를 사용하는 것보다 덜 중요합니다. 새로운 소프트웨어 언어의 비율이 감소하는 업계 성숙기에 도달할 것이라고 생각하시나요? 아니면 더 많은 새로운 소프트웨어 언어가 계속 등장할까요?
우리는 이미 여러 가지 훌륭한 프로그래밍 언어가 빠르게 채택되는 것을 보았고 최근 몇 년 동안에는 Swift, Go, TypeScript 및 Rust가 떠오릅니다. 각각은 상당한 리소스와 이를 뒷받침하는 기존 개발자 커뮤니티를 갖춘 하나 이상의 대규모 엔지니어링 조직의 지원을 받습니다.
그들 각각은 또한 조직의 특정 가려움증을 긁었고, 그 가려움증을 다른 많은 개발자가 공유하면 채택이 일어나고 언어가 시작되어 "임계 질량"을 달성할 수 있습니다. 제가 언급한 각 언어에서 그런 일이 일어났습니다. 예를 들어 Go는 Google이 동시성을 잘 수행하기를 원했을 때 시작되었으며 Rust의 목표 중 하나는 절대 충돌하지 않는 것이었습니다.
미래에는 분명히 새로운 컴퓨팅 패러다임이 있을 것이고, 새로운 아이디어가 개발될 것이라고 생각합니다. (어쩌면 블록체인이 실제로 언젠가는 될지 누가 알겠습니까?) 이는 기존 도구에는 그다지 유용하지 않을 것입니다. 다른 예는 양자입니다. 컴퓨팅이나 AI.
오늘날 대부분의 언어는 범용이라고 주장하지만, 그렇다고 해서 모든 목적에 동일하게 적합하다는 의미는 아닙니다. 우리는 새로운 언어를 요구하는 새로운 목적을 보게 될 것입니다.
Zan이라는 사람에 대해 이야기 해 봅시다. 귀하의 개인 웹사이트 에 있는 약력의 처음 두 단어는 "Space Cowboy"입니다. 어떤 사람들은 당신을 사랑의 갱스터라고 부르나요? 다른 사람들은 당신을 모리스라고 부르나요? 당신은 사랑의 화려함을 구현하고 있나요?
하, 그 노래 정말 좋아해요! 어쩌면 사랑의 갱스터일 수도 있습니다. 스타벅스 직원조차도 Zan을 Maurice로 잘못 입력한 사람은 아무도 없을 것입니다. 나는 또한 로켓을 좋아하고 여전히 반딧불이를 잃은 것을 애도하고 있습니다. 그래서 그것은 일종의 우주 카우보이 테마이기도 합니다.
그 '제목' 뒤에 숨은 실제 이야기는 몇 년 전 제가 아직 스타트업을 운영하고 있을 때 대학을 졸업한 친구들 몇 명과 함께 창업했다는 것입니다. 낯선 사람에게 돈을 요구할 때(즉, 투자금 조달) 조금 더 합법적으로 보이도록 우리 각자를 위한 명함을 만들었습니다.
나는 타이틀, 특히 모두가 거의 모든 일을 하는 C 타이틀을 좋아하지 않기 때문에 다른 방향으로 가기로 결정하고 무엇보다도 (비)정확한 Space Cowboy를 선택했습니다. 적어도 나는 그것이 좋은 대화의 시작이 될 것이라고 생각했습니다.
당신이 그것에 대해 질문했다는 사실은 그것이 실제로 대화를 시작하는 데 얼마나 좋은지 증명합니다.
웨스트코스트 스타일의 IPA를 좋아하신다고 하더군요. 나는 지금 콜로라도에 있고 Laguinatis를 그리워합니다. 서해안 IPA 상위 3/5는 무엇입니까?
나는 그들이 격렬하게 강하고 무자비하게 홉을 좋아합니다.
저는 서부 해안을 방문할 때마다 러시안 리버의 플리니 더 엘더(Pliny the Elder)와 물론 Stone IPA를 꼭 마십니다. 둘 다 드래프트입니다. 집에 가까울수록 Brewdog의 Jack Hammer를 방문할 것입니다.
좋은 개발자 전도사를 만드는 것은 무엇입니까? 직장생활은 어떻게 좋아졌나요? Pusher 기술을 전파할 가치가 있는 이유는 무엇입니까?
개발자 전도사(일반적으로 개발자 관계 담당자)에게 가장 중요한 것은 가르치고 지식을 공유하려는 진정한 열정입니다. 사실 솔직한 게 더 중요할 수도 있어요. 마침표. 개발자는 물건을 판매하는 것을 싫어하는 타고난 BS 탐지기입니다.
누군가가 더 나은 개발자가 되도록 도왔다는 사실을 알게 되면 기분도 좋습니다.
내가 더 잘해야 할 첫 번째 일 중 하나는 시간 관리입니다. 개발자 출신이기 때문에 특정 작업에 많은 시간을 할당하는 것이 훨씬 더 일반적입니다. 지금의 직업은 그보다 훨씬 더 역동적이고, 처음에는 그런 변화나 적응을 기대하지 않았기 때문에 상당히 부담스러웠습니다. 제작자와 관리자의 일정에 관한 Paul Graham의 훌륭한 에세이 는 나에게 많은 도움이 되었습니다.
제가 익힌 또 다른 유용한 기술은 프로젝트 관리입니다. 예를 들어 State of Kotlin의 경우 대부분의 작업이 설문조사 설정과 처음에는 콘텐츠 생성을 중심으로 진행되다가 다음과 같은 보다 고전적인 프로젝트 관리로 옮겨졌습니다. 디자인 및 개발과 같은 다른 관련 팀(그 작업은 내가 아니라 그 팀에서 수행했습니다. 다시 한 번 감사드립니다. 귀하가 누구인지 아실 것입니다.), 마지막으로 웹 인터뷰를 통해 다양한 출판물에 소식을 전하게 되었습니다.
Pusher의 기술은 통합이 얼마나 빠른지와 "그냥 작동한다"는 사실로 유명합니다.
그러므로 복음을 전하는 것은 매우 쉬운 일입니다. 모바일 개발 회의에서 사람들이 저를 찾아와서 Pusher를 사용하는 웹 팀의 동료들이 우리 채널 제품이 얼마나 훌륭한지 말해 줬다고 말했습니다. 정말 흥미로웠습니다. 😁
전체적으로 Kotlin은 Pusher의 장기 비전을 실현하는 데 적합합니까?
우리는 이미 Android SDK의 기본 개발 언어로 Kotlin을 선택했습니다. 우리는 Beams , Chatkit 및 Feeds와 같은 새로운 제품을 위한 SDK로 시작했으며 현재는 이에 매우 만족하고 있습니다.
또한 우리는 Kotlin이 가장 흥미롭고 참여도가 높은 커뮤니티 중 하나라고 믿습니다. 이는 우리가 Kotlin 현황 설문조사와 이에 대한 보고서를 만들기로 결정한 이유 중 하나이기도 합니다. 우리는 Kotlin이 계속해서 개발자를 행복하고 생산적으로 만들 수 있기를 바라며, Kotlin 상태가 Kotlin 도입을 더욱 촉진하는 데 도움이 되기를 바랍니다.
주간 스폰서인 Pusher는 웹, 모바일 및 가장 널리 사용되는 백엔드 스택용 SDK를 쉽게 통합하여 지원되는 전 세계 앱을 구동하는 커뮤니케이션 및 협업 API를 만듭니다. 시작하다.