Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pensando grande em telas pequenas: como desenvolver, manter e evoluir aplicações mobile escaláveis como as gigantes do mercado!

Pensando grande em telas pequenas: como desenvolver, manter e evoluir aplicações mobile escaláveis como as gigantes do mercado!

This talk was held during two online events: the first one was during Capiconf Online - a online edition of one of the biggest technologies events in Brazil, that usually happens in the south, in Curitiba, Paraná, that happened on May 16th. The second one was during an online meetup of GDG Campinas, one of the biggest GDG chapters in Brazil, that happened on May 21th.

The talk was about techniques, tools and smart approaches on mobile development routine that I've compiled in a talk format, to help developers and professionals to evolve their practices and culture around mobile development and product release overall.

The content is in pt-BR.

CapiConf Online event info: https://www.meetup.com/pt-BR/GDG-Uberlandia/events/270222692/
Video: https://www.youtube.com/watch?v=dxmXWiV8CtA

GDG Campinas meetup info: https://www.meetup.com/pt-BR/gdgcampinas/events/270586511/
Video: https://www.youtube.com/watch?v=F48j_jq5wQA

B567f69eed037ed20536fc825305a38d?s=128

Walmyr Carvalho

May 21, 2020
Tweet

Transcript

  1. 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
  2. Olá, pessoal! Meu nome é Walmyr Carvalho, muito prazer! :)

  3. 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.
  4. 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
  5. 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.
  6. 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.
  7. Do commit até as lojas… Como costuma ser esse caminho?

  8. 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! ❤
  9. 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
  10. 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! ✨
  11. None
  12. Mas… como será que as grandes empresas fazem mobile hoje?

    Será que estamos seguindo uma tendência parecida nos nossos próprios projetos?
  13. Quais práticas interessantes podemos explorar para evoluir as nossas rotina

    de desenvolvimento, testes e releases em geral?
  14. 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:
  15. ✨ ✅ Desenvolvimento & Qualidade Integração & Deploy Contínuo Melhoria

    & Evolução Pós Produção
  16. 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! ❤
  17. ✨ 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)
  18. Mas já não tá ótimo, Walmyr? O que dá pra

    fazer de diferente?
  19. 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
  20. 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
  21. 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
  22. Créditos: Artem Zinnatullin (Twitter)

  23. 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
  24. Créditos: Nokee

  25. Legal! O que mais dá pra fazer de diferente nos

    meus projetos mobile?
  26. 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
  27. 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
  28. # 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.")
  29. 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
  30. Créditos: Joe Birch e Bitrise

  31. 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
  32. 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)
  33. Créditos: Konrad Gadzinowski (Toptal)

  34. Daora! O que mais dá para fazer?

  35. 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
  36. Créditos: John Sundell (Twitter)

  37. 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
  38. Créditos: Dynamic Delivery (Android Developers)

  39. Resumindo… O que aprendemos hoje?

  40. ✅ É 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!
  41. Importante lembrar: algumas dessas práticas não fazem sentido para o

    seu projeto e tá tudo bem! ❤
  42. 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!
  43. Perguntas? Ficou alguma dúvida?

  44. Muito obrigado! Se tiver qualquer dúvida ou sugestão, pode falar

    comigo. ❤ @walmyrcarvalho /walmyrcarvalho walmyr@kusudama.com.br