
Você parece gostar da
versão piloto . E ainda estamos confiantes de que os caras que não usam lentes de câmera são tão interessantes quanto as estrelas de TI. E talvez até mais, porque eles falam sobre problemas reais e suas soluções. Nesta semana, fizemos 10 perguntas à pessoa que apoia modestamente o Yandex.Maps para iOS.
Nikolai Likhogrud ( likhogrud ) de Moscou. Começou com HTML e Basic na nona série. Então ele estudou independentemente C #, entrou na VMK Moscow State University e entrou na equipe Any Void. Juntamente com o Any Void, ele se mudou para o Yandex; nos últimos 2,5 anos, ele trabalha como líder de equipe do grupo de desenvolvimento Yandex.Maps para iOS.1. Conte-nos sobre o recurso que você implementou e do qual você se orgulha.
- Aqui é necessário separar os recursos da equipe e os pessoais. Do ponto de vista pessoal - o mais memorável - é que há um ano e meio eu acelerei duas vezes o tempo de inicialização do aplicativo. E ele contou a seus colegas sobre isso. Eu descobri alguns dos recursos do iOS que não foram descritos em lugar algum. Houve um problema devido ao fato de o Swift puxar muitas bibliotecas dinâmicas. Para cada um deles, você precisa verificar a assinatura no início - ela fica mais lenta. Ele fez um trabalho útil - realmente afetou a vida dos usuários. Eu até
falei no Mobius então .
Quanto ao desenvolvimento da equipe, o Maps é um projeto enorme, com vários recursos diferentes. Eu provavelmente nunca vi isso de novo. E se você se sentar para entender, eu posso mostrar coisas que muitos nem sabem - há muitas coisas! Em quase todos os lançamentos, estamos fazendo coisas legais e tenho orgulho de tudo. Agora, estamos tentando bombear nos "Mapas" não cenários de pesquisa e roteamento estabelecidos historicamente, mas aqueles que falam mais sobre o local onde você está. Chamamos isso de guia da cidade. Em geral, não é mais uma informação de referência, mas cognitiva, divertida. E um recurso muito interessante - realidade aumentada nos cartões. Fizemos rapidamente: tudo saiu imediatamente, tudo decolou. Conseguimos logo no lançamento do iOS 11, antes de outras equipes. Foi um prazer.
O boneco flutua no Neva, nada de incomum2. E agora - sobre o fakap mais feroz.
Fakap era. Isso foi no começo quando eu mudei para o Maps: o projeto não é familiar, a equipe anterior estava completamente dispersa, não havia ninguém para me verificar. E em uma versão, eu zadosil servidores geocoder, porque eu esqueci de adicionar uma verificação. Após algumas manipulações no aplicativo, uma solicitação foi enviada ao servidor para cada atualização da posição do usuário, que retornou dados sobre a localização do usuário. E essas mudanças na geolocalização podem ser 10 vezes por segundo. E levando em conta quantos usuários temos, mesmo que cada centésimo ou milésimo executasse essas ações, tivemos uma grande carga no servidor.
Foi um momento que se tornou visível fora da estrutura da minha equipe. As pessoas vieram e disseram: Bem, o que você está fazendo! Mas, a propósito, ele resolveu normalmente - eles levantaram o servidor para lidar com a carga. O bug foi encontrado rapidamente, corrigido rapidamente e a atualização foi postada. A verdadeira revisão na AppStore levou cerca de uma semana. Agora ficou mais fácil com isso. Fiquei mais ofendido: como poderia ser, comecei a trabalhar! Mas todo mundo entendeu tudo: que o projeto era grande, eu estava sozinho lá e não havia ninguém para me dizer ...
3. Descreva seu espaço de trabalho: da cadeira e do monitor aos ambientes de programação e seus utilitários favoritos.
"Eles me deram uma cadeira e uma mesa também." Nele, há um monitor Thunderbolt e um laptop. E também teclado e mouse sem fio, para que você possa trabalhar apenas com o monitor.

A mesa está cheia de pedaços de papel, onde todos os meus pensamentos e planos estão escritos. Para todos os tipos de Trello e Dapulse, eu não fui. Quando comecei, isso ainda não estava lá e, em geral, o jornal é de alguma forma mais familiar. Claro, ainda estou fazendo anotações no laptop, mas escrevê-lo dessa maneira e depois riscá-lo é melhor. Geralmente, existem muitas coisas na mesa que simplesmente se acumulam ao longo do tempo de algum lugar, mas recentemente as removi. Lego ainda está por aí - conforto. Em geral, acho que meu lugar é aconchegante. E quando olho para as mesas dos colegas, onde nada se encontra - um monitor e um laptop - parece-me que eu não seria capaz.
4. Por que princípio você escolhe um emprego? Pilha, produto, condições de vida, dinheiro?
- Eu provavelmente responderia a pergunta "
se eu escolhesse ...". De fato, nunca mudei de emprego. Eu já cresci no Yandex - trabalho há mais de cinco anos. Agora tenho uma boa posição, equipe, responsabilidades, muitos planos.
Então, se eu escolher, provavelmente o faria sob comando. Ou seja, conhecer antecipadamente as pessoas com quem trabalharei. E se você os conhece, então, como regra, você sabe qual produto irá desenvolver. Se uma pessoa não se envolve com lixo, pode ter certeza de que seus projetos são bons. É importante estar na comunidade: que você é conhecido e você - os outros. Para que não haja tal coisa que você vá a algum lugar para zero, para o desconhecido. Afinal, até as tarefas dependem das pessoas. Se um novo funcionário for enviado sem êxito, ele poderá rapidamente se tornar desinteressante.
Outra questão monetária importante. Mas aqui tudo parece ser mais ou menos. Realizo muitas entrevistas e sei o quanto elas oferecem em outras empresas.
5. Quais tecnologias e idiomas que você usa você gostaria de corrigir?
- Posso falar sobre a dor comum de todos os desenvolvedores do iOS. No Swift, o compilador não é otimizado, o ambiente de desenvolvimento não é finalizado. Em nosso projeto, onde 400 mil linhas de código, tudo fica mais lento. A indexação diminui, a abertura de arquivos diminui, a abertura de projetos diminui. A compilação leva muito tempo, consome muitos recursos.
Até nosso trabalho depende do que o Xcode compila por um longo tempo. Funciona bem com Objective-C, mas ruim com Swift. Se ele fizesse isso normalmente, não precisaria dividir o aplicativo em módulos - tivemos que investir nele. Agora, estamos desenvolvendo mais em projetos de teste, em vez de no aplicativo principal. Então jogamos dos projetos de teste para o principal. Embora isso tenha beneficiado todo o projeto, houve alguns custos em aprender a trabalhar dessa maneira.
6. Onde é melhor aprender com a experiência de outra pessoa - em uma universidade, em conferências, em um centro? Em outro lugar?
- O mais eficaz é quando você tem um problema específico e procura uma solução. "Para aprender com a experiência" - eu realmente não entendo o que isso significa. Mas “onde procurar uma solução para o problema” é compreensível. Onde é encontrado. Você apenas coloca no Google e vê o que ele diz para você.
E, de alguma forma, nas conferências, eu nem adoto a experiência de outras pessoas, vou lá, mas compartilho a minha. Já existe alguma experiência no gerenciamento de um grande projeto que interessa a muitos. Podemos dizer que existem apenas alguns aplicativos como o nosso, e é por isso que a experiência é única à sua maneira. Eles me perguntam: como eles dividiram os módulos, como a revisão de código é organizada, como o
CI funciona para você lá.
7. Se você tivesse recursos ilimitados (tempo, dinheiro, poder, pessoas), qual projeto você adotaria?
- Tenho uma pequena lista grande: "Há muito tempo que desejo, mas não tenho tempo" - o que quero fazer no Maps. Há peças que eu gostaria de melhorar.
Em geral, seria interessante entrar em contato com a indústria espacial. A idéia de uma pessoa fora da Terra, o conhecimento do universo - isso me interessa muito. Regozijo-me quando alguns sucessos ocorrem nessa direção. Provavelmente, não há nada para escrever no iOS, mas em algum lugar eu poderia ser útil com minha habilidade de gerenciamento de equipe. Sim, pelo menos eu iria fazer café, se tivesse uma idéia.
8. Como você relaxa? O que você está fazendo além do trabalho?
- Você precisa reiniciar - cem por cento. Este modo 5/2 foi inventado por tios realmente inteligentes. Se você está envolvido em um projeto, está queimando, está doente por ele, e se você trabalhar no fim de semana, será ruim. Como resultado, você perderá o fusível, mas precisará mantê-lo de maneira estável, pelo contrário, para trabalhar por meses e anos.
No fim de semana, escolho fazer algo simples: passear, assistir TV, nada extremo. Embora eu talvez queira, simplesmente não existe uma empresa adequada. Algumas vezes os caras e eu saímos de caiaque no Klyazma, foi ótimo. Às vezes há paintball. Mas tudo isso não é regular, porque é um desperdício ativo de energia. É claro que você recebe algum tipo de emoção em troca ... Mas cinco dias para trabalhar e depois outros dois dias para nadar e correr para algum lugar e depois trabalhar novamente cinco dias? E seu corpo já está doendo! Eu acho que não podia.
Eu também gasto tempo em reparos. Pequeno e sem fim. Este é um mundo separado, com tecnologias próprias, experiência única. É muito interessante lá.
9. Conte cerca de três livros favoritos - educacional, popular ciência e ficção.
- Eu não malhei com os livros de treinamento. No trabalho, posso dizer que não li um único livro. No começo, talvez esses livros fossem sobre C ++. Lembro-me de viajar para um acampamento infantil: as pessoas eram normais e eu tinha C ++. Como resultado, eu realmente não li nada, porque não havia computador na mão. Eu li - parece compreensível, mas como posso aplicar isso às minhas tarefas? Como ganhar experiência? Sou mais um praticante, não um teórico. Talvez eu não conheça nenhum termo interessante que outros caras usem, mas ao mesmo tempo eu posso fazer meu trabalho. Aprendi isso apenas resolvendo tarefas difíceis. Eu sempre procurei experiência e soluções simplesmente na Internet.
Eu diria àquelas pessoas que se concentram muito na leitura de literatura e blogs que o que você leu e viu não é uma garantia de que você pode reproduzi-lo. Não se deve romper com as próprias tarefas, para que a leitura seja sempre acompanhada de prática.
Da comunidade científica, eu li a Wikipedia, onde você pode ler sobre tudo. Eu realmente amo história e posso ler lá de Rurik a Ivan, o Terrível, do primeiro Romanov ao golpe do palácio. E, acidentalmente, pule o link para Alexandre, o Grande. Eu posso ficar por 2-3 horas. Existem artigos interessantes sobre armas, sobre tecnologias de processamento de metais. É uma pena, não posso reproduzir isso, mas entender como as pessoas pensavam em tudo isso antes - do forno de leite cru ao processo de Bessemer - é legal.
Uma ficção na minha vida não é suficiente. Tais livros provavelmente suplantaram filmes. Porque, de fato, a missão deles é semelhante, mas os filmes são mais compactos. Embora eu mencione um livro, é "Oblomov" de Goncharov. Fiquei muito triste quando li por um longo tempo. Parece até chorar. Agora, seria interessante relê-lo. Agora provavelmente pensaria que ele precisava, Oblomov.
10. Se, bem diante de seus olhos, a IA acordar, o que você dirá a ele?
- A questão é: o que significa "consciência"? Se é feito simplesmente para passar no teste de Turing, ainda não é consciência. Mas se alguém não entrar em tais detalhes, eu perguntaria sobre a solução de quaisquer problemas específicos. Eu ainda sou uma pessoa de prática. "Como tornar o Xcode mais rápido?" :).
Mas você definitivamente precisa começar com "Olá, tudo bem?" "Como você está?", "O que você está fazendo?" - as respostas a estas perguntas podem conter algumas notas de reflexão. Como a máquina realmente avalia seus negócios e humor? E o que ela está fazendo agora?
Pergunta do herói anterior: de que tecnologia você mais gostou no processo de aprendizado?
- é um prazer? Ainda não aprendi a gostar de trabalhar e estudar. Aprendi a tratá-los com calma e a ter um bom desempenho. O SDK do iOS, por exemplo, não me causou muito interesse, porque geralmente é simples.
Foi interessante na universidade quando usei o aprendizado de máquina em um projeto. Foi interessante entender que não há essencialmente nada complicado no ML. Conhecendo os parâmetros de entrada, você pode prever mais ou menos o resultado. Provavelmente, em parte por causa disso, não sinto a euforia da IA, que muitos experimentam. Eu sei que estes são apenas algoritmos.
E já foi interessante entender os compiladores com paralelização automática. Esta é uma tecnologia muito desenvolvida, há muitas coisas diferentes nos compiladores. Eles são realmente inteligentes e fazem muito mais do que você pode imaginar. Por exemplo, as conversões mais complexas na árvore de sintaxe. Ou a otimização mais complicada da geração de código quando o compilador trabalha para um hardware e processador específicos.
É ótimo que agora exista uma estrutura
LLVM de código aberto que permita criar seu próprio compilador. Você pode criar seu próprio idioma! Escreva um analisador para ele, que será envolvido no léxico e na análise, e use o poder de um compilador moderno para obter o código da máquina.
Bônus: faça qualquer pergunta a outro desenvolvedor.
- Sabendo que você não pode voltar, voaria para Marte na primeira expedição?