Slide 1

Slide 1 text

Pensando grande em telas pequenas: Como desenvolver, manter e evoluir aplicações mobile escaláveis! ✨ Walmyr Carvalho Mobile Technical Leader @ idwall, Founder @ Kusudama Google Developer Expert, Android @walmyrcarvalho

Slide 2

Slide 2 text

Olá, pessoal! Meu nome é Walmyr Carvalho, muito prazer! :)

Slide 3

Slide 3 text

Trabalho com desenvolvimento Android há 10 anos e sou um Google Developer Experts de Android no Brasil há 4 anos. Além disso, estou muito próximo da comunidade nacional de Android, sendo organizador do Kotlin Meetup São Paulo e do Android Dev BR, a maior comunidade lusófona de Android do mundo, com mais de 6.800 pessoas! Também apoio o empreendedorismo nacional, sendo mentor de Android e mobile no Google for Startups Accelerator e na ACE Startups.

Slide 4

Slide 4 text

Já ajudei a evoluir produtos mobile para empresas como Loggi, 99, Cielo, CI&T, Hotel Urbano e Globo Esporte, durante mais de 9 anos de carreira como especialista em Android. Créditos: Google Play

Slide 5

Slide 5 text

Nesse ano fundei a Kusudama, um estúdio de desenvolvimento e design de produtos digitais para Android e iOS, que tem como seu objetivo criar experiências que tratem seus usuários com respeito dentro do universo mobile.

Slide 6

Slide 6 text

Recentemente me juntei ao grande time da idwall como Mobile Technical Leader, com o objetivo de criar a próxima plataforma de identidade digital brasileira no mobile, além de soluções para empresas que buscam aumentar a confiança na identificação dos seus usuários.

Slide 7

Slide 7 text

Do commit até as lojas… Como costuma ser esse caminho?

Slide 8

Slide 8 text

O desenvolvimento mobile vem crescendo e amadurecendo cada vez mais a cada ano que passa, o que é ótimo para a área, para os profissionais e para o mercado em geral! ❤

Slide 9

Slide 9 text

Stack Overflow Survey 2019 De acordo com a pesquisa, 18% das pessoas vem trabalhando com desenvolvimento para mobile, o que é um número bem expressivo! ❤ insights.stackoverflow.com/survey/2019 Créditos: Stack Overflow

Slide 10

Slide 10 text

E, naturalmente, com o passar do tempo e o aumento do engajamento na área, o mobile vem crescendo bastante e adotando novas técnicas, ferramentas, frameworks e boas práticas, numa velocidade que acompanha a evolução dos desafios que estamos encontrando! ✨

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Mas… como será que as grandes empresas fazem mobile hoje? Será que estamos seguindo uma tendência parecida nos nossos próprios projetos?

Slide 13

Slide 13 text

Quais práticas interessantes podemos explorar para evoluir as nossas rotina de desenvolvimento, testes e releases em geral?

Slide 14

Slide 14 text

Em geral, gosto de dividir a rotina de uma pessoa profissional mobile dentro de um projeto de aplicação em três etapas mais macro:

Slide 15

Slide 15 text

✨ ✅ Desenvolvimento & Qualidade Integração & Deploy Contínuo Melhoria & Evolução Pós Produção

Slide 16

Slide 16 text

Em linhas gerais, penso que o mercado já faz uso de ótimas técnicas, frameworks e boas práticas de desenvolvimento e deploy em geral, o que é ótimo! ❤

Slide 17

Slide 17 text

✨ Algumas boas práticas que vejo com mais frequência atualmente: - gitflow e githooks - Code Reviews - Pair Programming - CI / CD as a service (Bitrise, Circle CI, etc) - Análises estáticas de código - Linters (ktlint, SwiftLint, etc) - Feature flags (Firebase Remote Config, etc)

Slide 18

Slide 18 text

Mas já não tá ótimo, Walmyr? O que dá pra fazer de diferente?

Slide 19

Slide 19 text

Novos build systems Hoje é possível fazer uso de build systems diferentes para Android e iOS, com o objetivo de aumentar a praticidade, caching e performance das suas builds em geral! ✅ Créditos: xkcd.com/303

Slide 20

Slide 20 text

Buck (Facebook) Sistema de builds agnóstico de plataforma e linguagens, criado e utilizado pelo Facebook nas suas aplicações, especialmente no mobile. Recomendada para projetos com um crescimento rápido e alto! buck.build Créditos: Facebook

Slide 21

Slide 21 text

Bazel Outra opção de ferramenta de builds agnóstica de plataforma e linguagens, utilizada em produção por grandes empresas como Google, PayPal e Dropbox! bazel.build Créditos: Bazel

Slide 22

Slide 22 text

Créditos: Artem Zinnatullin (Twitter)

Slide 23

Slide 23 text

Nokee Uma opção mais nova que faz uma ponte do Gradle para uma variedade maior de plataformas! Hoje já é possível utilizar Gradle para fazer builds de projetos iOS! nokee.dev Créditos: Nokee

Slide 24

Slide 24 text

Créditos: Nokee

Slide 25

Slide 25 text

Legal! O que mais dá pra fazer de diferente nos meus projetos mobile?

Slide 26

Slide 26 text

Automação de code reviews Hoje é possível fazer uso de ferramentas para automatizar code reviews, através de integrações de mecanismos de mensageria com linters! ✅ Créditos: Focus Shift

Slide 27

Slide 27 text

Danger ⚠ O Danger é um mecanismo de mensageria que tem como objetivo automatizar checagens comuns dentro de um code review, otimizando o tempo gasto com reviews mais rasos de código! O Danger suporta a maioria dos VCSs e linters comuns no mercado, além de ter versões em Kotlin, Javascript, Python e Swift! ✅ danger.systems Créditos: Danger

Slide 28

Slide 28 text

# Messages message("You have added 3 more gems to the app.") # Warnings warn("You have not included a CHANGELOG entry.") # Errors fail("Please add tests to your PR.")

Slide 29

Slide 29 text

Code reviews automatizados no Android utilizando Danger e ktlint ✅ O Joe Birch, GDE de Android e Kotlin e Tech Lead de Android no Buffer, postou um artigo bem explicativo no blog do Bitrise explicando como integrar o Danger com o ktlint para code reviews automatizados para checagens de sintaxe e regras de Android em geral! tiny.cc/bitrise-post-joe-birch Créditos: Joe Birch e Bitrise

Slide 30

Slide 30 text

Créditos: Joe Birch e Bitrise

Slide 31

Slide 31 text

Trunk based Alguns times e empresas vem experimentado o desenvolvimento trunk based ao invés do gitflow como rotina de trabalho com git dentro dos projetos. A ideia geral do trunk based é fazer merges direto em master, sempre que possível. O padrão trunk based não é novo e trás uma série de benefícios, como a redução de conflitos de merge/rebase e melhorias nas rotinas de CI/CD! Créditos: Giphy

Slide 32

Slide 32 text

Trunk-based development vs Git Flow Esse artigo do Konrad Gadzinowski no blog da Toptal fala um pouco sobre as vantagens e desvantagens do trunk based em comparação com o gitflow! tiny.cc/toptal-gitflow-vs-trunk Créditos: Konrad Gadzinowski (Toptal)

Slide 33

Slide 33 text

Créditos: Konrad Gadzinowski (Toptal)

Slide 34

Slide 34 text

Daora! O que mais dá para fazer?

Slide 35

Slide 35 text

Server side rendered UI Muitas empresas já exploram mecanismos de loading dinâmico de UIs no mobile (tipo internet)! Parece bobagem, mas é um desafio levemente complicado no mobile nativo, mas que hoje já uma realidade! Créditos: Giphy

Slide 36

Slide 36 text

Créditos: John Sundell (Twitter)

Slide 37

Slide 37 text

Features dinâmicas Além das feature flags para habilitar e desabilitar features em produção sem a necessidade de um novo release, já é possível fazer o uso de recursos que habilitam features dinamicamente em um projeto mobile! ⚡ Créditos: Giphy

Slide 38

Slide 38 text

Créditos: Dynamic Delivery (Android Developers)

Slide 39

Slide 39 text

Resumindo… O que aprendemos hoje?

Slide 40

Slide 40 text

✅ É possível fazer integrações rápidas de código sem muito risco! ✅ Já é possível desacoplar totalmente release de features do release do app! ✅ Já é possível fazer mudanças de UI remotamente de maneira mais simples ✅ Sempre meça tudo que puder para você ter argumentos para evoluir!

Slide 41

Slide 41 text

Importante lembrar: algumas dessas práticas não fazem sentido para o seu projeto e tá tudo bem! ❤

Slide 42

Slide 42 text

Mais importante do que aplicá-las sempre é saber que existem essas possibilidades, o que ajuda num planejamento mais interessante para um futuro mais escalável, dinâmico e de qualidade para o seu projeto!

Slide 43

Slide 43 text

Perguntas? Ficou alguma dúvida?

Slide 44

Slide 44 text

Muito obrigado! Se tiver qualquer dúvida ou sugestão, pode falar comigo. ❤ @walmyrcarvalho /walmyrcarvalho walmyr@kusudama.com.br