“Posso falar sobre a dor que todo desenvolvedor de iOS tem na bunda” - 10 perguntas a um desenvolvedor, episódio 2



Parece que todos gostaram do episódio piloto , e ainda temos certeza de que as pessoas "nos bastidores" podem ser tão emocionantes quanto as celebridades de TI que todos conhecemos e amamos. E talvez até mais, porque eles falam sobre problemas reais e soluções reais. Nesta semana, fizemos 10 perguntas a uma pessoa por trás do desenvolvimento do Yandex.Maps para iOS.


Nikolay Likhogrud ( likhogrud ) de Moscou. Iniciou a programação na 9ª série do HTML e Basic. Em seguida, aprendeu C #, se formou na Universidade Estadual de Moscou com um diploma em TI e acabou na equipe Any Void. Junto com eles, ele se mudou para o Yandex, onde passou os últimos 2,5 anos como líder de equipe no desenvolvimento do Yandex.Maps para iOS.

1. Conte-me sobre um recurso que você implantou que o deixa realmente orgulhoso.


- Precisamos diferenciar entre os recursos da equipe e os pessoais. O que mais me lembro é que, 1,5 anos atrás, eu reduzi pela metade o tempo de lançamento do aplicativo e contei a meus colegas sobre isso. Desenterrei alguns recursos do iOS que não foram documentados em nenhum lugar. Como o Swift (a linguagem de programação que o iOS usa) arrasta muitas bibliotecas dinâmicas junto com ele, houve um pequeno problema. Toda biblioteca precisava que sua assinatura digital fosse verificada no lançamento, o que atrasa tudo. Então, meu trabalho realmente ajudou os usuários. Até fiz um discurso na Mobius sobre isso.

Quando se trata de desenvolvimento de equipe, o “Maps” é um projeto enorme, com muitos recursos diferentes. Eu nunca vi nada assim antes. Se você realmente se sentar e se interessar por isso, eu posso mostrar alguns recursos que provavelmente ninguém conhece - há muitas coisas lá! A cada novo lançamento, fazemos algo muito legal, e tenho muito orgulho disso. Atualmente, terminamos de polir os dados históricos para pesquisa e planejamento de rotas e focar nos recursos que indicam onde você está. Nós o chamamos de "guia turístico da cidade". É menos uma ferramenta útil e mais apenas entretenimento. Um dos grandes recursos é a realidade aumentada no Maps. Fizemos isso de maneira incomum e rápida: funcionou praticamente desde o início, primeira tentativa. Até conseguiu cumprir o prazo antes do lançamento do iOS 11, à frente das outras equipes. Foi muito legal.

Nada de especial - apenas um donut rolando ao longo do rio

2. Agora, conte-me sobre sua pior foda.


- Oh, houve um. Foi no começo, quando entrei para a equipe do Maps: era um desconhecido para mim, a equipe anterior estava completamente fora de controle e não havia ninguém para me verificar. E uma vez, acidentalmente, fiz DDoS nos servidores de geocodificação porque esqueci de fazer um teste em algum lugar. Depois que um usuário faz algo com o aplicativo, o telefone envia uma solicitação ao servidor toda vez que sua região é atualizada, e o servidor retorna dados sobre onde o usuário está. Na taxa máxima de 10 vezes por segundo. E, considerando quantos usuários temos, mesmo que todos os 100 ou 1000 usuários interajam com esse recurso, o servidor realmente se esforçou para lidar com isso.

Foi o raro momento que saiu da equipe do Maps, pessoas de outras equipes me perguntaram: “o que você fez!”. Mas, felizmente, corrigimos o problema rapidamente - o servidor estava com um backup muito curto. Encontramos o grande, o corrigimos muito rapidamente e enviamos um hotfix para a Apple (embora a análise da App Store demorasse cerca de uma semana). Agora é muito mais fácil detectar lá, e naquela época eu estava mais brava comigo mesma: como eu podia me ferrar tanto depois de me juntar à equipe? Mas todos entenderam que o projeto era grande e não havia ninguém com quem consultar ...

3. Descreva seu local de trabalho: da cadeira e monitor do escritório, aos ambientes de desenvolvimento preferidos e utilitários favoritos.


- Cadeira e mesa que não escolhi: o que a empresa me deu eu peguei. Nele há um monitor Thunderbolt e um MacBook, além de teclado e mouse sem fio para que eu possa deixar o laptop de lado.



A mesa está cheia de papéis com meus pensamentos e planos neles. Ainda não consigo mudar para algo progressivo: Trello ou Dapulse, não importa. Nada disso existia quando entrei e ainda prefiro papel. Claro, eu também tomo notas no laptop, mas ainda é agradável escrever algo e depois digitar mais tarde. Também há muitas outras coisas na mesa que eu limpo periodicamente. Há também alguns tijolos de Lego para o conforto. Tento conscientemente fazer com que meu espaço de trabalho pareça estar em casa e às vezes olho para as mesas dos meus colegas de trabalho, onde não há nada além de um laptop e um monitor, e acho que não posso viver assim.

4. Como você escolhe um emprego? Pilha, produto, condições de vida, dinheiro?


- Eu provavelmente responderia se a pergunta fosse "se eu estivesse escolhendo ...". Essencialmente, ainda não mudei de emprego. Estou no meu sexto ano no Yandex e não consigo me imaginar em nenhum outro lugar. Tenho uma ótima posição, equipe, responsabilidades, muitas perspectivas de carreira.

Portanto, se eu escolhesse onde trabalhar, provavelmente examinaria primeiro a equipe. Preciso saber com quem vou trabalhar antes de tomar esse tipo de decisão. Se você os conhece, provavelmente também sabe em qual projeto estará trabalhando. Se a pessoa for realizada, você pode ter certeza de que ela também tem ótimos projetos. É importante conhecer outras pessoas e que outras pessoas o conheçam. Você não pode se isolar e entrar no desconhecido. Até tarefas dependem muito das pessoas. Se a empresa perder seu novo contrato, ele rapidamente se desinteressará.

A questão do dinheiro também é importante, mas é mais ou menos a mesma em todos os lugares. Já fiz muitas entrevistas e sei o que geralmente está sendo oferecido em outras empresas.

5. O que você gostaria de corrigir nas tecnologias e idiomas que você usa?


- Posso falar sobre a dor que todo desenvolvedor de iOS tem na bunda. O compilador de Swift é terrivelmente não otimizado, o ambiente de desenvolvimento também não é polido. Nossos projetos de 400 mil linhas de duração ficam como loucos. A indexação é lenta como melaço, cada arquivo é aberto vários minutos, um projeto pode ser inicializado por uma hora. Compilar não é mais rápido e também consome muito poder de processamento.

Nosso trabalho depende da rapidez com que o Xcode compila coisas. Funciona bem com o Objective-C, mas há algo errado com o Swift. Se funcionasse um pouco mais rápido, não teríamos que dividir o projeto em módulos, mas teríamos que investir nele. Atualmente, desenvolvemos mais projetos de teste, e não o aplicativo principal, e depois o transferimos. Embora tenha funcionado bem no nosso projeto, demorou dinheiro e tempo para aprender a trabalhar dessa maneira.

6. Onde é o melhor lugar para compartilhar experiências de trabalho - é faculdade, conferências, Habr? Em outro lugar além disso?


- A maneira mais eficaz é ter um problema específico e procurar uma solução para ele. "Ganhar experiência" é um termo muito amplo, mas "procurar uma solução" é mais apropriado. Você acabou de digitar sua pergunta no Google e ver o que ela oferece.

Geralmente vou a convenções não para ganhar experiência, mas para compartilhar a minha. Tenho alguma experiência em manter um grande projeto e isso interessa às pessoas. Existem muito, muito poucos projetos como o nosso na Rússia, então nossa experiência é bastante única. Perguntam-me como você dividiu o aplicativo em módulos, como é sua revisão de código, como funciona seu IC .

7. Dados recursos ilimitados (tempo, dinheiro, pessoas), em qual projeto você gostaria de trabalhar?


- Eu tenho uma lista bastante longa de "quero fazer, não tenho tempo" sobre o que pretendo fazer no Maps. Há coisas que precisam ser aprimoradas.

Mas, no geral, eu gostaria de entrar na indústria espacial. Fico fascinado com a idéia de um homem fora da Terra, explorando o universo. Toda vez que há notícias sobre avanços científicos nessa área, fico empolgado. Embora o desenvolvimento do iOS provavelmente não seja necessário lá, eu posso me encaixar em algum lugar com minhas habilidades de gerenciamento de equipe. Inferno, eu chegaria a tomar café para as pessoas se a idéia fosse certa.

8. Como você relaxa? O que você faz na vida, além do trabalho?


- Todo mundo precisa "reiniciar" às vezes. A programação 5 + 2 foi inventada por algumas pessoas muito inteligentes. Se você estiver realmente envolvido em um projeto, interessado tanto em seu sucesso que estiver disposto a trabalhar nos fins de semana, isso não terminará bem. Você perderá sua centelha, e ela deve ser mantida a todo custo, se você quiser trabalhar por meses ou anos.

Nos fins de semana, costumo fazer algo simples: caminhar, assistir TV, nada muito extremo. Embora eu provavelmente gostaria, apenas não tenho ninguém com quem fazer isso. Algumas vezes nossa equipe andava de caiaque no rio Vyazma, foi bem legal. Às vezes vamos jogar paintball. Mas não é algo que vamos regularmente, porque o drena rapidamente. Claro, você troca isso por emoções, mas ... Trabalha por cinco dias, depois passa dois dias fazendo algo fisicamente intensivo, depois trabalha por cinco dias novamente? Eu provavelmente não conseguiria.

Também gosto de gastar tempo restaurando minha casa. Alguns reparos são feitos rapidamente, outros continuam para sempre. É seu próprio mundinho, com suas próprias tecnologias e experiência.

9. Conte-me sobre seus três livros favoritos: educacional, ciência popular e ficção.


- Não tive experiências positivas com livros educacionais - provavelmente não li nenhuma sobre o meu trabalho. Talvez apenas no começo eu estudei C ++ em livros. Lembro-me de ir a um acampamento infantil ao ar livre, todos ao meu redor tinham livros normais e eu tinha C ++. Acabei não lendo muito porque não tinha um computador comigo. Eu li e entendo principalmente, mas agora para aplicar tudo às minhas necessidades? Como ganhar experiência? Sou mais uma pessoa prática do que uma pessoa teórica. Talvez eu não conheça alguns dos termos legais que meus colegas usam regularmente, mas pelo menos eu sei como fazer as coisas. Eu aprendi isso simplesmente resolvendo problemas complexos e procurando soluções na Internet.

Para as pessoas que se concentram em blogs e literatura inteligentes, só posso dizer que nada que você lê ou vê garante que você possa reproduzi-lo. Sempre mantenha seus objetivos em mente e complemente a leitura com a prática.

A Wikipedia substitui a ciência popular para mim. Eu li sobre tudo. Gosto muito de história e, de vez em quando, posso ler sobre toda a linhagem dominante russa: de Rjurjik a Ivan, o Terrível, do primeiro Romanov à Revolução de Outubro - e depois pular um link sobre Alexandre, o Grande. Eu posso passar 2-3 horas por lá e mal percebo. Existem alguns artigos interessantes sobre armas, ferraria e outras coisas. Infelizmente, não posso replicá-lo, mas é legal imaginar como as pessoas inicialmente tiveram essas idéias.

Atualmente, não leio muito livros de ficção. Eles foram quase totalmente substituídos por filmes. Eles servem quase ao mesmo objetivo, mas os filmes são muito mais compactos. Mas vou mencionar um livro que realmente me chamou a atenção - "Oblomov". Isso tocou meus nervos de um jeito que nenhum outro livro fez.

10. Se um sistema de IA de repente se tornasse consciente bem na sua frente, o que você diria?


- Primeiro eu perguntaria: o que significa "consciente"? Se isso significa simplesmente passar no teste de Turing, ainda não é consciência. Mas se não estivermos entrando em detalhes, provavelmente pediria que resolvesse algum problema específico. Eu sou uma pessoa prática, afinal. Então, "Como tornar o Xcode mais rápido?"

Mas você ainda precisa começar com "Oi, como vai?". Uma resposta para esse tipo de pergunta pode nos dizer muito sobre IA. Como uma máquina avalia seu próprio humor? O que isso faz?

Pergunta de um hóspede anterior: qual tecnologia foi a mais divertida de aprender?


- "Divertido" especificamente? Ainda não aprendi a me divertir aprendendo ou trabalhando. Eu aprendi a tomá-lo com calma e fazê-lo bem. Por exemplo, não me diverti muito aprendendo o SDK do iOS, porque é bastante simples se você conhece o básico.

Onde eu realmente me diverti foi na universidade, onde trabalhei em um projeto que implementava o aprendizado de máquina. Foi revigorante perceber que realmente não há nada tão difícil para ML. Se você conhece os parâmetros de entrada, é possível prever com precisão o resultado. Talvez, isso explique por que eu não sou tão apaixonado por IA como todo mundo parece estar - eu sei que são apenas algoritmos.

Também me diverti trabalhando com compiladores que tinham multithreading automático. É uma tecnologia bastante desenvolvida, tem muitas coisas para aprender. Eles são realmente inteligentes e fazem muito mais do que você pode imaginar. Por exemplo, transformações de árvore de sintaxe incrivelmente complexas. Ou otimizar a geração de código para uma configuração específica de hardware e CPU.

É legal termos uma estrutura de código aberto para isso, LLVM , para que você possa criar seu próprio compilador. Você pode até criar seu próprio idioma! Escreva um componente para ele que faça análise de lexis e sintaxe e utilize o poder de um compilador moderno para transformá-lo em código de máquina.

Bônus: pergunte a outro desenvolvedor o que quiser


- Você entraria no primeiro vôo tripulado para Marte, sabendo que não voltará?

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


All Articles