Como se tornar um programador da desesperança e subir às alturas do sucesso? Hoje, em nosso estúdio virtual, Pasha
asm0dey Finkelstein responde a perguntas. Pasha é um dos poucos que sabe como criar backends no Kotlin. Além disso, ele vê o código aberto, participa ativamente da vida da comunidade e, por um minuto, participou de quase todas as nossas conferências Java de Moscou.
Como encontrar tempo para confirmações
- Existem vários tópicos que podem ser discutidos. Em primeiro lugar, você está dando uma palestra no Joker. Em segundo lugar, você é um membro ativo da comunidade, constantemente fazendo alguma coisa. Terceiro, você constantemente participa de nossas conferências e, por algum motivo, acha que isso é bom.
- Em relação ao fato de eu ser membro da comunidade. Eu, como a maioria das pessoas, sofro da síndrome do impostor, não tenho a sensação de estar fazendo muitas coisas úteis, especialmente para a comunidade Java, especialmente recentemente. A última coisa que fiz foi útil para a comunidade - os caras e eu escrevemos uma biblioteca interessante para o Spring chamada spring-flow-state-machine , que permite controlar o estado dos objetos no aplicativo. Ela é pequena e confortável.
- Esta é a própria biblioteca que está promovendo agora na primavera principal?
- Não, provavelmente a Spring Statemachine está lá e é extremamente infeliz: está muito mal escrita, funciona de maneira estranha e não faz absolutamente nada. O Spring Statemachine gerencia o estado do aplicativo quando ele é algum tipo de máquina de estado finita e funciona de maneira diferente em diferentes estados. Fizemos outra coisa: quando você tem algum tipo de entidade, você define um ciclo de vida para ele e pode conduzi-lo nesse ciclo de vida. E nossa tarefa é pensar em como suas transações funcionam e tudo mais. Simplesmente temos a anotação @Transactional no lugar certo, como você sabe, e isso basta para dizermos que ela controla o estado. O principal é que existe uma DSL conveniente que permite dizer onde você pode, de onde e o que precisa fazer ao longo do caminho.
"E entendo corretamente que, como essa coisa controla coisas abstratas, você pode fazer a mesma coisa que a Spring Statemachine?"
- Sim, é verdade, há uma nuance. A principal entidade que essa coisa controla é, ao que parece, entidade com id ou algo parecido. Esta é realmente uma biblioteca muito pequena de duas interfaces, duas exceções e quatro classes.
"E a coisa que a Spring fez - por que você acha que isso é algo estranho e por que não está claro o porquê?"
- É compreensível por que é necessário, mas foi muito mal. É afirmado como se soubesse fazer tudo. Em primeiro lugar, os exemplos que eles têm na documentação não são coletados e, em segundo lugar, se você tentar se aprofundar no código fonte (e sempre se aprofundar no código fonte do Spring quando quiser fazer alguma coisa, porque nem tudo está escrito na documentação), você descobre que está escrito da maneira que é melhor não escrever. A propósito, parece que o Spring Batch geralmente tem as mesmas queixas.
"Você também usou o Spring Batch?"
- Parece-me que usei quase tudo o que existe no ecossistema da primavera.
"E como você continua a usá-lo?"
- Você sabe, no próximo local de trabalho, não terei Spring, terei ELA. Não foi minha escolha. Eu provavelmente usaria o Spring, mas na verdade, em nosso podcast, uma vez eu disse que agora o meu favorito é o microframework Jooby, que sabe tudo. Foi escrito em uma pessoa por algum campeão de Java. Também há injeção de dependência, que é baseada no Guice. É legal, tem um ecossistema, ao contrário, a propósito, de todos os outros microframes.
- Vejo que existem duas opções - para Java e para Kotlin.
"Eu suspeito que você pode por qualquer coisa." Scala provavelmente também é possível, mas você deve abandonar o Guice, o que provavelmente não funciona com o Scala. Como de costume, adoro a injeção de construtores com anotações. E isso é feito em Guice.
- E se esse aplicativo puder ser montado estaticamente usando o GraalVM, será apenas espaço.
"Acho que você não ganhará muito por lá." É como a primavera - é claro, você ganhará algo no desempenho.
- Aumente a velocidade de inicialização, por exemplo.
- Obviamente, na produção, arrastaremos algo marginal escrito por um campeão de Java e lutaremos pela velocidade de uma startup lá!
Entendo.
- Provavelmente os caras que realmente se importam com a velocidade de inicialização pegam um pouco do Azul Zing e os ajustam com algo escrito no SE.
"Entendi corretamente que a biblioteca que você escreveu era de código aberto e tudo isso?"
- Sim, é de código aberto do meu empregador anterior e de alguma forma pertence a ele, como foi usado no rascunho de trabalho.
Entendo. Ou seja, você escreveu durante o horário de trabalho.
- Sim, eles escreveram durante o horário de trabalho.
- E o que você acha, existe alguma perspectiva de escrever software depois de horas?
- Eu escrevo software depois de horas, embora agora não seja um software real. E a última coisa que escrevi ... agora na Rússia, o problema com travas é real, e para mim o problema urgente é contornar essas travas. Há um maravilhoso servidor proxy chamado 3proxy , então escrevi o Ansible playbook para Fedora, Ubuntu, Debian e Centos, testei tudo e compartilhei no GitHub. E também no Ansible Galaxy, compartilhado.
"E onde você encontra tempo para isso?"
- Eu, como todo mundo, tenho problemas com o tempo, porque canso no trabalho, tenho família, preciso passar pelo menos algum tempo com minha família. Mas nos fins de semana a família dorme até tarde, e eu sou uma brincadeira e acordo cedo, minha cabeça funciona bem de manhã e posso fazer muitas coisas. Às vezes escrevo algo antes mesmo do trabalho.
- O que você recomendaria para quem quer começar a escrever algo em código aberto, mas não funciona?
- Pergunte a si mesmo por que não dá certo. E, dependendo da resposta à pergunta, tente escrever algo.
- Há uma resposta padrão: sem tempo, não está claro onde eu preciso.
- Quanto a “sem tempo”, acontece que realmente não há tempo, mas acontece que realmente não há tempo. "Sem tempo" é uma maneira de dizer que não tenho motivação. Isso é absolutamente claro, e não o fato de que isso deve ser combatido. Nem todas as pessoas precisam se comprometer com o código aberto. Essa é uma maneira legal de fazer algo por si e pela comunidade, mas ninguém deve nada a ninguém.
Se não está claro quem precisa de você, a pergunta, novamente, é o porquê. Há duas razões: você ainda tem muito pouco tempo fazendo algo parecido com isto na programação, e parece-lhe que isso é algo extremamente chato e, provavelmente, é verdade, nesta fase, você não pode ajudar ninguém. Embora eu conheça pessoas, por exemplo, Slava Semushin - a primeira coisa que ele fez - ele começou a contrabandear no Alt Linux antes de começar a programar em algum lugar da produção. Era o seu caminho para a programação (isso é uma piada, é claro). Mas ele realmente não entendeu nada, quando começou, ele entendeu ao longo do caminho. E isso não é mais uma piada.
Acontece que as pessoas estão envolvidas na empresa há muito tempo e não entendem o que podem fazer. Estou nessa situação há muito tempo. Cerca de 4 anos atrás, com certeza. Estou na empresa há 6 anos e não entendi o que posso fazer. Mas, com o tempo, vi que esse componente do sistema que quero reescrever, em princípio, pode ser separado em um módulo separado e super sensível. Isso deve ser acordado com o empregador. O principal é dar o primeiro passo.
Às vezes, o empregador não quer coordenar, esse é um tópico bastante animado. Por exemplo, Tinkoff não está ansioso para abrir alguns de seus componentes de back-end, embora possa teoricamente.
Você começa a ver oportunidades com o tempo. O principal é isolar isso em um componente separado. Se o empregador não permitir, você o usará dentro do empregador, haverá um código aberto interno, como em alguns Zalando. Então, no próximo projeto, você verá que isso também pode ser distinguido.
Uau. Ou escreva novamente, por exemplo.
- Sobre o "escreva novamente". Um dos problemas que resolvemos em último lugar foi o log. É claro que todos os krupnyaki são confundidos com o registro centralizado, sem essa vida. A solução padrão para isso é a pilha ELK, ElasticSearch, Logstash, Kibana. Só há um pequeno problema - este é o Logstash. ElasticSearch, Kibana funciona bem, mas o Logstash não. Ou não funciona persistentemente ou muito lentamente. Se não funcionar persistentemente, o tamanho da fila será de 5000 mensagens. Abarrotado mais - as mensagens começam a cair. Para dizer o mínimo, uma característica desagradável. Portanto, tivemos Kafka em vez dele. No Sberbank, escrevemos nosso próprio aplicativo de logoff do Kafka , que também é de código aberto e funciona muito bem para si.
- Então era quem era!
- Já existem três deles, não tenho certeza do que você viu o nosso.
Ok. Voltando ao tópico de código aberto e log. E por que as pessoas usam loggers centralizados na empresa constantemente, tentam escrevê-las, se há Linux e as maneiras que os avós inventaram por elas - carregam tudo em um arquivo, por exemplo?
- Eu não sei no log centralizado normal do Linux. Existe o rsyslog, que é um bom formato, mas, para dizer o mínimo, não é adaptado, por exemplo, ao Java, porque se você olha para algum tipo de trilha de pilha, de repente acontece que as trilhas de pilha são muitas linhas, não apenas uma. Portanto, no rsyslog, essas serão entradas de log separadas. Se tudo isso se misturar em uma pilha grande, parece-me que isso machucará a todos.
Sim, provavelmente.
- E sinceramente não sei o que garante o rsyslog. Geralmente fico atolado quando tenho algum tipo de solução, tento encontrar seu lugar no teorema da CAP. E eu simplesmente não encontrei essas informações no rsyslog, talvez estivesse parecendo mal. Mas rapidamente não consegui determinar. Ele geralmente garante a entrega para nós e por quanto tempo? Que timestamps haverá quando ele assobia em algum lugar? Se ele garantir, isso já é bom, se você normalmente fizer logon com todos os tipos de extensões e traços, ainda assim descobrirá, não importa o que ele faça lá. Se não garantir a entrega, isso é absolutamente um desastre. Nesse sentido, confio mais no kafka, mas ele tem mais largura de banda. Isso apesar do fato de eu não conhecer Kafka bem, para ser sincero.
- Lá você precisa, de alguma forma, dividir, provavelmente, os logs em críticos / não críticos, porque se o servidor de registro travar, você nunca saberá o que aconteceu.
Enquanto estamos falando sobre Java, tudo é muito simples. Executamos em algum Docker e temos registros no stdout inseridos no nível de ERRO. E tudo começa a fluir para Kafka, a partir da depuração ou da faixa. Eu sou o tipo de pessoa cujos registros de débito nunca costumam ser desativados. Eu nunca vivi para ver esse momento brilhante, quando percebi que é tudo, não uso mais o log para analisar problemas.
"Você não tem medo de que a taxa de transferência, por exemplo, da rede de Kafka vá simplesmente demorar e terminar se todos esses terabytes de logs voarem para lá?"
- Sempre éramos pequenos demais, tínhamos 100 GB de logs por dia e 100 GB - qual é esse volume? O principal problema é como armazená-lo, não como transferi-lo. Você realmente tinha terabytes de logs?
- Não sei quanto foi em termos de armazenamento em disco, mas sei que às vezes o sistema iniciava tão lentamente que não esperávamos que ele fosse iniciado. Alguém acidentalmente organizou depuração ou rastreamento, e isso é tudo.
Espera. Parece-me, ou você seguiu o caminho errado quando sincronizou os logs pela rede?
- Não, eles apenas derramaram em Kafka.
- Mas de forma síncrona? É improvável que você tivesse a opção de fazê-lo de forma assíncrona, seria necessário aguardar o ACK do Kafka a partir de pelo menos um nó, mesmo se você for completamente teimoso e não desejar garantia nos logs. Pelo menos um ACK você ainda esperou.
Provavelmente sim.
- Digo que, porque escrevemos o aplicativo de logback, entendo o motivo pelo qual fomos guiados. Mas agrupamos esse appender no AsyncAppender e calculamos experimentalmente quantas mensagens temos no pico, e o buffer desse AsyncAppender foi torcido um pouco mais, como se houvesse um pico mais 10%. Aconteceu que nosso aplicativo não está bloqueado.
"Que histórias terríveis você tem." E por que isso não é padrão em Java, por que você deve escrever com as mãos?
- Como você precisa escrever com as mãos em todas as línguas, somente em Java é pelo menos claro onde escrever. E se você receber alguma vantagem, não sei por onde começar.
- Então você acha que não há bibliotecas que possam ser adicionadas ao Maven e tudo será instalado por si só?
- Vamos começar com o fato de eles não terem um Maven normal, porque eles têm Ninja, Make, CMake, qmake e tudo fica um pouco pesado com o Maven. Obviamente, eles têm bibliotecas para registro, estão em Java e está claro como anexar anexos a eles. Além disso, em Java, eles são bonitos, flexíveis, geralmente trabalhando com fachadas e tudo mais. E se você olhar para algum Rust, há algo completamente triste, triste. Não sei onde colocar e anotar meus loggers. Eu mal dominei como configurá-los.
"Então você gosta mesmo de Java?"
Eu gosto do ecossistema. Gosto do Kotlin como linguagem e do Java como ecossistema. A propósito, nem um único idioma é melhor que o Kotlin, eu não sei nada agora. Depois de colar no Groovy, tenho até uma camiseta de Baruch com a inscrição Groovy.
Por que Kotlin?
- Escolhendo entre Java, Scala, Groovy e Kotlin - por que exatamente Kotlin?
- A combinação perfeita de boa sintaxe e complexidade para dar um tiro no próprio pé. Não gosto de rock, porque é muito fácil atirar na perna, e às vezes não para você, mas para o seu vizinho. Você adiciona variáveis implícitas, tudo funciona magicamente para você e o inferno está em sua depuração. Você pode, é claro, concordar em não usá-los, depois perde alguns dos encantos da Rocha. Obviamente, se você é completamente inteligente, usa macros no Rock e ninguém, exceto você entende como isso funciona.
- No Rock completou as macros, ao que parece?
- Quero dizer que eles funcionam, mas não quero dizer que eles possam ser usados. E se você for ainda mais inteligente, use uma biblioteca como Cats. Mas isso provavelmente está no mesmo nível em que você se tornou um pouco mais inteligente e já está entediado com o uso de scalaz e usa gatos. Mas ninguém pode ler esse código, exceto você.
- E outros adeptos de gatos.
"Você diz que é verdade, mas não é verdade, porque outros adeptos da Cats usam de maneira diferente."
- Isso faz parte do poder deste sistema.
- Muito poderoso, remanescente do BFG .
- Que você atira aos seus pés.
"Às vezes para si mesmo, às vezes para os outros, que sorte." A propósito, notei que as pessoas que escrevem no Rock às vezes esquecem de pensar. Eles têm conceitos tão belos que podem fazer 2 inserções seguidas em locais diferentes e não pensar no fato de que tudo isso precisa estar de alguma forma envolvido em uma transação. Mas eles têm chamadas bonitas para o banco de dados com alguma mancha (ou o que estiver na moda para trabalhar com SQL no Scala).
- Mas você pode fazer isso em dois lugares em Java ...
- Mas em Java, eu tenho o Spring e coloquei a anotação @Transactional. Em Java, não é habitual fazer coisas complexas. Em Kotlin, parece, a propósito, também. Mas no Rock aceito. Quanto ao Groove, é uma linguagem interessante, é claro, até você entrar no bytecode de um lado ou se deparar com o fato de não entender que tipo de objeto você possui. Às vezes, eles também gostam de gritar que qualquer código Java válido é um código válido, mas isso não é verdade porque classes internas anônimas não funcionam lá. Você não pode tomar e instanciar. Você precisa criar um lambda e depois convertê-lo. Então, eu escolhi o Kotlin, ele tem uma sintaxe um pouco diferente da do Java, mas há um conversor lá, se você realmente quiser. Por outro lado, não há nova complexidade. Não há nada em que você não possa clicar com a tecla Ctrl pressionada e não ir. Você clica com a tecla Ctrl pressionada no duplo igual e muda para o método igual.
- Um momento tão escorregadio: você confia no JetBrains? Agora, muitos realmente não confiam em Java, porque é Oracle, mas o que fazer com o JetBrains? Os caras normais estão sentados lá, desenvolvendo uma linguagem?
- Não quero estragar uma parte do relatório, mas no geral gosto da maneira como eles dizem e gosto do que vejo. Não tenho a opção de "não confiar". Ok, bem, eu não confio no JetBrains, então tudo fica realmente triste, porque que outras línguas desenvolvemos por algumas pessoas relativamente sãs? Provavelmente Rust (desenvolvido pela Mozilla), Golang é desenvolvido pelo Google. Além disso, todos eles são desenvolvidos por comunidades, incluindo até Java. Simplesmente não está claro em quem e por que você pode confiar. Eu tenho problemas com paranóia, não sei como fazer isso.
No primeiro dia da conferência do Coringa (19 a 20 de outubro de 2018), Pasha falará sobre os back-ends da Kotlin no relatório "Kotlin - 2 anos de produção e nem uma única lacuna" . O Coringa é uma das nossas principais conferências, e escrevemos constantemente sobre isso no Habré. Se possível, não deixe de vir.
- Recentemente, Baruch e eu descobrimos um certo estudo sobre o tópico Kotlin, que mostra que o programa no Kotlin com 40 de seus papagaios (papagaios de estudo) é melhor que o programa em Java.
- Não é melhor, mas enfim, se minha memória me servir bem.
- Ambos são mais curtos e melhores. Eles mediram tudo em cheiros de código. Eu não sei como dizer Provavelmente, em certo sentido, isso pode ser substituído pela palavra "melhor".
Ótimo. Apenas saiba, em qualquer comparação dos dois idiomas, há um pequeno problema. Eles realizaram a mesma tarefa e havia as mesmas ferramentas de medição? É verdade que os negritos de código medem a mesma qualidade em Java e Kotlin? Ou eles escreveram os últimos 20 anos em Java e aprenderam a encontrar o código dos casais 800, e em Kotlin eles escreveram 2 anos e aprenderam a encontrar 20?
- Uau, esta é uma pergunta muito boa. Mas não são os números que eles deduziram que são interessantes, mas com que perguntas eles lidaram. Existem apenas cinco deles, quero perguntar também. Qual é o nível de adaptação do Kotlin em qualquer lugar da região? Depende de quantas pessoas você trabalha, de quantos projetos, de quantos exemplos.
- É claro que todo o Android quase mudou para Kotlin (desenvolvimento moderno), e o back-end está se movendo muito lentamente. Um dos objetivos do meu relatório é acelerar esse processo. Quando cheguei ao HH para uma entrevista e disse que nos últimos dois anos eu escrevia um back-end em Kotlin, eles me disseram, é possível? Isto é apenas para telefones móveis! Os empregadores realmente não sabem que isso é possível. Provavelmente, os funcionários também não sabem. É difícil falar sobre a quantidade de adaptação, acho que no Android é de 80 a 90% e no back-end - 10% no máximo, provavelmente. Sim, que 10! Se você contar todos os sistemas legados, não haverá dois por cento. Mas se você contar apenas novos projetos, talvez 10%.
- Ou seja, pelo menos uma coisa como Kotlin no back-end já existe?
- Sim, escrevi no Real Estate Center do Sberbank. E antes disso, ele também escreveu.
- bom Simplesmente, muitos dizem que este é o marketing da JetBrains, e as pessoas vivas reagirão de maneira diferente a isso.
- Parte do meu relatório é dedicada ao fato de que, como resultado, toda a parte Java da empresa começou a mudar para o Kotlin após o sucesso do nosso projeto.
- Então, surge a próxima pergunta: qual porcentagem do código no Kotlin é a aplicação? Primeiramente, você pode misturar Java e Kotlin como base. Em segundo lugar, o Kotlin pode ser usado como DSL e começar a reescrever tudo seguidamente.
- Do meu ponto de vista, há muito poucas situações em que você precisa interferir deliberadamente no Java e no Kotlin. Faz sentido escrever todo o projeto no Kotlin. Talvez se você achar que estará traduzindo o aplicativo inteiro para o Kotlin, primeiro comece a escrever novas classes no Kotlin e, em algum momento, comece a converter as classes antigas de Java para Kotlin e corte-as com canetas. Mas devo dizer que "Java2Kotlin" é uma ferramenta mais ou menos, não perfeita.
- Por "Java2Kotlin", você quer dizer Ctrl C - Ctrl V na Idea entre arquivos?
- Sim, mas ainda há algum tipo de atalho, provavelmente.
- A propósito, tentei uma vez que o Scala usasse exatamente Ctrl C - Ctrl V na Idea, mas, como resultado, acabou sendo um lixo raro.
"Eu também não gosto do que o Java2Kotlin faz." Eu escrevo melhor. Às vezes você pode começar com isso, é claro. Você tem duas maneiras: ou você converte o projeto inteiro, especialmente se não for muito grande, e corrige todos os lugares errados. Ou você faz isso de acordo com um clássico: copiar com as mãos por muito tempo, muito trabalho mecânico. Mas você provavelmente quer começar em algum lugar.
- Existe algum tipo de complicação relacionada não à sintaxe burra, mas à parte semântica?
- Parece que vou falar sobre isso em um relatório.
- bom Quando o Kotlin é adicionado ao projeto, sua quantidade aumenta ainda mais ou diminui? Quanto Kotlin deveria ser para ele começar a devorar tudo?
"Eu não tenho essa experiência." Escrevemos imediatamente o aplicativo em Kotlin, exceto em um caso. Você é guiado pelo ecossistema de plugins da Idea?
Um pouco.
— , , , - . - , , , , , .
— Community Edition , , .
— Community Edition , Ultimate.
— Ultimate , Spring-.
— , , Spring-, .
— -, , endpoints, , .
— . endpoint', ?
— , . , , .
— , , Shift-Shift-Shift, - , Shift-Shift-Shift , , endpoint' , . , - .
— , Search Anywhere, .
- Então , , . . , , , . , , , , , , , , .
— , ?
— , . , , , .
— . , , , . . , , , , .
— , , , , , , , , , . . , -. . , , . Java-, . generic , , invariants, in. . . , , . , . , Haskell, ? : map, fmap, .
— .
— : , , . , — sequence. — , .
, , , - . GraalVM , , . , @graalvm_ru.
— ?
— . 2, 2 2 . .
— , . , .
— - . : for- , for-, ( baseline), . 2 6 . , — : sequence' sequence'. , , - . . . , . , , , baseline.
— , ?
— , - .
— , , GraalVM .
— . JDK10 JVMCI , GraalVM EE, , C2.
— - , Community Edition -Community Edition, , .
- não. , , . . , , , .
— ! :-)
— , .
« »
— . : . , . : ?
- não. . « ». , , , , : , , , . 2008 , , , . , . , , . .
— ?
— 4 C++ Builder, Java, , -, , . Java , C++ Builder, , , C++ Builder, . . , . , , , .
— — VCL, .
— , . , - , - . - , SQL, . , , .
— C++.
— , Java, . C++ - , , , , , . MVC. , NetBeans, , . , , . GroupLayout BorderLayout. , , , , . , , -.
— , IDE-?
— . , , - Electron.
— . , Java.
— , . - - : JavaScript. .
— GraalVM , Electron JavaScript -.
— . , , , . Nashorn . Truffle- JavaScript? , .
— , , Nashorn, . Electron, .
— , ?
— , Electron.
— ?
— Node.js, Graal Node.js, . .
— ?
— . - .
— . — Node.js, Electron Builder, SQLite ORM . , , — SQLite — 10 . -, , . .
— , , , .
— . . , Java FX, , , , 10- . , JRE, . , — , . , -. , - , .
— , .
— - , - , . -, .
— - desktop environment , , -. , - to do list, - . , , , , . , , , . — F1, .
— , , . - – CLI-. , Task Warrior, . , .
— « ». , , , - . ?
— , ?
— .
— , .
— -. , ?
— , : «, , ?» : «». , - . - , - , . : « ?» , . : «, . , ?» «». « , ».
— : , , . ? , - ?
— , , , : . (5 , ), , - , , , , . , , , - , , , , .
— , , — , , ? , , ?
— , - . , . , . . , . . .
— : - , , - — SQL , . .
"Eles são bons?" A única questão importante é se eles estão bem. Não existe um caminho abstrato abstrato para todos viverem. Para mim, é certo avançar e procurar tarefas interessantes. Para alguém, é certo ficar parado, fazer o trabalho que sempre funciona bem e ser pago por isso. Todas as pessoas são necessárias.
- A propósito! Você sabe tantas coisas interessantes e pode contar. Por que você não está em nossas conferências todos os anos com um novo relatório?
"Acho que não sei o suficiente para contar muito."
"Mas você ainda veio!"
- Por acaso, tenho uma experiência mais ou menos única para o setor. Muito poucos realmente escrevem um back-end no Kotlin. Parece que nenhum deles está ansioso para falar sobre isso. E eles provavelmente não têm essa veia de evangelismo. Eu sempre tenho o desejo de ensinar aos outros como viver (ou pelo menos tentar). Portanto, é claro, estou interessado. Além disso, eu mesmo estou um pouco interessado neste relatório, porque o próximo empregador, a quem irei pedir para escrever em Kotlin, dirá: "Por quê?", Direi que agora, fiz um relatório no Joker vamos ver
- Como formular o momento em que você entende que possui experiência suficiente para fazer um relatório?
- De jeito nenhum. O relatório é feito não porque você tem experiência, mas porque tem alguma experiência e deseja falar sobre isso. Já tenho o desejo de contar desde a primeira vez em que cheguei ao JPoint. Mas o tópico deliberado "para contar" eu não fazia muito tempo atrás. Tal tópico para que você possa falar sobre 45 minutos.
Por que ir à conferência?
- Por que conferências? Por que eles são necessários? Pelo fato de você geralmente ir a eles, você precisa deles.
- Não, pelo fato de eu ir até eles, acontece apenas que eu vou até eles.
"Mas você precisa deles por algum motivo?"
- Não sei com sinceridade que estou pronto para responder a essa pergunta. Não tenho certeza se vou à conferência para obter informações. De certa forma, vou à conferência para que você me conheça.
- Essa é uma ideia normal.
- Quando digo "você", quero dizer muitas pessoas que se lembram de mim. Em geral, é útil para mim que o mercado me conheça simplesmente em termos de valor, especialmente se eu causar uma boa impressão. E tento fazer isso, porque na verdade pareço conhecer pouco, e constantemente não tenho um trabalho interessante. Estou constantemente procurando um emprego mais interessante. Extremamente raramente aparece algo que parece mais interessante do que o que tenho agora.
Por outro lado, vou a uma conferência para subir no intestino. Não existe essa oportunidade em lugar algum. Fui ouvir sobre como o Azul Zing funciona, porque é interessante. Sim, mal posso usar esse conhecimento, mas é apenas interessante. Isso dificilmente pode ser lido em um livro. Tenho outro problema: leio um pouco os livros. Eu prefiro ler ficção. Eu sou provavelmente um dos poucos, pelo menos, alguns técnicos sérios que vivem assim. Leio referências, pimenta branca, mas quase nunca leio livros. E nas referências e pimenta branca, essas informações raramente são possíveis.
- Sim, e em livros não tão frequentemente essa informação acontece.
- Os livros são diretamente difíceis para mim, para ser sincero. O último livro significativo que li sobre Java é "Concorrência Java na Prática", e no ecossistema Java é "Persistência Java de Alto Desempenho", Vlad Mihalcea (este é um livro muito bom). Mas geralmente é uma leitura muito difícil, e não me é dada.
- Vale a pena ler o dock do Java
- Depende da sua maneira de aprender. As pessoas são divididas em dois tipos, de acordo com a forma como estudam: algumas preferem escrever primeiro, depois entendem como funciona, e outras primeiro lêem como escrever e depois escrevem. Eu pertenço ao primeiro tipo. Eu sempre começo com a experimentação e não mergulho fundo. Mergulho profundamente muito mais tarde. Uma garota maravilhosa trabalhou comigo, que, antes de escrever a primeira linha em Kotlin, foi ler uma doca em Kotlin.
- Provavelmente, eu teria feito isso, a propósito.
- Essa é uma maneira maravilhosa, não tenho nada contra.
"Também estou muito interessado em saber como pessoas como você podem escrever imediatamente normalmente."
- Não há tarefa para escrever normalmente, há uma tarefa para escrever. Isso é muito importante. Em geral, a tarefa de escrever normalmente nem sempre surge, especialmente quando você está estudando. Quando aprendo alguma coisa, não consigo entender um monte de informações e depois escrever. Eu sempre começo com a experimentação. Talvez você saiba que às vezes escrevo um podcast. Na primeira edição, que gravamos e publicamos, falei sobre o fato de conseguir estudar tudo apenas porque nunca adiarei para mais tarde. Não tenho a tarefa de ler algo e, portanto, economizo muito tempo, porque imediatamente me sento e começo a usar algum tipo de tecnologia, seja em um projeto de trabalho ou em algum tipo de projeto doméstico. Então, se necessário, irei mais fundo. Mas, para começar, posso dizer que entendo como usá-lo. Na próxima etapa, posso dizer que sei como isso funciona. Comecei a usar a primavera antes de perceber como ela funciona. Provavelmente cerca de 6 anos de idade.
- Parece que devemos arregaçar :-) Muito obrigado! Vejo você no Joker, eu definitivamente irei ouvir o seu relatório.