Concrete Logo
Hamburger button

Droidcon NY 2016

  • Blog
  • 8 de Outubro de 2016

*Veja o post original (em inglês) no Medium pessoal do autor.

Eu já participei de algumas conferências no Brasil e até palestrei algumas vezes. Este ano, no entanto, a Concrete Solutions me deu de presente uma viagem para Nova Iorque para assistir o Droidcon NY 2016. Aqui vai um relato após a conferência.

Organização

O lugar estava muito bem organizado. Estava tudo muito fácil: o registro no evento, pegar seu crachá da conferência, filar um café e um almoço, achar as salas de cada apresentação e etc. Vale ressaltar aqui que o café da manhã e o ALMOÇO estavam inclusos. Isso infelizmente não é comum por aqui…

Outra coisa bem bacana é o aplicativo Android (e iOS) que eles criaram para você gerenciar seus horários de palestras e etc. Funcionou lindamente.

Vale mencionar, mesmo sendo óbvio, que o WiFi funcionou como esperado. Todas as salas de apresentação tinham conexão sem problema. Digo isso aqui porque em conferências brasileiras isso tende a ser maaaaais ou menos. Melhorou muito, mas ainda tem alguns probleminhas para ficar perfeito.

O número de pessoas na conferência foi abaixo do que eu esperava. Por aqui não é incomum termos 500 ou mais participantes em um evento. Lá o público foi por volta de 200 pessoas.

Nível das palestras

A maioria do pessoal deve se perguntar: então, os palestrantes são os melhores do mundo Android? A resposta é sim. Mas isso era esperado, certo? Só tinha gente muito fera lá: Jake Wharton, Dan Lew, Nick Butcher, Mark Murphy, Chris Banes e muitos outros.

No entanto, eu posso ter passado a impressão errada: não é como se eles tivessem segredos que nós não temos. Todas as apresentações foram bastante educativas e não mágicas. Ok, com algumas exceções: Chris Banes e Nick Butcher foram beeeeeeem a fundo no framework do Android com coisas como animar partes de um texto por caminhos que não se cruzam (transições de texto) e como o scroll aninhado (nested) tem seus problemas e o que o time da support library está fazendo para resolver os mesmos. Mas isso é o dia-a-dia desses caras.

Principais temas

Para mim ficou bem óbvio como medir a execução do código está se tornando mais natural para o desenvolvimento Android. Muitas palestras focaram em quão importante é medir as coisas em vez de tentar “adivinhar” porque o app não está performando do jeito que queremos. Uma palestra muito boa pelo Vikram Bodicherla do Yahoo tratou do “cold start” (quanto tempo leva entre clicar no app e o mesmo estar pronto na tela) e como ele é importante para manter seus usuários. Pense nisso: quanto tempo você espera uma aplicação se iniciar? Quanto é aceitável?

Claro que existem diversas técnicas para fazer a aplicação iniciar mais rápido, mas ele aconselhou fortemente medir e criar um sistema de alarmes para degradação de performance.

Automatizar isso tudo em um sistema completo é chave aqui. No caso do Vikram ele se focou mais no ambiente de desenvolvimento e CI. O engenheiro do Facebook Delyan Kratunov seguiu no tópico e ressaltou como é importante um sistema de telemetria de produção. Ele nos contou sobre diversas métricas de performance que você consegue extrair do Android que podem te ajudar a encontrar um bug de degradação de performance.

Isso colocou a famosa métrica “device year class” em contexto. Essa métrica é importantíssima para categorizar a expectativa de performance de um device. Ele continuou mostrando que todos os dados precisam ser agregados e como fazemos essas agregações. Só assim conseguimos tomar alguma decisão baseada em dados.

Outra palestra que mostrou muitos números foi a de “Jack and Jill build system” pelo Eric Lafortune. A má notícia é que em termos de performance o JACK ainda é mais lento que o ferramental tradicional, mesmo que ele consiga pular algumas fases do ciclo atual (não precisa gerar o .class, ele vai direto para o classes.dex). A boa notícia é que o Google ainda tem bastante espaço para melhorar. O Jack é um bebê, mas é bem promissor no que pode entregar.

O Eric é famoso pelo ProGuard e o DexGuard, que são softwares sensacionais. Ele mediu vários fluxos de compilação com e sem o ProGuard e o DexGuard, com o Jack, com o Redex e também nos propiciou uma comparação de features entre estas ferramentas. É claro que o DexGuard é o mais avançado, mas ele nos avisou que faria propaganda no começo da palestra. Outro bônus da sua apresentação foi uma visão a fundo sobre o que mudou no Nougat, como a migração da base do Android para o OpenJDK.

Outra área de interesse comum entre os palestrantes foi autenticação. Teve uma palestra excelente sobre Ben Oberkfell da American Express sobre sistemas de autenticação usando digitais. Foi sensacional! Ele mostrou coisas que venho dizendo para muita gente: reconhecimento de digital não é para criar apenas um sistema de true|false. O Ben mostrou como devemos pensar sobre o assunto no back-end e no front-end. Se você pensa em fazer autenticação usando fingerprint, então faça direito 🙂

Um googler também fez uma boa apresentação sobre fluxos de autenticação. Steven Soneff falou sobre como o usuário sofre na hora de se autenticar: várias opções de login social, mais um campo para username e password, mais um link para se cadastrar. Segundo ele, um fluxo ruim de autenticação pode fazer sua conversão de usuários cair mais do que 50%. Ninguém quer digitar formulários grandes ou lembrar se logou com Facebook ou email/senha apenas para acessar seu conteúdo.

Ainda falando de autenticação, teve uma palestra do Twilio sobre autenticação em dois passos com SMS e como ela é ruim. Não pouco ruim, extremamente ruim. Muitas coisas podem dar errado: o acesso à rede celular não é tão predominante como o acesso à internet, SMS é um protocolo puramente baseado em texto (sem criptografia) pronto para ser sniffado, muitas operadoras acabam oferecendo interfaces WEB para que você acesse suas mensagens e muitas outras coisas que podem simplesmente darem errado. Depois ele nos mostrou como a SDK deles traz uma solução boa para esse problema.

Uma terceira área que diversas palestras focaram foi em alcançar um público maior. Bom, quão importante é isso para o desenvolvimento Android? Vamos apenas dizer que a keynote do evento foi exatamente sobre este tópico. Kelly Shuster nos apresentou o tema de forma excelente. Além de convencer o público sobre a necessidade de adicionar acessibilidade nas nossas aplicações, ela mostrou que temos que mudar a forma como abordamos o problema: pensemos nos nossos usuários. Muitas pessoas já passaram por momentos de necessidade. Quando ela foi ao oculista e teve que dilatar as pupilas ela pensou que poderia simplesmente mandar uma mensagem para o marido dela ir buscá-la. Mas como você digita se não enxerga? Este pequeno exemplo foi sendo expandido para mostrar quanto um aplicativo acessível é importante para todo mundo. Os números são gigantescos… em um slide ela diz que 20% da população americana tem algum tipo de deficiência.

Ela também exemplificou como a acessibilidade pode ter outras consequências. Facebook implementou uma feature de playback automático na timeline. Inicialmente o vídeo está mudo, mas ao clicar para ver os detalhes do vídeo ele começa a tocar com som. Bom, com isso a porcentagem de vídeos assistidos inteiramente mudos no Facebook é de 85%. A mídia especializada está se adaptando e criando a maioria dos vídeos com legenda por causa disso…

Na mesma linha, Corey Latislaw nos contou sobre sua história de viajar até a Tanzania na África para testar a aplicação que sua empresa está desenvolvendo. Aliás, trata-se da Green Life Software Development e o app era para ajudar na instalação de sistemas solares no interior da Tanzania. Este é um lugar onde conseguir eletricidade para carregar o celular é serviço pago. Eu quero dizer: tem pessoas que pegam seu celular, viajam com todas as dificuldades do local (falta de sinalização, vias esburacadas e etc) para chegar em uma cidade que tenha energia, daí carregam o celular e fazem a viagem de volta para lhe devolver o device. Nesses casos, pensar sobre o uso da bateria, da rede de dados e todo o tipo de consumo de recursos é crucial.

As outras palestras que assisti foram todas específicas em um tema não compartilhado. Uma que realmente me esclareceu diversas coisas foi a ADB, Break On Through to the Other Side. Eyal Lezmy, da Genymobile (isso mesmo… aqueles que fazem o Genymotion), foi realmente a fundo em como o ADB funciona por dentro. E quando eu digo a fundo quero dizer o cara foi até o nível do protocolo de mensagens. Foi muito legal ver como todas as partes do ADB se conectam. No meio das mensagens ficou fácil de entender qual a alteração que o Google fez recentemente para deixar tudo mais rápido. Também teve dicas de como fazer algumas propriedades do ADB serem persistentes entre reboots (basta usar persist. em vez de service. no nome da propriedade).

Outra palestra realmente fantástica foi sobre JobScheduler. Eric Cochran, da empresa IFTTT (“if this than that”), deu uma explicação bem detalhada sobre os perigos de usar AlarmManager ou GcmNetworkManager ou JobScheduler. Não vou entrar nos detalhes, mas tenha em mente que se você precisa sincronizar dados que salvou offline, então você precisa ver esta palestra.

Resumo

A conferência foi incrível! A experiência realmente me deu muita coisa para pensar e discutir dentro da empresa. Uma coisa bacana é que uma parte disso tudo já estamos discutindo diariamente. Uma semana antes da conferência estava falando com o Toledo sobre profiling no Android. Muitas das coisas sobre autenticação já são praticadas internamente. Acessibilidade já faz parte das nossas definições de pronto. Claro que temos muito o que evoluir e conhecer, mas pelo menos parece que aqui estamos no caminho certo.

É desenvolvedor Android e tem interesse em fazer parte do nosso time? Clique aqui.