Xavier Noria no Rails 6, consultoria e muito mais

Já neste sábado, nos encontraremos com todos os rubists na conferência principal dedicada a essa tecnologia - RubyRussia 2019 . O dia 28 de setembro está muito próximo e nesta entrevista as perguntas de Xavier Noria foram preparadas pelo desenvolvedor da Evrone, Pavel Argentov , e alunos e professores com quem ele trabalha no curso "Linguagens de programação da Internet" no MSTU o ajudaram.

imagem
Uma foto rara da última visita de Chavier à Rússia - no RailsClub Moscow 2012

O que você considera o mais interessante e importante do que aconteceu recentemente no mundo do RoR?

Eu acho que o Rails 6 foi um lançamento impressionante. Novos componentes principais, suporte para vários bancos de dados, testes paralelos; Um novo gerenciador de inicialização que "envia para a história" o famoso rake com carregamento automático.

Você ganha a vida com a consultoria Rails. O que isso deu a você como programador?

Principalmente, me deu experiência e consciência que o trabalho comum não pode proporcionar. A consultoria enriquece. Cada empresa e cada equipe são diferentes. Você encontra várias áreas de negócios, culturas, fluxos de trabalho, arquitetura, recursos e preferências. A adaptação a ambientes móveis, as tarefas que precisam ser abordadas, retém habilidades para resolver problemas aguçados.

Continuando com a pergunta anterior, com base na sua experiência, o que os desenvolvedores do Rails devem ter em mente?

Os desenvolvedores devem conhecer o Ruby e o Rails o mais profundamente possível. Isso significa ler livros e documentação, em vez de postagens de blog espalhadas. O mestre deve possuir seu instrumento. Por exemplo, você precisa entender bem o SQL para que o Active Record seja um catalisador do processo, não uma caixa preta. Use o Active Record - para gerar SQL de maneira fácil e segura que, de outra forma, seria manuscrita - e processar facilmente os conjuntos de dados resultantes. Um entendimento decente do HTTP é importante porque é o idioma que o aplicativo fala para o mundo exterior (incluindo a lembrança do WebSockets). Há muitas outras coisas a ter em mente, mas eu mencionaria especialmente o desempenho. Você precisa saber como conduzir benchmarks, precisa saber sobre a GVL na ressonância magnética e tudo mais. Procure recursos sobre este tópico, estude-os, desenvolva intuição informada.

Ruby é realmente a linguagem que melhora a mente do programador? Como tirar o máximo proveito disso?

Pessoalmente, sou cético em relação a essas generalizações. Ruby me excita e Scala excita os programadores de Scala. Eu pratico Perl há alguns anos e o amo muito, mas muitos não gostam dele. Cérebros diferentes encontram prazer em diferentes formalismos, até suas próprias preferências podem mudar com o tempo. Como programador, é melhor usar o maior número possível de linguagens e o maior número possível de paradigmas. A linguagem que me deixou em mente foi o Prolog. O paradigma que mais me influenciou foi a “programação literária” no estilo Knuth. Passar por esses métodos de programação completamente diferentes torna você melhor. Acho Ruby particularmente flexível e de alto nível.
Alto nível ajuda a argumentar "mais perto da tarefa". Isso me atrai para linguagens de alto nível (VHLL). Sou matemático em educação e posso trabalhar com qualquer formalismo que eles plantem; linguagens de programação aqui são brinquedos para crianças. A perfeição de Turing, por exemplo, não coincide com a equivalência prática. Para resolver problemas reais, é difícil criar algo melhor que a BVS. Você se sente realmente poderoso e produtivo, porque há menos complexidade artificial e pode se concentrar melhor na solução real para o problema. Resolver problemas reais foi o que me levou a seguir uma carreira em programação. De um modo geral, "onde C é necessário - use C".

Estamos tornando a conferência mais “Ruby” do que “on Rails”. Quais aplicativos Ruby existem além do Rails, ou mesmo além do webdev?

Se a memória me servir bem, o primeiro programa Ruby que usei foi o FreeBSD Port / Package Manager. Isso foi no início dos anos 2000, antes do Rails. O software Ruby popular não diretamente relacionado ao desenvolvimento da web é o Vagrant, o Metasploit, o Jekyll, o Chef, o Puppet ou o Homebrew. Além disso, os sistemas nas empresas Rails raramente consistem apenas em uma interface da web. Normalmente, existe todo um ecossistema de software. Uma empresa cujo idioma principal é Ruby geralmente também possui um software de back-end Ruby limpo (talvez em conjunto com outras tecnologias).

Por exemplo, na empresa que estou consultando atualmente com a Stuart Delivery, acabei de implementar um serviço que aceita mensagens de Kafka para Redis para processamento pelos funcionários da Sidekiq. Também trabalhamos em um projeto de migração de dados não trivial e em um emulador de negócios super interessante. Tudo está escrito em Ruby puro. O frontend do lado do servidor da empresa é o Rails, mas nos bastidores e em toda a plataforma existem muito mais programas e linguagens diferentes. Esta é uma ocorrência comum na minha prática.

Spoiler time - sobre o que será o seu relatório no RubyRussia 2019?

Vou falar sobre Zeitwerk, a nova gema Ruby que implementa carregamento automático, reinicialização e inicialização ativa para projetos Ruby. O Rails 6 delega esses recursos ao Zeitwerk por padrão.

Qual é a sua melhor impressão do mundo Ruby? Talvez código, tecnologia, conhecimento ou atitude?

É uma impressão subjetiva, mas acho que o mundo de Ruby foi surpreendentemente inovador. Conversamos sobre isso com Terence Lee há algum tempo. Para iniciantes, acho difícil discordar da afirmação de que o Rails representa uma verdadeira revolução no desenvolvimento da web. Empresas como Heroku, New Relic, Shopify ou GitHub foram apenas revolucionárias. No entanto, na minha experiência, as pessoas que gravitam principalmente em relação a certas comunidades são parcialmente cegas para o que está acontecendo nas comunidades do bairro. Tenho certeza de que a inovação pode ser encontrada em qualquer comunidade, seja Scala, Haskell ou mesmo Brainfuck. Portanto, se eu pudesse observar globalmente cada comunidade, descobriria que a comunidade Ruby não é particularmente inovadora, porque todas são inovadoras de uma maneira ou de outra.

Na sua opinião, o Rails precisa de algo como uma biblioteca de componentes CMS padrão? Como andaimes para a construção de peças CMS padrão?

Na minha opinião, este é um tópico pouco interessante para o Rails. Deixe-me também usar esta pergunta para comentar que os andaimes são apenas uma maneira acessível de fazer uma demonstração rápida em uma conferência ou gerar um aplicativo para verificar algo, reproduzir um erro, ver como funciona uma função específica. Eu nunca vi andaimes “em batalha”, eles não são adequados para uso prático.

As soluções modernas geralmente são heterogêneas: podemos usar Julia para ML, Java para cargas de trabalho de negócios pesadas. O Ruby fornece ferramentas para interação com o idioma suficiente? Existem ferramentas para facilitar isso?

O JRuby se comunica com o Java nativamente. Você pode escrever extensões C para MRI, pode agrupar bibliotecas C de maneira portátil usando o FFI, e o Helix permite escrever extensões no Rust. De um modo geral, é mais fácil se comunicar com os processos de maneira padrão usando o sistema de arquivos, soquetes, HTTP, bancos de dados, gRPC, intermediários de mensagens.

Como muitos já notaram, Ruby não é mais "nova e brilhante". Agora é mais uma "boa e velha linguagem". Os estudantes, por outro lado, são jovens. Como motivar o interesse deles em aprender Ruby?

Nos anos 2000, ensinei Perl a estudantes da Universidade de Barcelona por sete anos no meu tempo livre. Antes do meu curso, eles lidavam principalmente com C e Java, e eu falei sobre linguagens de script, e o Perl usou como exemplo. Foi muito divertido. Precisamos de um programa fascinante que ensine programação, e se concentre no que está disponível com esses idiomas, e permitirá que você mergulhe em uma escolha específica. No caso do Ruby, isso é desde uma implementação simples de POO até recursos fantásticos de metaprogramação. Você pode mostrar, por exemplo, como o modelo Active Record funciona sem uma única linha de código no corpo da classe.

Existem dezenas de linguagens de programação para você escolher. Por que escolher Ruby, por que não Python ou JavaScript, e Clojure, Rust, C ++, Go? Todas as opções são controversas ou vice-versa - todas essas são ótimas opções. Escolha uma, torne o curso memorável, peça aos alunos que estudem programação, melhores práticas, o conceito de idioma, que aprendam a verificar a documentação e explorem questões relacionadas importantes que vão além do formalismo. É isso que os fará crescer, prepará-los para a profissão fundamentalmente. Na minha opinião, esse é o papel da universidade.

Existem muitas ferramentas diferentes para a mesma coisa: núcleo Rails com Active Record, Dry-rb e outros. Devo agarrar as alternativas? Eles não fazem "caminhos" do Rails em vez de "caminhos"?

Depende em grande parte das preferências individuais. Você definitivamente deve estudar e entender as combinações de ferramentas, camadas, padrões que mais lhe agradam. É importante lembrar que "caminho do Rails" não significa "soltar o aplicativo inteiro nas pastas padrão". Este é um equívoco comum. Você quer decoradores? Objetos de serviço, POROs? Ótimo! Isso não contradiz o chamado "caminho dos trilhos". O Rails fornece um conjunto de abstrações padrão e organização de código, o que, em nossa opinião, é bom o suficiente para muitas aplicações, pelo menos como ponto de partida. E então, se você deseja gravar ações do controlador como arquivos de linha única que descarregam todo o trabalho em objetos de serviço, você pode fazê-lo. Alguns podem não gostar disso. Pessoas diferentes - cérebros diferentes.

Vejo você no RubyRussia!

Lembre-se de que a conferência já é neste sábado, as inscrições ainda estão abertas.

Não haverá apenas relatórios, mas também estandes das melhores empresas:

Organizador - Evrone
Parceiro Geral - Toptal
Parceiro Gold - Gett
Parceiros Silver - Valarm , JetBrains , Bookmate e Cashwagon
Parceiro Bronze - InSales

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


All Articles