Nubank

Escalando com integridade no Nubank com Flutter

Métricas de sucesso

30%

melhor taxa de sucesso de merge comparado ao iOS

600%

taxa de merge mais rápida

Objetivo

O Nubank é o maior banco digital independente fora da Ásia, proporcionando a mais de 48 milhões de pessoas uma maneira segura e acessível de gerenciar suas vidas financeiras na palma da mão. Utilizando tecnologia em nuvem e uma interface simplificada, seu objetivo é remover a complexidade do setor bancário para as pessoas comuns.

A empresa cresceu extremamente rápido, e precisava de uma maneira de desenvolver e lançar novos produtos rapidamente sem sacrificar a qualidade. Infelizmente, o Nubank teve dificuldade em encontrar especialistas em desenvolvimento mobile nativo suficientes para acompanhar seu ritmo ambicioso. Como resultado, suas equipes de iOS e Android frequentemente ficavam desbalanceadas, levando uma plataforma a lançar 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 procurar uma maneira de ter equipes únicas desenvolvendo recursos de ponta a ponta. Com uma plataforma híbrida, desenvolvedores de backend poderiam contribuir para o frontend mobile, e produtos poderiam ser lançados muito mais rapidamente. Tudo o que precisavam fazer 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 suas equipes trabalharem de forma autônoma, desenvolvendo o app mobile e entregando valor em 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 suas opções com base em 11 prioridades principais. Estas incluíam a experiência do desenvolvedor, viabilidade de longo prazo da plataforma, custo de abstração incremental, risco de abstração não-linear e a capacidade do app de ter a mesma aparência e funcionamento no iOS e Android.

Para isso, eles 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.

Para os testes de usabilidade, a força-tarefa observou desenvolvedores de todos os níveis e contextos realizarem um teste de uma hora. Os desenvolvedores receberam um app funcional, ambiente de desenvolvimento, documentação da plataforma e algumas tarefas para codificar, como criar um botão de "atalho". Depois, após o teste, eles responderam a um breve questionário.

Como a força-tarefa descobriu, os desenvolvedores adoraram o Flutter. Comparado às outras opções, oferecia melhores capacidades de hot reload, documentação sólida e uma API mais estável. E era simplesmente divertido de usar. Então, com sua pesquisa completa, a força-tarefa publicou um relatório de 54 páginas nomeando sua plataforma recomendada: Flutter.

A Solução

A escolha foi clara. O Flutter se destacou em quase todas as categorias, superando outras plataformas em termos de experiência do desenvolvedor, documentação, estabilidade da API, falta de especialização de 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 renderização na tela.

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

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

- Igor Borges, Engenheiro de Software, Nubank

"Ter o Flutter como nossa tecnologia principal reduziu significativamente a barreira, permitindo que novos engenheiros possam contribuir para nosso app em poucos dias após serem integrados."

- Noe Branagan, Gerente de Engenharia, Nubank

Resultados

O Flutter tem sido uma virada de jogo para o Nubank, permitindo que eles continuem a escalar sem sacrificar a qualidade. Muitos de seus engenheiros conseguiram fazer a transição para full-stack, aumentando a produtividade e satisfação dos desenvolvedores ao mesmo tempo. E como o processo de integração do Flutter é tão simples, novos engenheiros conseguem contribuir para o app em poucos dias após serem integrados. Até mesmo engenheiros não-mobile podem se tornar produtivos em apenas algumas semanas.

O tempo de desenvolvimento 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 os tempos. Anteriormente, 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 experimental de desenvolvedor interno usando Flutter Desktop que reduz o uso de bateria do laptop ao pular emuladores. Também ajuda com testes rápidos em diferentes dimensões de dispositivos.

Na verdade, o Flutter levou a melhorias de desempenho em todos os aspectos. Com Flutter, a taxa de sucesso de merge do Nubank é 30% melhor do que era com plataformas nativas. Em média, pull requests do Flutter levam apenas 9,9 minutos para fazer merge, comparado a 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.

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

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