Nubank

Escalando com integridade no Nubank com Flutter

Métricas de sucesso

30%

de melhor taxa de sucesso em merges comparado ao iOS

600%

de taxa de merge mais rápida

Objetivo

O Nubank é o maior banco digital independente fora da Ásia, oferecendo a mais de 48 milhões de pessoas uma forma segura e acessível de gerenciar sua vida financeira na palma da mão. Usando tecnologia em nuvem e uma interface enxuta, seu objetivo é tirar a complexidade dos serviços bancários para as pessoas comuns.

A empresa cresceu de forma extremamente rápida e precisava de uma maneira de desenvolver e lançar novos produtos rapidamente sem sacrificar a qualidade. Infelizmente, o Nubank teve dificuldade para encontrar especialistas em mobile nativo suficientes para acompanhar seu ritmo ambicioso. Como resultado, suas equipes de iOS e Android ficavam frequentemente desbalanceadas, fazendo com que uma plataforma lançasse um recurso antes da outra. Além disso, escrever cada recurso duas vezes começou a parecer um desperdício de tempo.

O Nubank chegou à conclusão de que equipes especializadas não escalam bem e começou a buscar uma forma de ter equipes únicas desenvolvendo recursos de ponta a ponta. Com uma única plataforma híbrida, os desenvolvedores de backend poderiam contribuir para o frontend mobile, e os produtos poderiam ser lançados muito mais rapidamente. Tudo o que precisavam era encontrar a tecnologia multiplataforma certa para as necessidades do Nubank.

Por que Flutter?

O Nubank montou uma força-tarefa para investigar algumas das plataformas híbridas mais populares para mobile, incluindo Kotlin Native, React Native e Flutter. O objetivo era encontrar uma solução que permitisse às equipes trabalhar de forma autônoma, desenvolvendo o app mobile e entregando valor sobre uma única arquitetura, linguagem de programação e conjunto de convenções.

A força-tarefa, composta pelos desenvolvedores mobile mais experientes do Nubank, avaliou as opções com base em 11 prioridades principais. Entre elas estavam a experiência do desenvolvedor, a viabilidade da plataforma a longo prazo, o custo incremental de abstração, o risco de abstração não linear e a capacidade do app de ter a mesma aparência e comportamento no iOS e no Android.

Para isso, atribuíram a cada uma das plataformas candidatas uma pontuação em cada uma dessas áreas por meio de testes práticos, conversas com especialistas, sessões de feedback, testes internos de usabilidade e muito mais.

Nos testes de usabilidade, a força-tarefa observou desenvolvedores de todos os níveis e origens realizarem um teste de uma hora. Os desenvolvedores receberam um app funcional, um ambiente de desenvolvimento, a documentação da plataforma e algumas tarefas para programar, como criar um botão de “atalho”. Depois do teste, eles responderam a um breve questionário.

Como a força-tarefa descobriu, os desenvolvedores adoraram o Flutter. Comparado às outras opções, ele oferecia melhores capacidades de hot reload, documentação robusta e uma API mais estável. E, além de tudo, era simplesmente divertido de usar. Assim, com sua pesquisa concluída, a força-tarefa publicou um relatório de 54 páginas indicando a plataforma recomendada: Flutter.

A solução

A escolha estava clara. O Flutter brilhou em quase todas as categorias, superando outras plataformas em termos de experiência do desenvolvedor, documentação, estabilidade da API, ausência de especialização por plataforma e muito mais. A equipe também adorou as capacidades de teste do Flutter, especialmente a infraestrutura de testes integrada para testes unitários, de integração e de ponta a ponta, sem a necessidade de renderizar na tela.

Com a decisão tomada, o Flutter se tornou a solução padrão do Nubank para desenvolvimento mobile. Desde então, todos os novos recursos têm sido escritos em Flutter, com os recursos legados sendo migrados ao longo do tempo.

“O Flutter tinha tudo o que precisávamos prontamente: boa documentação sobre como integrar nosso app, um hot reload que realmente funciona, suporte da comunidade e ferramentas.”

- Igor Borges, Engenheiro de Software, Nubank

“Ter o Flutter como nossa principal tecnologia reduziu significativamente a barreira, permitindo que novos engenheiros consigam contribuir para o nosso app poucos dias após o onboarding.”

- Noe Branagan, Gerente de Engenharia, Nubank

Resultados

O Flutter foi um divisor de águas para o Nubank, permitindo que continuassem a escalar sem sacrificar a qualidade. Muitos de seus engenheiros conseguiram fazer a transição para full-stack, aumentando ao mesmo tempo a produtividade e a satisfação dos desenvolvedores. E como o processo de onboarding do Flutter é tão simples, novos engenheiros conseguem contribuir para o app poucos dias após entrarem. Até engenheiros que não são de mobile conseguem se tornar produtivos em apenas algumas semanas.

O tempo de build também melhorou drasticamente. Usando Flutter, o Nubank lançou um novo recurso de seguro de vida em apenas três meses — seu lançamento mais rápido de todos. Antes, desenvolver e lançar um novo produto levava de vários meses a um ano inteiro. Para acelerar ainda mais o desenvolvimento, o Nubank também adotou uma ferramenta interna experimental para desenvolvedores que usa Flutter Desktop e reduz o consumo de bateria do notebook ao dispensar emuladores. Ela também ajuda em testes rápidos em diferentes dimensões de dispositivos.

De fato, o Flutter trouxe melhorias de desempenho em todas as frentes. Com o Flutter, a taxa de sucesso em merges do Nubank é 30% melhor do que era com as plataformas nativas. Em média, os pull requests em Flutter levam apenas 9,9 minutos para serem mesclados, contra uma média de 70,45 minutos em todas as plataformas. O Flutter também deu ao Nubank mais insights, como a capacidade de medir o tamanho do app por recurso ou pacote e correlacionar métricas com outros sistemas.

Ele também proporciona mais consistência de UI. Com ferramentas nativas, o Nubank costumava ter várias bibliotecas de componentes inconsistentes. Agora, eles têm seu próprio design system, que as equipes de produto podem estender e personalizar. Também criaram uma ferramenta para entregar dinamicamente novos conteúdos ao app, permitindo localizar conteúdo sem precisar lançar uma nova versão do app.

No Nubank, o Flutter agora faz parte da cultura para sempre.