mais lidos
Life at Nu
Conheça a sede do Nubank em Pinheiros, São Paulo/Brasil jan 11
Design
A nova aparência do Nubank: conheça nossa nova logo maio 17
Culture & Values
Como os valores e a cultura da Nu moldam os produtos que criamos ago 7
Carreiras
Reunimos grandes mentes de diversas origens que permitem a discussão e o debate e melhoram a resolução de problemas.
Saiba mais sobre nossas carreiras



Há pouco mais de um ano, Alexandre Freire escreveu um artigo sobre como nós decidimos padronizar o desenvolvimento do nosso aplicativo móvel com o Flutter, nossas primeiras experiências com a plataforma e por que decidimos usá-la como nossa tecnologia principal para aplicativos multiplataforma.
Em uma entrevista recente com Nóra Bézi da Bitrise, Alexandre — junto com Noe Branagan, gerente de engenharia da equipe central do Flutter no Nubank, e outros engenheiros do Nubank — deu uma visão geral de como o Flutter nos ajudou a expandir o desenvolvimento do nosso aplicativo para suportar nosso hipercrescimento..
Por que o Flutter?
Conforme o Nubank cresceu e se tornou o maior banco digital independente fora da Ásia, desenvolver novos produtos além do cartão de crédito virou uma prioridade, e as novas equipes precisavam descobrir uma maneira de criar rapidamente aplicativos de alta qualidade.
Para se ater a apenas uma tecnologia, a equipe avaliou as opções em relação a uma série de prioridades definidas com base nesses cinco fatores:
Após coletar evidências, a equipe decidiu adotar o Flutter, graças às suas excelentes capacidades de testes, como infraestrutura de teste integrada para testes de Unidade, Integração e de ponta a ponta sem a necessidade de renderizar na tela. Em geral — em comparação com as outras opções —, eles também acharam que a experiência de desenvolvimento no Flutter era superior, com melhores capacidades de recarga automática, documentação oficial robusta e uma API mais estável.
Conheça nossas oportunidades
Após um ano, qual a qualidade de expansão do Flutter?
Nóra: Vocês ainda estão felizes com o Flutter?
Alexandre Freire, Diretor de Engenharia: Amamos o Flutter no Nubank. Ele se tornou 100% parte da nossa cultura quando falamos sobre desenvolvimento para celulares. Também estamos testando o Flutter Web, pois demonstrou muitas vantagens para melhorar a experiência do desenvolvedor. Tomamos muitas decisões estratégicas na nossa equipe de produtos que afetaram a nossa velocidade e a eficiência e deram a oportunidade para mais engenheiros colaborarem no nosso código-base compartilhando uma linguagem. Ficamos surpresos com quão fácil foi para nossas equipes adotarem a tecnologia e todos os novos recursos usando o Flutter. Estamos ficando mais experientes em Dart — pois virou parte do nosso arsenal para criar novas ferramentas para desenvolvimento para celulares, como o CLI que usamos para desenvolvedores móveis trabalharem no nosso monorepo.
Nóra: Desde que começaram a usar o Flutter, algo mudou no seu processo de desenvolvimento para celulares?
Noe Branagan, Gerente de Engenharia: Desde que adotamos o Flutter, adotamos uma ferramenta de desenvolvimento interno experimental usando Flutter Desktop para acelerar nosso desenvolvimento ainda mais. Ele reduz o uso de bateria do notebook ignorando emuladores e ajuda com testes rápidos em diferentes dimensões de dispositivos. Nossa infraestrutura móvel e eficiência de desenvolvimento ficaram cada vez melhores com Flutter, Dart e com os diversos novos recursos para desenvolvedores que foram introduzidos no ano passado.
Nóra: Há algo que você queria ter sabido na época?
Bruno Tavares, Gerente de Engenharia: Acho que fomos um pouco ingênuos em relação à capacidade de migrar um aplicativo tão grande e complexo que oferece suporte completo para quatro produtos diferentes. Ainda estamos na metade: nosso aplicativo ainda não é 100% Flutter. Recentemente finalizamos um mapa completo dos módulos de propriedade para as equipes e começamos os planos de acompanhamento para finalizar a migração. Estamos alinhando a empresa ao redor do objetivo técnico de finalizar a migração. Também estamos enfrentando decisões difíceis de priorização, especialmente em fluxos e telas que funcionam muito bem em seu estado atual (Objective-C nativo, Swift, Java, Kotlin ou React Native), para os quais não há planos de atualização em breve.
O mapa a seguir mostra todos os fluxos e telas do aplicativo, com o tamanho significando a complexidade do módulo. O roxo marca os que já foram migrados, e os verdes serão migrados este ano:
Nóra: Na sua opinião, qual é a qualidade de expansão do Flutter?
Noe Branagan, Gerente de Engenharia: Nossa equipe de engenharia está expandindo como resultado do hipercrescimento do Nubank — estamos sempre contratando. Isso também significa que precisamos aumentar a frequência de lançamento de novos recursos para os clientes, o que exige mais capacidade e recursos. Usar o Flutter como nossa principal tecnologia reduziu muito a barreira, permitindo que novos engenheiros possam contribuir com o nosso aplicativo em questão de dias após serem integrados. Em relação à eficiência, melhoramos muito nosso tempo de compilação; a taxa de sucesso na fusão é de 30% melhor em comparação com o nativo, com a fusão de PRs do Flutter levando 9,9 minutos para completar, em comparação com uma média geral de 70,45 minutos em todas as plataformas.
Reinaldo Moreira, Engenheiro Móvel: “O Flutter nos permitiu lançar o Seguro de Vida em apenas 3 meses. Antes de usar essa estrutura, desenvolver e lançar um novo produto levaria meses ou até mesmo um ano. Usar o Flutter nos ajudou a acelerar o desenvolvimento para as duas plataformas, e as ferramentas criadas a partir da nossa plataforma móvel também fizeram uma grande diferença. Não consigo imaginar esse recurso sendo feito sem usar o Flutter.”
Nóra: Quais são os principais recursos que tornam o Flutter tão adequado para o seu uso?
Lindsey Bleimes, VP da Engenharia: Ele oferece mais consistência na maneira como fazemos o desenvolvimento de produtos. Temos nosso próprio sistema de design, no qual as equipes de produtos podem ampliar e personalizar seus componentes de IU. Ele também oferece ferramentas orientadas por backend, como a função de ‘recarga automática’ e um suporte melhor para a localização. Criamos uma ferramenta para entregar dinamicamente novos conteúdos para o nosso aplicativo. Por exemplo: agora podemos gerenciar a localização sem precisar lançar uma nova versão do aplicativo ou sacrificar o desempenho. Usar o Flutter nos ajudou a criar uma infraestrutura melhor para observar, mandar alertas diretamente para a equipe responsável, medir o tamanho do aplicativo por recurso ou pacto e relacionar mais métricas com outros sistemas.
Marcelo Theodoro, Gerente de Engenharia: A maior vantagem é que até mesmo engenheiros não móveis ficavam produtivos em poucas semanas devido à rápida curva de aprendizagem do Flutter. Com a adoção de múltiplas equipes de produtos, todos percebemos ótimas novas práticas surgindo e começamos a padronizar nosso código-base.
Nóra: Há algo a mais a considerar ao migrar um aplicativo para o Flutter?
Alexandre Freire, Diretor de Engenharia: Vale a pena observar que, além do código do aplicativo em si, essa migração envolve muitas ferramentas e suporte. Criamos um serviço para cuidar de toda a cópia e localização do aplicativo, pois já operamos no Brasil e no México e anunciamos nossas operações na Colômbia. Também fizemos ferramentas de desenvolvimento como o CLI escrito em Dart e adaptamos nossos pipelines de compilação, testes e implantação contínua usando soluções internas, em grande parte. Precisamos nos adaptar a essa realidade de ter um aplicativo que existe em um estado misto (nativo, React Native e Flutter). Esperamos que, após a migração, seja possível simplificar o ecossistema.
Marcelo Theodoro, Gerente de Engenharia: Nem tudo é fácil. Como fomos os primeiros a adotar, não demorou muito até encontrarmos erros ao integrar com partes nativas antigas do aplicativo. O principal aprendizado é que ter uma equipe de plataforma focada em apoiar as equipes de produtos é essencial para resolver esses tipos de erros e alguns dos problemas complexos de desempenho. E para evitar que o aplicativo se torne um monstro do Frankenstein, consideramos importante fornecer um amplo treinamento para todas as equipes.”
Conheça nossas oportunidades