Do desenvolvedor Android ao DevOps

Continuamos uma série de artigos sobre aqueles que fazem projetos com as próprias mãos. Com Stepan Goncharov, conversamos sobre como mudar organicamente a direção da atividade profissional e, ao mesmo tempo, mudar nossas habilidades de desenvolvedor Android para DevOps. Eles perguntaram sobre o ciclo e os processos de lançamento da Grab , uma empresa na qual 40 pessoas estão desenvolvendo apenas para Android. Eles conversaram sobre onde obter idéias para jogos, perguntaram ao Stepan Archetype e ao kOptional sobre projetos OpenSource.



Sobre o hóspede : Stepan Goncharov ( stepango ) desenvolve aplicativos e jogos para Android desde 2008, desde tempos imemoriais, quando o Android SDK não foi lançado. Durante sua carreira, ele conseguiu desempenhar o papel de QA, gerente, comerciante, blogueiro, analista, consultor e muitos outros. Ele participou do desenvolvimento de aplicativos desconhecidos e aplicativos com milhões de usuários em todo o mundo. Atualmente, ele trabalha na Grab, usa Kotlin e Rx extensivamente e dedica mais tempo ao OSS.

Aqui está a decodificação de texto do podcast Run Loop . Apresentadores: Ilya Tsarev, Alexey Milyaev e Roman Busygin.

Ilya: Diga-me em que o Grab está diretamente envolvido e qual é o seu papel. Você está apenas escrevendo código ou algo mais?

Stepan: Inicialmente, o Grab é um serviço de carona. Você pode pedir um táxi, eles virão até você, te buscarão e te levarão. Mas, recentemente, a empresa está cada vez mais ganhando acesso a serviços adicionais, como entrega de alimentos e seu sistema de pagamento. Quando cheguei ao Grab, liderei a equipe de desenvolvimento de aplicativos de driver. Então ele mudou para o aplicativo de passageiros. Um dos meus projetos recentes foi uma reformulação completa do aplicativo de passageiros . Agora estou fazendo mais DevOps - configurando o IC, otimizando o tempo de criação e tudo mais.

Devops


Alexei: Stepan, e se não é um segredo, por que você decidiu mudar para DevOps e CI? Frequentemente ouço uma história quando desenvolvedores de dispositivos móveis chegam à plataforma, ficam entusiasmados, bombeados a alturas incríveis e decidem, de repente, executar algumas tarefas não produtivas.

Stepan: Na verdade, tudo acabou, eu diria, organicamente . Enquanto eu estava no processo de redesenhar o aplicativo, tivemos uma migração de emergência para o GitLab devido ao fato de que as instâncias do CircleCI não podiam mais criar nosso projeto. Acabou sendo muito grande e consumiu muita memória, mas não havia instâncias de IC adequadas. De alguma forma, fiquei preso por várias semanas tentando migrar nossos processos e, em geral, tudo relacionado ao CI para o GitLab. Depois que o projeto terminou, formamos uma nova equipe de plataforma. Enquanto eu passava três semanas em férias, todas as outras tarefas foram executadas. Quando voltei, elas me disseram: " É isso, você está otimizando a velocidade de construção e o IC".

Diferentes papéis e atividades


Ilya: Também temos pássaros - não aqueles que têm microfones em loop, mas ainda assim eles informaram que você visitou o controle de qualidade, como gerente, comerciante, blogueiro e analista - em geral, eu passei por muitas atividades diferentes . Por favor, conte-nos com mais detalhes como você o inseriu em todos esses papéis, há quanto tempo você está neles, o que você gosta em cada um, talvez, não gostou? Talvez você gostaria de voltar aos blogueiros agora?

Stepan: Em princípio, em cada um desses papéis, de alguma forma, de alguma forma orgânica, fluiu suavemente de um para outro. Tudo começou com o fato de eu me interessar pelo desenvolvimento do Android antes do lançamento do primeiro dispositivo no Android . Eu estava interessado na ideia em si - um sistema operacional em Java - de alguma forma incomum. Como resultado, enquanto estudava na universidade, em vez de trabalhar em laboratório em C ou outros problemas chatos da universidade, reduzi gradualmente tudo para o Android. O professor não se opôs, ele também estava interessado em aprender algo novo, e eu escrevi aplicativos para Android.

Quando me formei, já tinha alguma experiência. Eu escrevi meu primeiro aplicativo, o liberei para o Market e isso iniciou minha paixão por marketing . Eu tinha meu próprio aplicativo e precisava promovê-lo de alguma forma. Comecei a brincar um pouco e a escrever blogs.

Em 2010, encontrei o trabalho de um desenvolvedor Android, então era quase impossível - não havia mercado, ninguém sabia sobre o Android. Entrei em uma empresa de terceirização e tive que recrutar uma equipe com apenas seis meses de experiência e 2 aplicativos publicados.

Então, de marketing e blog, voltei ao desenvolvimento. Então ele se formou na magistratura, mudou-se para São Petersburgo - também para terceirizar. Lá, comecei a me envolver em testes automatizados, e descobri que desenvolvi a direção da Robotium na empresa e ensinei o QA a escrever testes automatizados, até que parti para Cingapura , onde recrutei novamente minha equipe para uma das startups de Cingapura. Depois disso, ele começou a se desenvolver ainda mais no desenvolvimento do Android. Agora entrei no Grab - primeiro para gerentes, depois para DevOps.

Roman: Stepan, por favor, diga-me, você sente falta dessa vez em que suas tarefas mudaram bastante? Agora, grosso modo, todo dia você bebe DevOps - e é isso?

Stepan: Na verdade, ainda não. Concluí recentemente um grande projeto e, em princípio, ainda há tarefas suficientes. Eles podem parecer, é claro, o mesmo - ou seja, o objetivo é um, mas o que eu faço é muitas, muitas coisas diferentes , incluindo, por exemplo, perfil de memória, trabalho com a CI. Agora eu olho para o Amazon analytics no S3. Isso é tudo novo para mim até agora . Não acho que participarei do IC e da otimização do tempo de montagem por um longo tempo. Muito provavelmente, por exemplo, no próximo trimestre, mudarei para outra coisa.

Romano: Por exemplo, eu tenho um ciclo de transição de uma direção para outra por cerca de 2-2,5 anos . Comecei com o teste, depois mudei para o teste de carga e me tornei um desenvolvedor. Com que frequência você muda interesses e áreas de trabalho?

Stepan: Em algum lugar na região de 1,5 a 2 anos. Mas, recentemente, saiu por seis meses.

Os jogos


Alexei: O que você mais gostaria de fazer? Idealmente, talvez você gostaria de deixar o desenvolvimento, não tocar em nada com as mãos? Ou talvez você, pelo contrário, gostaria de aprofundar algumas coisas nativas profundas? O que você mais deseja especificamente?

Stepan: Essa é uma boa pergunta! Na verdade, eu não decidi. Ainda estou interessado em algumas coisas . Um dos mais interessantes para mim, onde não consegui chegar, é o desenvolvimento de jogos. Enquanto estudava na universidade, gostava de escrever todos os tipos de jogos. Eu tinha projetos no Flash. Meu segundo aplicativo Android também foi um jogo. Até trabalhei por um mês em uma empresa de jogos, mas de alguma forma não funcionou para mim.

Em princípio, eu gostaria de experimentar o design do jogo , mas isso ainda é difícil. Quanto mais tempo passo e desenvolvo no Android, mais difícil será essa transição, se acontecer.

Ilya: Styopa, se tocamos no tópico dos jogos, a questão é: qual foi o seu primeiro jogo?

Stepan: Era 2010, então era bem simples. Era um quebra-cabeça lógico com lasers e espelhos que precisavam ser girados para que os lasers atingissem o alvo. Infelizmente, este jogo foi hospedado por conta do meu empregador na época. Esta conta foi excluída há muito tempo e o jogo não existe. Mas eu realmente gostei dela. Foi escrito inteiramente no Android View, o que, é claro, lamento, mas a experiência foi excelente.

Ilya: Agora você está tendo tempo para desenvolver jogos?

Stepan: Não. Não há absolutamente tempo para jogos agora. Além de trabalhar na empresa, também organizo reuniões de Kotlin em Cingapura e falo em conferências. Ou seja, o tempo livre está completamente cheio. Talvez um dia eu volte a isso. Recentemente, comprei o Google VR para experimentar o Unity quando houver tempo, mas até agora não foi possível.

Roman: E me diga, por favor, onde você conseguiu idéias para jogos? Como eles vieram à sua mente?

Stepan: As idéias para jogos geralmente vêm de inovações técnicas. Eu geralmente assistia a algumas demos tecnológicas ou, por exemplo, em 2008-2010, havia uma moda para os motores físicos. Você vê alguma tecnologia interessante ou um novo shader moderno, e as próprias idéias aparecem com base no que você vê.

Roman: O seu hobby de criar jogos relacionados ao fato de você ser jogador - você trabalha no PlayStation, no Switch, no PC - existe alguma correlação?

Stepan: Sim, acho que sim. Quando criança, eu tinha Sega, depois PC, passava muito tempo jogando. Agora eu tenho o PlayStation e o Switch, mas agora passo muito menos tempo nos jogos , nem preciso jogar.

Roman: E de quais jogos você mais se lembra? Ou qual gênero de jogos você mais gosta? Por exemplo, eu prefiro atiradores ou algum tipo de horror de sobrevivente.

Stepan: De alguma forma, não dei certo com atiradores. Joguei Counter-Strike quando criança, mas não foi. Um dos meus jogos favoritos é o Space Rangers-2 , e a primeira parte também é épica, é claro. Então, de memorável, foi Freelancer .

Alex: Freelancer é um jogo? Este é um estilo de vida!

Stepan: Na verdade, este é um simulador espacial, grosso modo, muito próximo ao Space Rangers, mas de uma perspectiva de terceiros. The Witcher, Arcano e Fallout são assim.

Ilya: Parece-me que o desenvolvimento de jogos é o sonho da maioria dos programadores . Como sempre me pareceu, as pessoas geralmente vão ao desenvolvimento apenas para fazer jogos. Isso é super legal! Meu primeiro projeto iOS - também era um jogo, a propósito. O que você acha disso?

Alexei: Ouvi dizer que, para muitas pessoas, o caminho para a programação realmente começa com o fato de que eles querem fazer algum tipo de jogo, gostam de jogar, querem entender como fazê-lo. Por alguma razão, eu não tinha isso. Eu estava mais interessado em saber como os programas funcionam - o que acontece quando você clica nas janelas do Windows. Mas em algum momento eu percebi que não tinha ideia de como fazer jogos. Entendo como é possível escrever este ou aquele aplicativo em um telefone celular, este ou aquele programa em um PC - eu não imaginava como fazer jogos. De alguma forma, eu fui colocado em um canal do YouTube. Lá, um cara em Java e Canvas escreveu seu brinquedo do zero - um clone de algum jogo de RPG com algo semelhante a uma mistura de Diablo e Final Fantasy. Isso é realmente muito interessante. Aconselho a todos que tentem brincar com ele em seu tempo livre , para entender como geralmente é escrito, como funciona. Foi uma experiência muito legal. Então, de alguma forma, entrei nas mesmas lições, onde o cara viu algum jogo simples no Unity. É muito interessante comparar abordagens quando você começa a escrever seu mecanismo, e quando você já tem algo pronto como o Unity, e de alguma forma o ajusta para criar o seu. Eu recomendo tentar algo assim, porque é, no entanto, muito interessante.

Romano: Eu tenho uma experiência semelhante. Adoro jogar, mas não sou um jogador ávido, mas ao mesmo tempo estava interessado principalmente em entender como os programas são feitos. Então chego à conclusão de que o que eu gosto, o que eu gosto, quero tentar fazê-lo com minhas próprias mãos. Mas em termos de jogos , tudo começa com uma ideia . Estou esperando por uma idéia que possa ser implementada em qualquer tempo livre, ou para limpar meu tempo e fazer este jogo.

Stepan: Em relação às idéias, uma das últimas que me ocorreu foi relacionada à geração automática de mapas . Agora, isso pode ser considerado uma tendência, e alguns jogos usam a geração de mundos enormes para torná-los muito semelhantes aos reais.

Existe toda uma classe de algoritmos que permitem gerar terreno. A paisagem pode ser construída para que haja montanhas e mares. Em princípio, se uma pessoa exibir a vista superior dos mapas do Google e a paisagem gerada, poucas serão capazes de diferenciá-las. Isso é muito interessante, porque você pode criar conteúdo para o jogo por conta própria, sem ter grandes recursos, porque é uma das partes mais difíceis. Pelo menos acho que sim.

Dia de trabalho


Alexei: Stepan, como é seu dia de trabalho normalmente? Você acordou, chegou ao escritório ou não conseguiu - o que está fazendo, como está?

Roman: Ainda estou interessado no que acontece antes de você chegar ao escritório. Talvez você tenha alguns cafés favoritos ou suas tradições favoritas: por exemplo, você gosta de passear pelo jardim público em frente ao escritório? O que realmente começa o seu dia?

Stepan: Recentemente, meu dia começa com 50 flexões.

Alexey: Respeito!

Stepan: Em algum momento, percebi que precisava dedicar mais tempo à atividade física e agora tento me forçar a fazê-lo no meu tempo livre. Em princípio, nada de especial.

Como o principal negócio da empresa é esconderijo, ou seja, pedir um táxi, a empresa paga um táxi para mim. Portanto, a primeira coisa que faço de manhã após o café da manhã é pedir um táxi e ir trabalhar.

Eu trabalho em um escritório bastante decente com excelentes vistas da baía. Como provavelmente a maioria de nós, a primeira coisa é, é claro, uma xícara de café . Frequentemente, simplesmente descemos com os colegas para o porão do mesmo prédio, entramos em uma das cafeterias, tomamos café e discutimos algumas novidades, planos . É especialmente interessante se algo acontecer durante esta noite, que é o dia nos EUA: algo novo foi lançado, algumas notícias interessantes, uma nova estrutura. Discutimos tudo isso e, depois disso, podemos começar a trabalhar.

Então, tudo fica igual a todos os outros: você vai a Jira , assiste a ingressos. Nas últimas duas semanas, estive de plantão. Este é um desenvolvedor, no qual todos os problemas de produção se enquadram, e você precisa resolver, delegar ou dizer de alguma forma - isso não é um problema e esqueça-o.

Como a equipe é muito grande ( mais de 40 pessoas já estão trabalhando no aplicativo de passageiros - são equipes diferentes responsáveis ​​por áreas diferentes), às vezes é muito difícil encontrar a pessoa certa que precisa resolver esse problema. Temos essa rotação - toda semana um dos desenvolvedores está envolvido em resolver problemas de produção . Especificamente, nesta semana eu estou preparando uma versão, esta é uma correção de problema dos testes e, novamente, encontrando as pessoas certas para resolver isso da maneira mais rápida.

Roman: 40 pessoas são apenas Android, ou é toda a equipe que cria o aplicativo móvel?

Stepan: Este é apenas o Android.

Romano: Uau! Quando ouvi quantos desenvolvedores de dispositivos móveis existem no Uber, me senti desconfortável. Mas sua equipe confirma essa tendência. Você mencionou que estava, grosso modo, de plantão nos relatórios de erros. Diga-me, como está indo o seu ciclo de lançamento?

Ciclo de liberação do aplicativo


Stepan: Em princípio, acho que esse é um processo mais ou menos comum que os grandes aplicativos tentam aderir. Temos um trem de liberação fixa . Esta é a semana no momento. Ou seja, toda semana na terça-feira temos um lançamento. Um engenheiro de lançamento é selecionado para esta semana e, no início da semana, todos os recursos incluídos no lançamento devem estar prontos.

Se algum recurso não estiver pronto, eles o jogam fora, fecham-no com uma bandeira - faça o que for necessário para impedir que ele volte. Assim que essa construção, onde todos os recursos estão prontos, é fornecida ao controle de qualidade, o processo de engenharia de liberação é iniciado. Ou seja, todos os bugs abertos devem ser corrigidos o mais rápido possível , eles recebem a maior prioridade. Mesmo que o desenvolvedor esteja trabalhando no próximo recurso, que será lançado no próximo lançamento, mas há um bug ou algum problema que ele conhece melhor e tem menos tempo para resolvê-lo, isso é dado a ele.

Isso acontece conosco até sexta-feira. Na sexta-feira, tentamos terminar a regressão , fechar todos os erros de regressão e sair com uma alma calma durante o fim de semana. Se algo aconteceu repentinamente, na segunda-feira você pode corrigi-lo rapidamente e já na segunda-feira à noite ou terça-feira de manhã publicar e distribuir silenciosamente - primeiro 10%, depois mais, mais, mais. Por uma semana, estamos tentando chegar perto de cem e lançar o próximo lançamento.

Testes e atualizações


Romano: componha e faça layouts rapidamente - mas e o processo de teste? Testadores de pessoas especiais que verificam em que ponto eles fazem isso?

Stepan: Existem muitos testadores, eles estão no tempo. Não sei quantos deles têm certeza. O motivo é que a maioria das equipes não está em Cingapura. Não lembro quantos escritórios temos, mas há pelo menos mais 5 escritórios onde há equipes de desenvolvimento junto com o controle de qualidade. Durante o desenvolvimento dos recursos, essas equipes, juntamente com o controle de qualidade, depuram esses recursos e os testam. Quando o ciclo de lançamento começa, os recursos não devem ter bugs abertos . A regressão ocorre da seguinte maneira: um, talvez dois QA de todas as equipes se destacam, e eles executam a regressão de acordo com seus recursos. Apenas nesta semana, enquanto procuramos por erros, as regressões são corrigidas.

Ilya: Acontece que você tem um ciclo de atualização semanal e os usuários têm tempo para atualizar nesse período? Por exemplo, nos deparamos com uma situação em que os usuários do iOS têm tempo para atualizar e o Android - na verdade não. Nossas versões diferiram diretamente por várias semanas.

Alexei: Sim, também me parece que a semana é sentida rapidamente.

Stepan: Sim, é. Uma semana é bem rápida, mas não temos uma meta para todos os usuários atualizarem . Mudamos de um ciclo de liberação de duas semanas para um ciclo semanal, a fim de reduzir a carga no controle de qualidade durante a regressão, porque um grande número de recursos se acumulou ao longo de duas semanas. 40 ! , , , , - , . , .

: ?

: .

: .

: , reload- . 100% reload , , . . , . , — . , , , 90% , 3-4 .



: , . , 40 Android — ? 40 - ?

: .

: , , , Android-, . - , . ? 40 ?

: . 40 , . , . , . . , — 5-6 . 1-2: , - - , , engineering head, , , iOS .

, , , .

OpenSource- Archetype kOptional


: . , OpenSource -. , OpenSource, .. , , — Archetype kOptional . O que é isso

: kOptional . , Optional . - Null, . . , Java8 .

, . , , — , , . , -.

Archetype — . - , 90 Seconds . - : , , , . , : , — .

, - . . . , , : " ". Porque não

— , - , . , 90 Seconds , NDA . , , 90 Seconds: , - , - .

, - , 90 Seconds. , , , , . , , , Rx. , , Kotlin, legacy.

, , , … .

: , OpenSource- . , , , , , . , !

. AppsConf . , , ?

AppsConf


: , AppsConf. , , : « ». , , , .

, , . , , . , , , , .

. , , . , . — , .

, . , , -, , -, , .

, . , , , . Mobius, . .

-, , , - , , - WorkManager, .

, Kotlin , , , - .

: , ?

: , . -, , , , . , , , .

, , — , , , subscribe. - , , . .

: , - OpenSource , ?

: . production-ready, , , GitHub.

:
, ! , , , AppsConf 8–9 .

AppsConf , , , .

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


All Articles