“Sou apenas um entusiasta do projeto e usuário da linguagem Dart” - entrevista com Ari Lerner, autor do famoso ng-book



Como escrever nove livros sobre tecnologias completamente diferentes, incluindo Angular, Vue, React, React Native e outros? O que é mais importante no treinamento, o que é o "bate-papo no corredor" e, em geral, o que Dart e Flutter têm a ver com isso?

Hoje, nosso convidado é autor de muitos livros e artigos sobre programação, incluindo o ng-book - Ari Lerner . Qual será o próximo livro, o que o autor pensa de uma linguagem tão contraditória como Dart e por que é tão importante se comunicar em conferências, perguntam os sujeitos do comitê de programa da conferência HolyJS ( Dmitry Dmitry Makhnev Makhnev e Evgeny bunopus Kot ).

Olá. Haverá três seções em nossa entrevista, na primeira falaremos sobre você, na segunda sobre Flutter e a terceira será final. Vamos primeiro falar um pouco sobre você?

- Para começar, gostaria de agradecer pelo convite - estou muito feliz por ter a oportunidade de falar no HolyJS. Quanto a mim, eu moro no Brooklyn em Nova York e programo o máximo que me lembro - minha primeira língua foi montadora no início dos anos 90. No momento, estou envolvido em cadeias de blocos e aprendizado profundo, até agora separadamente. Na maioria das vezes, trabalho com clientes, ajudo-os a entrar na OIC (Ofertas Iniciais de Moedas) e ajudo-os a trabalhar com a economia de token. E também comigo vive um delicioso cachorro Ginger, um cruzamento entre um chihuahua e um corgi - posso falar sobre isso sem parar.

"Como ela é?" O tamanho de um chihuahua, mas desgrenhado, como um corgi?

- Sim, este é um Corgi menor com cara de Chihuahua. Muito bom

- O que você está ganhando agora? Você escreve livros ou trabalha para uma empresa?

- Isso e outro. Estou escrevendo um livro, mas isso não leva mais tempo. Até que eu decidi o que fazer a seguir, trabalho para mim.

- Pelo que entendi, há 5 ou 6 anos atrás você fundou o Fullstack.io?

- Sim, foi em 2012.

- Conte-nos sobre ele.

- O Fullstack consiste em duas partes: é uma editora de livros didáticos sobre programação, além de uma plataforma educacional. Em relação à publicação de livros didáticos, nosso principal público são desenvolvedores profissionais, mas também fornecemos livros didáticos para universidades, escolas e programas de educação continuada. Além disso, realizamos treinamentos on-line e ao vivo, geralmente como parte da educação continuada. Trabalhamos com empresas como General Electric, Walmart, militares, e assim por diante.

Ótimo. Você compete com O'Reilly ou tem uma área completamente diferente?

- Fazemos coisas muito parecidas com o que O'Reilly faz, mas não competimos diretamente com elas, porque temos uma escala completamente diferente - não ameaçamos a dominação mundial de livros de programação por O'Reilly. Além disso, temos uma abordagem um pouco diferente. Normalmente, os livros após a publicação não são atualizados; assim que você os lê, já está desatualizado. Se você comprar um livro conosco, forneceremos atualizações constantes.

- Você publica livros em papel ou apenas eletrônicos?

- Ambos e outros. Nós vendemos livros em papel pela Amazon, mas não podemos ser atualizados. Os e-books comprados no Fullstack são atualizados automaticamente. Você não pode atualizar através da Amazon - eles têm um controle muito rígido.

- Pelo que entendi, você é o co-autor de muitos livros no Fullstack.io - Fullstack React, Fullstack React Native e, é claro, o famoso ng-book. Para escrever um livro, você precisa estar muito familiarizado com a área de assunto sobre a qual está escrevendo - seja Angular, React, Vue ou qualquer outra coisa. Como é a sua preparação para escrever um livro?

Boa pergunta. Deixe-me contar primeiro como comecei a escrever livros, e por que gosto desta lição? E então vamos prosseguir com o andamento do trabalho em cada livro.

"Sim, claro."

- Em 2012, alcancei o teto da empresa em que trabalhava e decidi que era hora de sair. Criei minha startup - acredite ou não, mas era uma empresa de agendamento. Para ela, escrevi um elegante back-end em Erlang e Python, ao que parece, com um toque de Ruby. Mas como não havia um bom front-end, comecei a explorar várias estruturas e me deparei com a Angular. Demorou muito tempo para a versão 1.0. Comecei a escrever um front-end para a minha startup e gostei muito do Angular, mas a documentação era horrível. Para entender como essa estrutura funciona, comecei a ler o código-fonte e descobrir como ele funciona - foi assim que me familiarizei com o Angular.

Na mesma época, me pediram para dar uma palestra sobre JavaScript em um campo de treinamento para desenvolvedores em San Francisco e depois percebi que realmente gosto de ensinar. Decidi combinar esses dois interesses e comecei a escrever um mini-guia para Angular para iniciantes. No começo, pensei que seriam duas ou três páginas de texto, mas no final havia 650 páginas que continuei atualizando ao longo dos anos. Acabei me tornando o autor ou co-autor de nove livros. Ensinei como voluntário em todos os principais campos de treinamento de desenvolvedores de São Francisco. Também trabalho como voluntário em organizações como o Women Who Code e Bridge Foundry, e ensino o ElixirBridge. Eu até dei aulas em uma prisão geral na área da Baía de São Francisco, e ainda ensino aqui em Nova York.

Ensinar é muito importante para mim, pois me motiva a aprender mais. Ensinando, não apenas ajudo os outros, forço-me a subir a um novo nível para poder explicar como essa ou aquela tecnologia funciona. Eu costumo me preparar lendo a fonte, especialmente JavaScript. Há um ano ou meio, conhecemos Vue e, apenas começando a estudar a fonte, nosso trabalho com Vue nos trouxe um grande prazer. Enquanto trabalho, escrevo todos os problemas que encontro, todas as consultas de pesquisa no Google, todas as perguntas na documentação. Como resultado, compilamos um índice enorme e muito detalhado que, em seguida, com todas as alterações, atualizamos junto com o livro inteiro.

- Isso acontece automaticamente, com a ajuda de manipuladores que monitoram todas essas informações na documentação?

- Temos manipuladores que acompanham os ciclos de lançamento, mas, infelizmente, quase todo o resto - edição de conteúdo e imagens - é feito manualmente. Temos ganchos no React e atualizações automáticas de código, mas o conteúdo precisa ser atualizado manualmente.

Entendo. Tanto quanto eu sei, você é co-autor de muitos livros. É mais difícil escrever um livro sozinho ou com alguém? Como você organiza seu trabalho, como sincroniza os capítulos?

- Assim como no desenvolvimento conjunto de aplicativos, usamos o Git para unificar o conteúdo, por isso temos versões e ramificações. Escrever um livro em colaboração pode ser difícil, embora, creio, seja um pouco mais fácil no caso de livros sobre especialidades técnicas do que em não-técnicas. Acho que o mais difícil é garantir um tom uniforme para todas as seções e determinar quais demos usar. Mas, em geral, essa não é uma tarefa muito difícil. Toda a atenção é absorvida pela escrita e edição, e estamos constantemente em contato, o que simplifica bastante o processo. Ao longo dos anos, desenvolvemos modelos de redação que proporcionam unidade de estilo a todos os nossos muitos autores. E fazemos o possível para garantir que nossos co-autores escrevam conosco e não para nós. Nós nos posicionamos como uma equipe em que todos trabalham uns com os outros, e não como uma editora para a qual os autores trabalham. Além disso, somos todos co-editores dos livros que escrevemos. Ter um editor ou editores ajuda a garantir um estilo consistente ao longo do livro. Cada autor edita uma seção escrita por outro autor.

Quanto às ferramentas, usamos o Git, além de editores de texto simples e Markdown. Normalmente, trabalho no Visual Studio Code ou no Spacemacs - uma combinação de Emacs e Vim, altamente recomendável se você ainda não o experimentou. Além disso, temos muito de nosso próprio software, que escrevemos para compilar, trabalhar com estilo e visualizar livros em tempo real. Nós o usamos antes de publicar um novo lançamento ou atualizar um livro. A maioria das nossas ferramentas é escrita em JavaScript, TypeScript ou Python.

- Você usa metodologias flexíveis como Scrum ao escrever livros?

- Sim, mas não muito ativo. Realizamos algum tipo de reunião stand-up modificada, mas não todos os dias, mas todas as semanas ou depois de uma semana, dependendo do ritmo do trabalho no livro. Se trabalho sozinho, todo o meu apoio é abrir o editor de texto, mas se trabalho com alguém, estamos constantemente em contato um com o outro através do Slack e do Google Hangouts.

- E quanto tempo você leva para escrever um livro?

- Depende do livro, se eu trabalho com co-autores, da velocidade da estrutura. Digamos que escrevi um ng-book em quatro meses, trabalhando à noite e nos fins de semana. Mas para mim essa é uma velocidade absolutamente inimaginável, ainda não entendo como consegui fazer tanto. Normalmente, um livro leva de seis a doze meses.

Interessante. Você gasta muito tempo, trabalha com ferramentas e processos interessantes, talvez em colaboração com outra pessoa, e entrega o livro à publicação. Quando o editor tenta traduzir o fruto do seu trabalho em outro idioma, como você verifica a qualidade da tradução? Pergunto porque, quando comecei a programar, não conseguia ler a documentação técnica em inglês, então li muitos livros em russo - por exemplo, a tradução de Good Parts of JavaScript e os livros mais famosos de O'Reilly. Até onde eu sei, essas traduções foram terríveis. Penso em como os autores dos livros deveriam ter reagido a isso e de que maneira eles poderiam ter verificado traduções. Qual é a sua opinião geral sobre traduções?

- Aqui só posso falar sobre minha experiência pessoal e como o Fullstack funciona. Temos muitas situações em que não sabemos o idioma em que o livro está sendo traduzido - por exemplo, a maioria dos nossos livros é traduzida para chinês, mas eu não falo chinês. É verdade que, com o tempo, aprendi algumas palavras, tenho uma aplicação especial para isso, Babbel, com a qual aprendo idiomas estrangeiros. Mas, no caso do chinês, as melhores traduções foram obtidas quando o nosso tradutor também era programador ao mesmo tempo. Graças a isso, para qualquer dúvida, foi mais fácil para o tradutor nos fazer uma pergunta em inglês e depois traduzir corretamente a resposta para chinês. Infelizmente, também não falo russo. Eu posso dizer "bicicleta" - embora não, como você ouve, eu não posso nem dizer isso. Obviamente, é difícil não saber o idioma em que o software está escrito. Entendo isso especialmente bem quando olho para a documentação de projetos chineses de código aberto - para entender qualquer coisa, tenho que me aprofundar na fonte.

- Uma situação semelhante foi com Vue. Até onde eu sei, seus primeiros lançamentos tiveram uma documentação bastante ruim e muitos problemas foram descritos em chinês. Até onde eu sei, o inglês é agora um requisito.

- é sim. Tenho sorte que meu idioma nativo é o inglês. Embora eu não falo fluentemente, não tenho problemas com a documentação. Eu acho que traduções são muito importantes. Além disso, estamos vivendo uma época em que a tradução automática está se tornando cada vez melhor, especialmente graças ao aprendizado profundo - essa é uma das razões pelas quais me interessei pelo aprendizado profundo. No entanto, não creio que exista uma panacéia para todos esses problemas.

- Recentemente, me deparei com uma discussão acalorada na parte em russo do Twitter. Um lado da disputa argumentou que as traduções são, por definição, ruins, porque os programadores precisam saber inglês, e é um idioma internacional para todos. Outros disseram que para juniores e aqueles que não falam muito bem o inglês, a documentação deve ser traduzida. Você tem uma opinião sobre esta questão controversa?

"Os argumentos de ambos os lados estão perto de mim." O que vou dizer agora é apenas a minha reação inicial, por um longo tempo não pensei sobre esse problema. Talvez em uma reunião pessoal possamos discutir esse tópico mais profundamente. Parece-me que agora há tanto código escrito em inglês que seria extremamente difícil se livrar do idioma inglês. Existem idiomas internacionais - por exemplo, o JavaScript é um idioma internacional, se você o falar, poderá se comunicar com qualquer pessoa em qualquer lugar do mundo. A presença de um idioma internacional - inglês - facilita a comunicação e a colaboração com desenvolvedores em todo o mundo; Por exemplo, conversei com desenvolvedores na Índia, França, Inglaterra, China, Austrália. Obviamente, isso não é inteiramente verdade em relação às pessoas que não falam inglês - tenho certeza de que, se não falasse inglês, teria uma opinião diferente sobre esse assunto. Além disso, como eu disse, esses são apenas meus pensamentos iniciais, não penso sobre esse problema há muito tempo e talvez amanhã minha opinião mude.

- Sim, podemos discutir isso pessoalmente. Agora vamos falar sobre livros - eles estão se tornando menos populares do que antes, devido ao surgimento de plataformas como mídia, Twitter e assim por diante. Você acha que os livros estão desaparecendo?

"Não estou convencido de que os livros estejam se tornando menos populares." Acredito que todo mundo trabalha e aprende de maneiras diferentes. Os serviços online em sua função são semelhantes às classes nas classes. E me parece que o aprendizado on-line é adequado para desenvolvedores que desejam aprender diferentes idiomas e estruturas de maneira diferente. É mais fácil para alguns trabalhar com a documentação, outros para a fonte, outros funcionam melhor em grupos, outros sozinhos, por tentativa e erro, ou lendo livros em trens e aviões e implementando o que leram na prática. Por outro lado, eu lecionava em aulas onde tudo era exatamente o oposto e onde os alunos simplesmente não podiam sentar no livro, isso não lhes dava nada. Não é que eles não soubessem ler, apenas obtiveram menos com a leitura do que com o trabalho com outras pessoas. Penso que uma das realizações muito importantes da Internet para a comunidade de programação é que ela tornou o aprendizado mais acessível e o sucesso mais viável. Sites e serviços como Medium ou Coursera ajudam a disseminar conhecimento e possibilitam uma variedade de oportunidades de aprendizado. Tenho orgulho de estar envolvido nessa evolução da educação. Talvez no futuro nossos livros se tornem interativos e possamos combiná-los com cursos on-line.

- Lembro que uma vez que os livros foram vendidos com um CD ou DVD com exemplos. Agora, esse formato está fora de moda.

- Sim, agora eles preferem enviar tudo em arquivos zip - por exemplo, mesclamos todas as nossas demos em um arquivo zip. Uma das ferramentas mais úteis que desenvolvemos nos permite escrever todo o código-fonte usado no livro em um só lugar e, em seguida, temos ferramentas que o atualizam automaticamente a partir das fontes originais. Suponha que precisamos destacar uma sequência, classe, objeto ou função que discutimos em um livro. Temos ferramentas através das quais você pode fazer links diretos para o código-fonte. Isso também é útil porque sempre que você baixa um livro, a fonte é atualizada. Então, escrevemos as fontes não diretamente no texto, mas em um arquivo separado.

- Minha próxima pergunta estará relacionada à anterior. Você disse que todo mundo aprende de maneiras diferentes e eu, como desenvolvedor, posso ler livros, assistir vídeos no YouTube, ler artigos em alguma plataforma de treinamento. Mas por que eu deveria participar de conferências?

- Esta é uma boa pergunta. De improviso, posso citar duas razões pelas quais vale a pena fazer isso. A primeira é a mais óbvia: apresentações e palestras em conferências são geralmente bem pensadas e especialmente projetadas para visualização. Como regra, esse relatório é dedicado a um problema bem definido - por exemplo, refatoração. Quando você se senta em uma audiência em que um bom relatório de refatoração está sendo apresentado, é como se você estivesse se refatorando, sendo incluído na apresentação, no processo. Bem, para mim, a personalidade do palestrante e suas emoções são sempre interessantes.

A segunda razão é menos óbvia. Eu chamo de "bate-papo no corredor" - além dos próprios relatórios, você conhece e se comunica com pessoas que estão fazendo a mesma coisa que você. Nossa atividade como desenvolvedores é, por definição, individual - mas quando você começa a se comunicar com muitas outras pessoas que estão no mesmo espaço que você e que se envolvem da mesma forma que você, essa atividade automaticamente se torna social. Outro benefício de “conversar no lobby” é que você conhece pessoas que precisam de seus serviços, conhecimento técnico ou experiência de ensino. Na minha experiência, encontramos mais clientes do que em qualquer outro lugar - e isso se aplica a nossos livros e vídeos.

- Você já escreveu muitos livros - me diga, no que está trabalhando agora? Talvez alguns spoilers?

- Agora eu lido principalmente com blockchains. Se falamos sobre blockchains, realidade aumentada, aprendizado profundo, é ótimo nessas áreas que eles são muito populares agora; portanto, em quase todas as conferências em que participei nos últimos anos, iniciei discussões muito animadas com pessoas interessadas nessas assuntos. E, muitas vezes, pode ser o desenvolvedor front-end do Google, que em seu tempo livre lida com outros tópicos.

Quanto a mim, pessoalmente, os projetos com os quais estou relacionado estão principalmente relacionados à economia - e, surpreendentemente, esse é um assunto muito interessante. Além disso, atualmente estou trabalhando em um livro chamado "C ++ para desenvolvedores de JavaScript", que ainda está em um estágio inicial de escrita. Ficarei feliz em discutir este tópico se encontrar alguém que trabalhou com C ++ em uma conferência sobre JavaScript.

- Este livro estará de alguma forma relacionado ao WebAssembly? Você entende, C ++ e JavaScript ...

- O livro é dedicado principalmente à EOS - este é um blockchain bastante novo. É semelhante ao Etherium, mas criado usando o LLVM, e isso permite que você escreva um contrato para qualquer coisa que seja compilado no LLVM, incluindo C ++.

Ótimo. Vamos para a próxima seção, que será mais estreitamente relacionada ao seu relatório sobre o HolyJS. Você trabalhava com Angular, Vue, React, JavaScript - e agora está reportando sobre o Flutter, a plataforma móvel do Google, escrita em Dart. O que o levou a fazer isso?

- Nesta redação, realmente soa engraçado. Aqui está uma história semelhante a como cheguei ao Angular, que mencionei acima. Eu queria escrever alguns aplicativos para mim e meus amigos que usam quem é o Android, quem é o iPhone. Já publicamos um livro sobre o ReactNative, e eu tinha experiência com essa plataforma, mas queria tentar outra coisa. Eu posso escrever em Java, Kotlin e Swift, então comecei a escrever um aplicativo no Swift. Até onde eu sei, estão sendo feitas tentativas de adaptar o Swift para Android, mas aquelas com as quais eu estou familiarizado ainda estão em estágios muito iniciais, você não pode contar com eles. Além disso, parece-me que muitos deles são hacks. iOS Java, , , Java iOS. , JavaScript — , Redux, , . - Flutter.

Flutter Dart, , TypeScript. JavaScript, , , Redux. Flutter , , . , . , Flutter AOT- JIT-, , UI. , , Flutter, , Flutter .

Flutter — , , , . Flutter — hot reload, web. , Swift, , , , , , , , , . , Flutter UI , -. Flutter, , . , Dart TypeScript, , , JavaScript, JavaScript Dart.

— Dart — , , JavaScript, . Dart , ? ?

— , , Dart . — , Clojure. , , , - JavaScript TypeScript — , . Dart , , . , , , , , . , TypeScript Flow. , Flutter . , , Flutter JIT-, , Flutter.

Dart — , , JavaScript, “” . , , — Java, , , . , Dart, JavaScript JavaScript. , , , Dart JS. Isolates Dart Web workers Dart. -, Dart . , Dart , Flutter, , Dart , React Native, JavaScript.

— .

Sim. , React Native , - — , JavaString, . Flutter , . , Dart Java, C#, ActionScript JavaScript, , , - , .

— Clojure, — . Dart , .

— , Clojure — .

— , -, — — Flutter? , , ? , «Hello World»?

— , Flutter . - Flutter React Native, . , , , — Flutter . , , — Flutter. , , , — , Java Swift, , -, , . , , Flutter , , .

, Flutter , — , Twitter. , , , , AR VR. AR- Swift, Flutter . , iOS, Android .

— , Flutter Twitter — Twitter PWA. Flutter PWA? -, .

— , Flutter -, . - - Dart, . Dart . Dart JavaScript- , , JavaScript.

— , .

— , . Flutter , , JavaScript.

— . , , . , , JavaScript — JavaScript. — Angular Ionic, — Cordova PhoneGap. , ? , JavaScript?

— . , , JavaScript , , — React Native, Node.js , , Dart. JavaScript, -, . , — , . , - . , 2018 - , , — , , — , JavaScript.

— JavaScript , — Go, ClojureScript, Dart? , JavaScript?

— , ? , , — , . Go, , , Go C++ — . JavaScript Dart, ClojureScript. , C , . , . , . , JavaScript, . . Swift Java — , AR Swift, , , Flutter, , , Swift .

— , 2013 , Dart, , , , Dart . Dart Flutter, Dart Flutter? AngularDart, Dart .

— . , - , . - , , Flutter — Dart. , Cupertino — Flutter iOS — . , , Flutter Flutter — .

Dart, , , , . 2013 EcmaScript , , Google, ECMAScript. Flow TypeScript , . Dart Flutter , 1.0 Flutter.

, , Flutter, Fuse, C#. . JavaScript , , Dart JavaScript, Dart Flutter.

— , . . ?

— , «hallway chat». . , , , . , . , , , , .

— , ?

Sim.

— , HolyJS?

— , , , . , — , , . , , , , , , . , — , , . - , . , — .

HolyJS, , , , . - , , . , -, , , .

, , .

— , , -10 -15 , .

— -? .

— . , Dart Flutter — , , JavaScript. : HolyJSserá realizada de 24 a 25 de novembro e, de 1º de dezembro, haverá uma conferência sobre Dart e Flutter.

Ótimo. O Flutter estará fora de beta agora.

Embora no caso de Flutter, o código esteja escrito no Dart, o relatório de Ari no HolyJS será projetado para pessoas com experiência em JavaScript: uma introdução preliminar ao Dart não é necessária. E as áreas de discussão na conferência significam que, após o relatório, haverá uma oportunidade de discutir com Ari tudo de interesse: pelo menos faça uma pergunta no Angular, pelo menos dê a ele um ng-book para assinatura. Em geral, nos vemos de 24 a 25 de novembro na Holi !

Source: https://habr.com/ru/post/pt429564/


All Articles