Ivan Shamatov: como escrever dinheiro

Oi

Estamos nos preparando para a próxima conferência RubyRussia 2019 (você já marcou 28 de setembro no calendário?) E estamos conversando com nossos palestrantes sobre a vida, a comunidade e a programação. Na entrevista de hoje, Felix Yasnopolsky, da Evrone, fala com Ivan Shamatov: o líder da Comunidade Saint P Ruby ( aqui você pode participar do aconchegante bate-papo da comunidade no Telegram) e vice-presidente de engenharia da Cybergizer.

imagem

Qual será o seu discurso na próxima conferência?

Eu quero mostrar que o dinheiro na programação é fácil! Com a ajuda do dinheiro, expressamos algum valor de um produto ou serviço. Em geral, eles podem ser descritos como uma tupla da dimensão 2, consistindo em um valor digital (por exemplo, 100) e um valor de caractere (por exemplo, USD, $). No caso de transações monetárias com os mesmos símbolos, o aparato matemático é relativamente simples, mas mesmo aqui você pode encontrar armadilhas. O que podemos dizer sobre o cenário de conversão de dinheiro de uma moeda para outra. Aqui o mundo matemático ideal entra em colapso e a contabilidade dos negócios começa. Vou mostrar como entender alguns dos cenários e quais erros podem existir em exemplos de práticas de projetos fintech.

Por que você escolheu este tópico?

Participei do desenvolvimento de um sistema de pagamento para o metrô, o Aeroexpress, um sistema de pagamento de contas de serviços públicos para alguns estados nos EUA e muitos outros. O primeiro script que escrevi por dinheiro é um script php para pagar pela Internet através de terminais no Pushkin. Na próxima vez que me deparei com o assunto dinheiro, quando trabalhei na Cryptopay - também havia transferências e transações lá. Depois fui trabalhar na Toptal, onde fazia parte de uma equipe de cobrança. Ao me preparar para a conferência, pensei que muitas pessoas poderiam falar sobre os recursos do Ruby, mas poucas pessoas entendem como escrever dinheiro e como fazê-lo corretamente. E esse é um tópico que frequentemente encontramos em uma variedade de projetos.

Quais tecnologias, além de Ruby, você gosta?

Eu realmente gosto de JavaScript. Aproveite a facilidade de escrever no ES6. Gosto dos paradigmas que o Ruby vem de outras línguas: nesse caso, não é necessário usar essas outras linguagens. Você pode abrir uma gema simultânea e ver várias ferramentas de Go, Clojure, Java e JavaScript. Gosto que em diferentes idiomas é necessário usar diferentes formas de pensar. Existem pessoas que vão de Ruby a Go para manter os princípios do pensamento Ruby. Ou acesse Ruby com os princípios do PHP. Isso não funciona na programação: cada idioma tem sua própria abordagem, seu próprio fluxo de trabalho, sua própria mentalidade. Você precisa entender como escrever programas precisamente na estrutura de uma tecnologia específica.

Estou muito interessado no desenvolvimento móvel: os mesmos padrões, o mesmo MVC, mas tudo funciona de uma maneira completamente diferente. Foi muito interessante estudar React e Redux - um ótimo repositório para um trilho típico :)

Conte-nos sobre suas maiores falhas e razões de orgulho.

Posso me orgulhar dos projetos em que participei, dos quais tive uma mão. Por exemplo, um projeto que possibilita pagar com cartão Aeroexpress em Moscou. O mesmo sistema é usado no metrô de Kazan. Eu escrevi um cliente para torniquetes no JRuby, e o back-end do Rails, que atende essas transações de transporte, funciona com várias APIs. Foi um projeto muito interessante, com apenas três desenvolvedores participando.

Fakapov não tem vergonha, mesmo quando eles acontecem. Uma pessoa tem o direito de cometer um erro. Engano - e você não faz mais isso.

Uma de suas atividades é orientação. Por que você está fazendo isso?

Eu próprio sempre tive mentores que sugeriram o que e como fazer. São caras de diferentes chats, pessoas com quem conversei em conferências e reuniões. Quando atingi um certo nível, comecei a orientar tanto offline quanto online. Agora eu trato de pessoas que vieram até nós da Rubizz . Este é um dos meus principais projetos para hoje, um estudo prático intensivo de Ruby para iniciantes. As crianças têm a máxima liberdade de ação e o direito de cometer erros. E somente depois que os cones estão cheios, o mentor explica por que isso foi um erro e por que você não deve fazer isso. Acredito que esta é a abordagem correta: algumas coisas não podem ser entendidas até você coletar esse rake. Se você nunca usou retornos de chamada incorretamente, não entenderá qual poderia ser o problema com eles. E por que muitas pessoas na comunidade odeiam retornos de chamada.

Ouvi dizer que você tentou entrar no time Toptal seis ou sete vezes. Isso é verdade?

Sim, é verdade, eu falei sobre isso muitas vezes. A Toptal segue uma política de contratação agressiva ou, mais corretamente, proativa desde o início da empresa. Fui convidado para entrevistas cerca de uma vez por ano. Após repetidas tentativas malsucedidas, decidi que não tentaria novamente. Mas meu amigo, com quem começamos nossa jornada em Ruby, conseguiu um emprego lá e sugeriu que eu tentasse novamente. E desta vez eu pude passar por todas as etapas da entrevista. Há um grande teste técnico na entrada, depois uma entrevista, depois mais uma e outra ... E agora eu acho que realizar 5-6 etapas das entrevistas é uma prática muito legal. Somente dessa maneira você poderá entender quem está à sua frente, se deseja trabalhar com essa pessoa, se ela se encaixará na equipe. E entendo por que eles não me levaram pela primeira vez, eu realmente não puxei.

Como, na sua opinião, deve ser arranjado um processo de entrevista e contratação ideal?

Quando ajudei na seleção de pessoas para a equipe anterior, a Cryptopay, tivemos duas etapas. Como tarefa de teste, fornecemos um código para refatoração. Para esse trecho de código, fizemos uma avaliação preliminar do candidato. Em seguida, realizamos uma entrevista no formato de codificação ao vivo para entender se essa pessoa é adequada para nós. A codificação ao vivo permite que você entenda como uma pessoa pensa. Você pode avaliar não apenas o que está escrito, mas também como o desenvolvedor usa o sistema operacional, IDE, a tecla de atalho sabe o quão profundamente ele entende determinados tópicos, quais abordagens ele usa, que perguntas ele faz aos colegas no processo. Essa abordagem fornece muito mais informações sobre uma pessoa do que um teste ou entrevista sobre algoritmos.

Mas acredito que isso não basta. Agora, na Cybergizer, costumo contratar pessoas com quem já trabalhei. Existem pessoas com quem não trabalhamos, mas juntos eles escreveram algum tipo de código aberto. Essa atividade conjunta permite que você veja como uma pessoa escreve código. E você também entende como o seu fluxo de trabalho corresponde, o quão mentalmente você está.

Não me considero um especialista em contratação, minha abordagem também falha. Um dos meus erros recentes: eu não queria levar a pessoa após a sessão de codificação ao vivo para uma entrevista, ele não me impressionou. Mas outros membros da equipe votaram nele e começamos a trabalhar juntos. E, em colaboração, percebi que este é um especialista de alta classe. Houve um caso absolutamente oposto quando eu era um homem com todas as minhas mãos e, como desenvolvedor, ele não era nada. Após esses dois casos, não estou pronto para julgar a exatidão de qualquer método de contratação específico. Talvez tenha sorte, talvez não tenha sorte. Parafraseando uma piada famosa:
- Como você contrata bons desenvolvedores?
- Essa é toda a experiência de contratar bons desenvolvedores!
- E como obter essa experiência?
- Precisamos contratar diferentes desenvolvedores.

Parece-me estranho que muitos estejam interessados ​​em atrair bons especialistas. Mas poucas pessoas estão interessadas em como se tornar uma empresa na qual bons especialistas desejam trabalhar. Ou talvez você deva pensar nisso antes de tudo?

Você está organizando reuniões e reuniões de Saint P Rubyconf em São Petersburgo. Por que e por que você está fazendo isso?

Isso faz parte da cultura Ruby - um colaborador da comunidade. Alguém incorpora código, escreve código-fonte aberto. Eu contribuo para o que recebo. Muitas pessoas pensam que, para fazer qualquer contribuição, você precisa ter sete vãos na testa. Mas isso não é verdade! Quase 10 anos atrás, quando eu estava no começo da minha jornada para Ruby, eu, com a equipe de tradutores, traduzi para o russo e dei voz ao RailsCasts. Para que todos possam ser úteis a toda a comunidade: não importa se você atualiza o dock no gem, escreve um artigo ou organiza um mitap.

Vejo você no RubyRussia em 28 de setembro!

Assista ao programa e participe aqui , o próximo aumento de preço é esperado após 15 de setembro.

Graças às empresas que nos apoiam:

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

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


All Articles