Um dia na pele de
O app da rede de farmácias
Você desenvolve o app de uma rede de farmácias com 600 lojas e dois milhões de clientes que compram remédio pelo celular. Amanhã às 8h começa a semana do desconto, com aviso no celular de todo mundo, e a versão nova do app tem que estar lá. Nesta terça-feira, quatro coisas pedem você ao mesmo tempo, e você decide a ordem.
O código está na sua tela, mas os problemas estão na sala de reunião, na ilha do produto, na central de atendimento. Andar até lá leva tempo, e esse tempo entra no relógio do seu dia.
Lançar a versão nova sem deixar ninguém do lado de fora do app.
Profissões com um dia assim: Android Developer Sênior · Desenvolvedor Flutter · Desenvolvedor Kotlin · Desenvolvedor React Native · +6
Ler o dia inteiro (contém os desfechos)
O app da rede de farmácias: o dia por escrito
Você desenvolve o app de uma rede de farmácias com 600 lojas e dois milhões de clientes que compram remédio pelo celular. Amanhã às 8h começa a semana do desconto, com aviso no celular de todo mundo, e a versão nova do app tem que estar lá. Nesta terça-feira, quatro coisas pedem você ao mesmo tempo, e você decide a ordem.
O código está na sua tela, mas os problemas estão na sala de reunião, na ilha do produto, na central de atendimento. Andar até lá leva tempo, e esse tempo entra no relógio do seu dia.
Sua mesa: A média que esconde um celular
A versão 6.4 saiu ontem para 20% dos celulares Android, aos poucos, como sempre. O painel diz 99,6% das sessões sem o app fechar sozinho, acima da meta. Amanhã às 8h ela vai para todo mundo, junto com o aviso da semana do desconto. A revisão do lançamento fecha hoje às 15h.
A média está boa. Antes de assinar, você abre o painel aparelho por aparelho.
Ache o aparelho em que a versão nova fecha sozinha em mais de 1 a cada 100 sessões. É esse. Galaxy A03 Core: 528 falhas em 24 mil sessões, mais de 2 a cada 100. É um celular de entrada, com 2 GB de memória. A tela nova da receita abre a foto em alta resolução, e o sistema fecha o app para liberar memória. O Galaxy A14 tem mais falhas no total, mas em muito mais sessões. Na média do painel, o A03 Core some. Cada tentativa errada custa 5 minutos.
O que acontece conforme a hora em que você chega
- Antes das 11h: Você achou antes das 11h. Deu tempo de reduzir a foto da receita, testar num A03 Core emprestado do suporte e colocar a correção no lançamento de amanhã. Quem tem celular de entrada recebeu a versão nova junto com todo mundo.
- Entre 11h e 15h: Você achou depois das 11h. A correção da foto não ficou pronta a tempo da revisão. O lançamento de amanhã saiu para todos os aparelhos, menos o A03 Core, que ficou na versão antiga durante a semana do desconto.
- Depois das 15h: O painel ficou para depois das 15h. A revisão do lançamento fechou às 15h com a média de 99,6%. O que quer que tenha sido visto depois, a versão saiu às 8h para todos, e as primeiras avaliações de uma estrela na loja vieram de quem tem celular de entrada.
Sala de reunião: A Apple disse não
Às 7h chegou o e-mail: a Apple recusou a versão do iPhone. O motivo é uma linha só: o app pede a localização assim que abre, sem dizer para quê. A semana do desconto depende dessa versão, porque o cupom muda conforme a farmácia mais perto de quem está usando.
O Rodrigo, que lidera o time, está na sala de reunião com o e-mail aberto no telão.
- Trocar a localização por CEP e reenviar. Você tira o pedido de localização e põe um campo de CEP no lugar. A Apple aprova de madrugada. No iPhone, o cliente digita o CEP para ver o cupom; no Android, o app acha a farmácia sozinho. A mesma campanha funciona de dois jeitos.
- Explicar o uso e pedir nova análise. Você acrescenta uma tela que explica por que o app quer a localização e responde à Apple com a justificativa. A aprovação chega dois dias depois. Até lá, a semana do desconto roda no iPhone com a versão antiga, sem o cupom por farmácia.
O que acontece conforme a hora em que você chega
- Antes das 11h: Você entrou antes das 11h. Deu tempo de reenviar a versão de manhã e de avisar o marketing do que mudava no iPhone antes de qualquer peça da campanha sair.
- Entre 11h e 14h: Você entrou depois das 11h. O marketing já tinha mandado para as 600 lojas o cartaz com "cupom da farmácia mais perto de você". Você decidiu com o cartaz impresso.
- Depois das 14h: A recusa ficou para depois das 14h. A versão recusada ficou parada a manhã inteira. O que quer que tenha sido enviado depois, entrou na fila de revisão da Apple atrás de todo mundo que reenviou cedo.
Ilha do produto: Uma tela, dois sistemas, um dia
A Juliana, gerente de produto, precisa da vitrine da semana do desconto no app amanhã cedo, no Android e no iPhone. O time de Android tem duas pessoas. O de iPhone tem uma, de férias até quinta.
O app do entregador da rede já é feito em Flutter, um código só para os dois sistemas. O app principal, não: é nativo, um código para cada.
- Fazer a tela em Flutter, para os dois. A vitrine fica pronta em um dia, igual no Android e no iPhone. O app fica 9 MB maior, e a tela abre meio segundo depois das outras. A partir de hoje, o app principal tem duas tecnologias, e alguém vai cuidar das duas.
- Fazer nativa, só no Android primeiro. A vitrine sai nativa no Android amanhã, com a cara do resto do app. No iPhone, só na semana que vem, quando o colega voltar. A Juliana avisa o marketing que a campanha começa "primeiro no Android".
O que acontece conforme a hora em que você chega
- Antes das 10h30: Você foi à ilha do produto antes das 10h30. A Juliana ainda não tinha prometido nada ao marketing. A decisão saiu antes de existir uma data no e-mail de alguém.
- Entre 10h30 e 13h: Você foi à ilha do produto depois das 10h30. A Juliana já tinha escrito ao marketing "vitrine pronta amanhã nos dois". Você decidiu com essa frase já dita.
- Depois das 13h: A ilha do produto ficou para depois das 13h. Sem resposta do mobile, a Juliana pediu ao time do site uma página provisória para abrir dentro do app. O que quer que tenha sido decidido depois, já havia uma terceira versão da vitrine sendo feita.
Central de atendimento: Quem ficou do lado de fora
Desde a versão de ontem, a central tem 300 chamados de gente que não consegue entrar no app. Todos têm celular com Android 7. O login novo usa uma biblioteca que só funciona do Android 8 para cima.
São 6% dos clientes. A maioria tem mais de 60 anos e compra remédio de uso contínuo pelo app, todo mês.
- Manter o login antigo para o Android 7. Você devolve o login antigo só para quem tem Android 7. À noite, todos entram de novo. O app agora tem dois jeitos de entrar, e o próximo ajuste de segurança vai ser feito duas vezes.
- Deixar o Android 7 e avisar quem usa. No Android 7, o app passa a dizer que não é mais compatível e abre o site da rede. A central recebe respostas prontas. Parte dessas pessoas passa a comprar pelo site; outra parte liga para a farmácia do bairro, que anota o pedido no papel.
O que acontece conforme a hora em que você chega
- Antes das 10h: Você foi à central antes das 10h. A fila ainda tinha 300 chamados. A central conseguiu ligar de volta para cada pessoa e explicar o que ia acontecer.
- Entre 10h e 12h: Você foi à central depois das 10h. A central já tinha parado de ligar de volta. Quem ligou de manhã ouviu "o app está com instabilidade" e tentou de novo, várias vezes.
- Depois das 12h: A central ficou para depois do meio-dia. Os chamados passaram de 800 e chegaram à ouvidoria da rede. O que quer que tenha sido decidido depois, alguém da diretoria já tinha perguntado quem cuida do app.
Copa: Café, e o app visto do balcão
Uma farmacêutica de uma das lojas veio para o treinamento e está na pia.
“…metade das pessoas me entrega o celular e pede para eu fazer o pedido no app por elas.”
Nenhum painel mostra isso: no painel, essa compra aparece como feita pelo cliente. Quinze minutos depois, você volta para a mesa pensando em quem está do outro lado do balcão.
O que se ouve de passagem
Atravessar a empresa não é só deslocamento. No corredor as pessoas continuam falando, e o que elas dizem depende da hora e do que você ainda não resolveu. Nada disso custa tempo nem muda o dia.
- …amanhã às oito a versão nova vai para todo mundo, com aviso no celular e tudo.
- …a Apple recusou o app de novo? O Rodrigo tá na sala desde as sete.
- …a Juliana disse que a vitrine sai amanhã nos dois. Alguém avisou o mobile?
- …a central tá cheia de senhora que não consegue entrar no app.
O que vem depois das escolhas
- Se você escolheu “Trocar a localização por CEP e reenviar” e “Manter o login antigo para o Android 7”: CEP digitado no iPhone e login antigo mantido no Android 7. Na quarta, o app tem dois jeitos de achar a farmácia e dois jeitos de entrar. A próxima pessoa que chegar ao time vai precisar de uma tarde só para entender por quê.
- Se você escolheu “Fazer nativa, só no Android primeiro” e “Explicar o uso e pedir nova análise”: A vitrine ficou para depois no iPhone, e a versão com a localização esperou a Apple. Na quarta de manhã, a semana do desconto era só do Android. O marketing trocou "no app" por "no app para Android" em todos os posts.
- Se você escolheu “Fazer a tela em Flutter, para os dois” e “Trocar a localização por CEP e reenviar”: Vitrine em Flutter e cupom por CEP: no iPhone, a semana do desconto ganhou duas telas que não se parecem com o resto do app. Ninguém reclamou. A Juliana anotou "o iPhone com cara de iPhone" para o próximo trimestre.
- Se você escolheu “Explicar o uso e pedir nova análise” e “Deixar o Android 7 e avisar quem usa”: Você esperou a Apple no iPhone e mandou o Android 7 para o site. Nas duas pontas, mais gente comprou pelo site na quarta, e o time do site, que ninguém avisou, passou a manhã olhando o servidor.
Como o dia termina
Você foi para o painel primeiro.
Havia uma recusa da Apple, uma tela pedida para amanhã e uma central lotada, e você abriu um painel que dizia que estava tudo bem. Passou 1h15 olhando aparelho por aparelho.
Isso não é bom nem ruim. É informação: você desconfiou da média. Em performance mobile, o trabalho é achar o celular que a média esconde, porque é nele que alguém desinstala o app.
Você foi para a Apple primeiro.
Você começou pela sala de reunião: uma recusa de uma linha e uma campanha que dependia dela. Passou 45 min decidindo entre mudar o app e defender o app.
Quem desenvolve para iPhone convive com isso: a loja tem regras próprias, o prazo da revisão não é seu, e cada versão passa por alguém de fora antes de chegar a qualquer cliente.
Você foi para a tela nova primeiro.
Você começou pela ilha do produto, onde havia um pedido para amanhã e só um time para fazer. Passou 50 min pesando um código para os dois sistemas contra um código para cada.
Quem trabalha com Flutter ou React Native vive essa troca: entregar nos dois ao mesmo tempo, e cuidar do que fica diferente em cada um.
Você foi para a central primeiro.
Você começou por quem não conseguia entrar no app. Passou 40 min decidindo até onde o app vai para trás para caber no celular de quem tem celular antigo.
No Android, isso é o trabalho de todo dia: centenas de modelos, versões de sistema que ninguém atualiza, e uma decisão sempre aberta sobre quem o app ainda atende.
As quatro portas de Mobile
Mobile não é uma profissão só, são quatro, e elas se separam pelo tipo de problema, não pela linguagem.
- Android. Centenas de aparelhos, versões antigas que ninguém atualiza, e decidir quem o app ainda atende.
- iOS. Poucos aparelhos, regras da loja da Apple e uma revisão que você não controla.
- Multiplataforma. Um código para os dois sistemas: entregar mais rápido e cuidar do que fica diferente.
- Performance mobile. Achar o celular, a tela e o momento em que o app trava, e que a média esconde.