Dê as boas-vindas ao nosso patrocinador semanal Pusher to Hacker Noon! A Pusher cria APIs em tempo real que permitem que desenvolvedores de todo o mundo adicionem rapidamente recursos de comunicação e colaboração aos seus aplicativos. Seu produto principal permite que os desenvolvedores criem facilmente recursos como notificações no aplicativo, fluxos de atividades, painéis em tempo real, rastreadores ao vivo e muito mais.
Hoje vamos conversar com o evangelista desenvolvedor do Pusher, Zan Markan , para discutir o estado de Kotlin, o que o leva a fazer o que faz e o que torna um cowboy espacial um cowboy espacial.
David : Vamos começar com o estado de Kotlin . Recentemente, você realizou uma pesquisa Kotlin (mais sobre os detalhes básicos aqui ). Você entrevistou 2.744 pessoas de janeiro a março de 2018 para avaliar o ecossistema. Que resultados desafiaram suas suposições? Que resultados confirmaram suas suposições? E qual é a conclusão do que está acontecendo com Kotlin?
Zan : Isso mesmo. Percebemos cada vez mais desenvolvedores usando Kotlin ao criar aplicativos com nossos produtos, então decidimos nos aprofundar e descobrir o que os motiva. Eu descobri algumas coisas surpreendentes.
Em primeiro lugar, fiquei genuinamente surpreso com o amor que os alunos e mais desenvolvedores juniores estão dando ao Kotlin. Eu esperava uma diferença maior entre desenvolvedores mais/menos experientes, mas as novas multidões estão realmente entrando no Kotlin desde que o Google colocou suas armas em apoio à comunidade.
Outra coisa que me surpreendeu foi quantas pessoas estão interessadas em experimentar os recursos rotulados como experimentais pela equipe Kotlin, ou seja, corrotinas e suporte para projetos multiplataforma - cerca de 25-30% cada.
Os resultados da pesquisa confirmaram mais ou menos minhas suspeitas sobre o tamanho do Android – cerca de 80% de acordo com os dados da nossa pesquisa. Algumas outras pesquisas que vi mostram um pouco menos do Android, mas ainda assim confortavelmente acima da marca de 75%. Parte dessa diferença pode ser devido ao fato de minha rede ser principalmente focada no Android, mas o efeito não foi claramente tão grande.
Uma conclusão é que Kotlin é uma linguagem interessante e que deixa os desenvolvedores felizes.
Isso é bastante raro (pelo menos para algo como uma linguagem de programação convencional) e resultou em uma comunidade vibrante e entusiasmada que se formou em torno de todo o ecossistema Kotlin.
O desenvolvimento principal do Kotlin vem de uma equipe de programadores JetBrains com sede em São Petersburgo, Rússia. O que mais você pode nos contar sobre sua fundação? E quando você usou Kotlin pela primeira vez?
Pelo que sei, a história do Kotlin é a da JetBrains querendo um “Java melhor” para suas ferramentas de desenvolvedor. Interoperabilidade e maior produtividade eram alguns de seus principais objetivos, e nenhuma outra linguagem baseada em JVM na época realmente se adequava ao projeto - Scala atendeu a maioria dos requisitos, mas as ferramentas simplesmente não estavam lá e os tempos de construção eram muito lentos para as necessidades de desenvolvimento da JetBrains.
Essa ideia exata de um Java altamente interoperável e melhor foi o motivo pelo qual isso começou a atrair tantos desenvolvedores Android (inclusive eu, que tenho Android desde os primeiros dias).
Há alguns anos, o ecossistema Android estava basicamente preso a uma versão antiga do Java – um estranho híbrido entre Java 7 e Java 6, que não tinha recursos interessantes como lambdas e era bastante detalhado. Então as pessoas começaram a brincar com essa coisa nova que parecia bem interoperável e permitia maior produtividade (principalmente nos momentos em que não quebrava tudo 😅).
Foi isso que me atraiu também - ouvi falar dele pela primeira vez em 2014 e depois fiquei de olho no desenvolvimento do Kotlin - seja brincando com ele em meu tempo livre ou usando-o para prototipar coisas rapidamente. Escrevi o primeiro código Kotlin de produção ao trabalhar nos produtos Pusher Chatkit e Feeds .
Por que você acha que o Kotlin atendeu a desenvolvedores menos experientes? E o que impede que isso seja uma moda passageira?
Ha! Na verdade, vejo-o como um agrupamento bastante semelhante ao que vimos nos resultados da pesquisa StackOverflow, portanto, nada inesperado em termos de como a indústria está se desenvolvendo.
Também vimos que ele foi adotado principalmente por desenvolvedores experientes (empregados) e só recentemente começou a ser adotado por estudantes e desenvolvedores mais jovens.
Vejo Kotlin como uma linguagem rápida de aprender. Existem ferramentas excelentes que nos permitem ser produtivos mesmo sem saber a maior parte. É interoperável com Java, portanto, qualquer portabilidade ou migração pode acontecer no seu próprio ritmo. E, por último, tanto o Google quanto a JetBrains estão fazendo um ótimo trabalho preparando documentação e recursos de suporte ao Kotlin.
O que separou o Kotlin de outras linguagens de programação que você acha que impulsionou sua rápida adoção? E de forma mais geral, o que você acha que separa as linguagens de programação que são adotadas das linguagens de programação que lutam para obter adoção?
O suporte do Google e da JetBrains definitivamente ajudou. Por outro lado, o Google decidiu oferecer suporte oficial ao Kotlin no Android somente APÓS o grande impulso da comunidade de desenvolvedores, então já houve um impulso substancial do outro lado também.
Na verdade, acho que é uma linguagem que apareceu na hora certa, na comunidade certa – a comunidade Android, à medida que amadureceu e as pessoas queriam que novas ferramentas se tornassem cada vez mais produtivas. Kotlin simplesmente estava lá, com certeza tinha suas falhas, mas estava lá e era bom o suficiente para que as pessoas fizessem certo.
Como você vê o Kotlin competindo e complementando efetivamente as linguagens e arquiteturas existentes nos próximos 5 anos ou mais?
Se começarmos com o óbvio, então Java é bastante fácil e Kotlin já o complementa bem. Acredito que definitivamente veremos mais disso, especialmente quando as ferramentas se consolidarem e surgirem algumas ferramentas “padrão ouro”. Uma dessas ferramentas é o Arrow, um kit de ferramentas de programação funcional para Kotlin, desenvolvido a partir da união das equipes Funktionale e Kategory para criar algo melhor e mais completo. Acho que essa será a tendência.
Quanto a outras linguagens de programação - na JVM veremos o que acontece com Scala e outras, e fora do mundo JVM ainda é muito cedo para dizer, mas vi algumas ideias promissoras sobre Kotlin/Native e Kotlin para multi- projetos de plataforma — ambos ainda muito experimentais, mas algumas provas de conceito estão aí, funcionando e bastante interessantes.
Quando “ Kotlin Functors, Applicatives, And Monads in Pictures ” de Alberto Ballano apareceu no Hacker News , surgiu uma discussão interessante… Para que você acha que Kotlin é uma porta de entrada para drogas?
Isso parece nefasto! É uma porta de entrada para linguagens de programação modernas - aquelas que nos tornam produtivos e felizes. Definitivamente exporá muitas pessoas à programação funcional - especialmente com coisas como Arrow, e isso pode permitir que algumas pessoas saltem para FP mais intensos. idiomas mais fáceis.
Algumas outras coisas que ele pode fazer é estimular um grupo de desenvolvedores Android a se aventurarem no desenvolvimento web ou nativo, com todo o seu suporte multiplataforma, e também, à medida que mais e mais desenvolvedores o adotam como sua primeira linguagem de programação, eles inevitavelmente passamos a ver o Kotlin como uma referência com a qual comparam todas as outras linguagens, e isso também é bastante interessante.
Em linguística, leva muito tempo para que uma língua, como o inglês ou o espanhol, seja adotada. E são muitos dialetos, mas o uso de uma linguagem falada inteiramente nova é menos proeminente do que o uso de novas linguagens de software. Você acha que chegaremos a um ponto de maturidade do setor em que a taxa de novas linguagens de software diminuirá? Ou continuarão a surgir mais novas linguagens de software?
Já vimos um monte de linguagens de programação excelentes ganharem uma adoção séria rapidamente e, nos últimos anos, Swift, Go, TypeScript e Rust vêm à mente. Cada um deles é apoiado por uma (ou mais) grande organização de engenharia com recursos substanciais e comunidades de desenvolvedores existentes por trás dela.
Cada um deles também coçou uma coceira específica em suas organizações, e se essa coceira for compartilhada por muitos outros desenvolvedores, então a adoção acontece e uma linguagem decola, permitindo que ela atinja “massa crítica”. Foi o que aconteceu com cada uma dessas linguagens que mencionei - Go, por exemplo, começou quando o Google queria fazer bem a simultaneidade, e um dos objetivos do Rust era nunca travar.
Quanto ao futuro, acho que definitivamente haverá novos paradigmas de computação, novas ideias sendo desenvolvidas (quem sabe, talvez o Blockchain realmente se torne uma coisa algum dia) - isso não será muito útil com nossas ferramentas existentes.Alguns outros exemplos são quânticos. computação ou IA.
Embora a maioria das linguagens hoje em dia afirmem ser de uso geral, isso ainda não significa que sejam igualmente adequadas para todos os propósitos. Veremos novos propósitos que exigirão novas linguagens.
Vamos falar sobre Zan, a pessoa. As duas primeiras palavras da biografia em seu site pessoal dizem “Space Cowboy”. Algumas pessoas chamam você de gangster do amor? Outras pessoas te chamam de Maurice? Você personifica o pompatus do amor?
Ha, eu amo essa música! Gângster do amor, talvez, já que não acho que alguém tenha conseguido escrever Zan errado para Maurice, nem mesmo a equipe do Starbucks. Eu também adoro foguetes e ainda lamento a perda de Firefly, então esse também é um tema de cowboy espacial.
A verdadeira história por trás desse “título” é que há alguns anos, quando eu ainda dirigia uma startup, fundei com alguns amigos de fora da universidade. Para parecer um pouco mais legítimo ao pedir dinheiro a estranhos (ou seja, levantar um investimento), mandamos fazer cartões de visita para cada um de nós.
Não gosto muito de títulos, especialmente títulos C, quando todo mundo está fazendo praticamente tudo, então decidi seguir o outro caminho e escolhi Space Cowboy, que é tão (in) preciso quanto qualquer coisa. Pelo menos achei que seria um bom começo de conversa.
O fato de você ter perguntado sobre isso só prova o quão bom ele realmente é para iniciar uma conversa.
Dizem que você gosta do IPA estilo West Coast. Estou no Colorado agora e sinto falta de Laguinatis. Quais são os seus 3/5 principais IPAs da costa oeste?
Eu gosto deles violentamente fortes e implacavelmente saltitantes.
Sempre que visito a Costa Oeste, certifico-me de ter um Pliny the Elder by Russian River e, claro, Stone IPA – ambos draft, obviamente. Quando mais perto de casa, minha preferência seria Jack Hammer da Brewdog.
O que é um bom desenvolvedor evangelista? Como você melhorou em seu trabalho? O que faz com que a tecnologia Pusher valha a pena ser evangelizada?
A coisa mais importante para um evangelista de desenvolvimento (qualquer pessoa de relações com desenvolvedores em geral) seria uma paixão genuína por ensinar e compartilhar conhecimento. Na verdade, é provavelmente ainda mais importante ser genuíno. Ponto final. Os desenvolvedores são detectores naturais de besteiras que odeiam que coisas sejam vendidas.
Também é uma sensação ótima quando você sabe que ajudou alguém a se tornar um desenvolvedor melhor.
Uma das primeiras coisas em que tive que melhorar foi o gerenciamento do tempo. Vindo de uma experiência de desenvolvedor, é muito mais comum ter grandes períodos de tempo para alocar para determinadas tarefas. Meu trabalho atual é muito mais dinâmico do que isso e, no início, quando eu não esperava aquela mudança ou ajuste, foi bastante opressor. O excelente ensaio de Paul Graham sobre as agendas dos criadores e dos gerentes me ajudou muito.
Outra habilidade útil que aprendi é o gerenciamento de projetos - com o State of Kotlin, por exemplo, a maior parte do meu trabalho girava em torno da configuração da pesquisa e da criação do conteúdo primeiro, e depois passei para o gerenciamento de projetos mais clássico, como a coordenação com outras equipes envolvidas, como design e desenvolvimento (eles fizeram esse trabalho, não eu, obrigado novamente - você sabe quem você é) e, finalmente, na divulgação em diversas publicações, fazendo entrevistas na Web.
A tecnologia da Pusher é conhecida pela rapidez de integração, bem como pelo fato de “simplesmente funcionar”.
Como tal, é muito fácil evangelizar. Algumas pessoas vieram até mim em uma conferência de desenvolvimento móvel e me disseram que seus colegas da equipe da web que usam o Pusher lhes pediram para me dizer o quão bom é o nosso produto Canais - isso foi emocionante 😁
Resumindo, onde Kotlin se encaixa para concretizar a visão de longo prazo de Pusher?
Já apostamos no Kotlin como principal linguagem de desenvolvimento para nossos SDKs Android. Começamos com os SDKs para os novos produtos — Beams , Chatkit e Feeds , e atualmente estamos bastante satisfeitos com isso.
Também acreditamos que Kotlin tem uma das comunidades mais interessantes e engajadas, e isso também é parte do motivo pelo qual decidimos criar a pesquisa State of Kotlin e o relatório para ela. Certamente esperamos que o Kotlin continue deixando os desenvolvedores felizes e produtivos, e que o Estado do Kotlin ajude a impulsionar ainda mais sua adoção!
Pusher , nosso patrocinador semanal, cria APIs de comunicação e colaboração que potencializam aplicativos em todo o mundo, com suporte de SDKs fáceis de integrar para web, dispositivos móveis, bem como as pilhas de back-end mais populares. Iniciar.