SlideShare uma empresa Scribd logo
Letticia Nicoli
Developer
Experience
no Nubank
TDC São Paulo Online - Trilha Flutter
@LetticiaNicoli
Mobile Tools
Build Tools and Releases
app.sli.do/event/srp0rarr
User
Experience
Development
Principles
DX
Developer Experience
● Valor
Entender como realizam seu trabalho e
otimizar essa experiência.
● Usabilidade
Deve trazer uma boa experiência, ser fácil e
funcionar conforme o esperado.
● Automação
Dar fim em tarefas repetitivas, maçantes.
Automatizar processos para focar na criação
de algoritmos e soluções para problemas e
novas funcionalidades.
● Comunicação
Ter uma comunicação próxima, permitir que
contribuam diretamente para essas
prioridades. Interagir com elas e perguntar o
que pensam.
● Boa documentação
Não é dever do cliente adivinhar como um
projeto/ferramenta/processo funciona.
Documentar, irá ajudar na evolução do projeto e
na inclusão de novas pessoas
desenvolvedoras.
● Estabilidade
Sem estabilidade, o produto se torna não
confiável, tornando irrelevante a funcionalidade
"incrível".
Problemas
Código fonte
distribuído
1
Dificuldade no
gerenciamento de
dependências
2
Alterações não
atômicas
3
Monorepo
Estratégia de
desenvolvimento de software
em que o código de muitos
projetos é armazenado no
mesmo repositório.
MONOREPO
● Fonte única de verdade
Todo o código em um só lugar,
incluindo assets, ícones, arquivos de
mock etc.
● Descobertas e colaboração
Compartilhar conhecimento e criar
oportunidades de melhorias. Visibilidade
sobre o que cada time está fazendo.
● Alterações atômicas
Alterações incompatíveis com versões
anteriores são fáceis de
entender/resolver. Um PR único afeta
as alterações em muitos projetos.
● Refatoração
Garantir que cada parte do projeto
continue funcionando após uma
refatoração, mesmo que em grande
escala.
CI/CD TOOL CHANGES
● Versionamento de Pipeline
Versionar as pipelines no mesmo
repositório do aplicativo.
● Várias pipelines no
mesmo repo
Como temos várias plataformas no
mesmo repositório, precisávamos de
vários pipelines.
● Runs paralelas
Devido à quantidade de colaboradores,
precisávamos de runs paralelas (mais
agents disponíveis).
● Auto retry
Um recurso importante para evitar
problemas com flaky tests.
SMART PIPELINES
DYNAMIC PIPELINE
DYNAMIC PIPELINE
BORS
Jenkins main e seus agents estão em
nosso cluster k8s usando a AWS e
virtualizados no Docker.
Usamos o MacStadium e o Ansible
para iOS.
Usamos Prometheus para monitorar e
Splunk para fazer log do Jenkins.
Setup
1
BACKEND + MOBILE
3
CROSS PLATFORM (Linux e MacOS)
2
CONFIGURAÇÃO DAS VERSÕES CORRETAS (IDES, frameworks, simuladores etc)
4 TEMPO TOTAL: ~1 hora
DART
Flutter tools possui
utilitários de build e CLI
interessantes.
Engajar e facilitar
contribuições de todas as
pessoas engenheiras.
MAIN TOOL
COMMANDS
A principal ferramenta
fornecida para ajudar todas
as pessoas engenheiras que
desejam fazer alterações no
monorepo.
Muitos comandos usados
por pessoas engenheiras e
pipelines.
Commands
doctor
Verifica todos os
programas e versões
necessárias para
executar o aplicativo.
--fix para corrigir
problemas de
configuração.
deps get
Gerenciador de
dependências para
Flutter, React, iOS e
Android.
release
Comandos
relacionados ao
Release Management.
Ex.: promover uma
nova versão do
aplicativo.
create feature
Criar nova feature
package em Flutter.
log splunk
Comando para enviar
logs. Utilizado nas
pipelines.
hotfix
Auxilia no processo
de realizar um hotfix
no app.
Pipelines - Release
Participe do nosso
programa Beta Tester
sou.nu/android-beta sou.nu/ios-beta

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Product Owner vs Product Manager
Product Owner vs Product ManagerProduct Owner vs Product Manager
Product Owner vs Product Manager
 
User story mapping workshop slideshare
User story mapping workshop slideshareUser story mapping workshop slideshare
User story mapping workshop slideshare
 
From Product Vision to Story Map - Lean / Agile Product shaping
From Product Vision to Story Map - Lean / Agile Product shapingFrom Product Vision to Story Map - Lean / Agile Product shaping
From Product Vision to Story Map - Lean / Agile Product shaping
 
Getting Started with Google Analytics 4
Getting Started with Google Analytics 4Getting Started with Google Analytics 4
Getting Started with Google Analytics 4
 
Customer experience 2.0
Customer experience 2.0Customer experience 2.0
Customer experience 2.0
 
A guide to service blueprinting by Adaptive Path
A guide to service blueprinting by Adaptive PathA guide to service blueprinting by Adaptive Path
A guide to service blueprinting by Adaptive Path
 
Design Thinking: Product Design Roadmap to Organization Transformation
Design Thinking: Product Design Roadmap to Organization TransformationDesign Thinking: Product Design Roadmap to Organization Transformation
Design Thinking: Product Design Roadmap to Organization Transformation
 
Lean Startup + Story Mapping = Awesome Products Faster
Lean Startup + Story Mapping = Awesome Products FasterLean Startup + Story Mapping = Awesome Products Faster
Lean Startup + Story Mapping = Awesome Products Faster
 
Scrum - Product Owner
Scrum - Product OwnerScrum - Product Owner
Scrum - Product Owner
 
Agile coach - roadmap and user story map
Agile coach - roadmap and user story map Agile coach - roadmap and user story map
Agile coach - roadmap and user story map
 
Datomic - Lidando com dados de maneira versionada
Datomic - Lidando com dados de maneira versionadaDatomic - Lidando com dados de maneira versionada
Datomic - Lidando com dados de maneira versionada
 
Engagement, Retention and Monetization
Engagement, Retention and MonetizationEngagement, Retention and Monetization
Engagement, Retention and Monetization
 
Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
 Grokking Techtalk #39: How to build an event driven architecture with Kafka ... Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
 
Practical Scrum course day 1
Practical Scrum course day 1Practical Scrum course day 1
Practical Scrum course day 1
 
Moving from Kanban to scrum
Moving from Kanban to scrumMoving from Kanban to scrum
Moving from Kanban to scrum
 
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
 
How to Lead Customer Value Creation by Dan Olsen at Leading the Product Melbo...
How to Lead Customer Value Creation by Dan Olsen at Leading the Product Melbo...How to Lead Customer Value Creation by Dan Olsen at Leading the Product Melbo...
How to Lead Customer Value Creation by Dan Olsen at Leading the Product Melbo...
 
Scrum Guide & SAFe Agile booklet
Scrum Guide & SAFe Agile bookletScrum Guide & SAFe Agile booklet
Scrum Guide & SAFe Agile booklet
 
Design Sprint
Design SprintDesign Sprint
Design Sprint
 
Scrum Process
Scrum ProcessScrum Process
Scrum Process
 

Semelhante a Developer Experience no Nubank

Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
Carlos Gonzaga
 

Semelhante a Developer Experience no Nubank (20)

Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Extreme programming (xp)
 Extreme programming   (xp) Extreme programming   (xp)
Extreme programming (xp)
 
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsE se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
 
Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entrega
 
Aula05 - Metodologias Ágeis
Aula05 - Metodologias ÁgeisAula05 - Metodologias Ágeis
Aula05 - Metodologias Ágeis
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Modelagem Ágil
Modelagem ÁgilModelagem Ágil
Modelagem Ágil
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
Ferramentas case
Ferramentas caseFerramentas case
Ferramentas case
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptx
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Plano de Projeto de Software do​ Residents Control
Plano de Projeto de Software do​ Residents ControlPlano de Projeto de Software do​ Residents Control
Plano de Projeto de Software do​ Residents Control
 
Scrum 8
Scrum 8Scrum 8
Scrum 8
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 

Mais de Letticia Nicoli

Mais de Letticia Nicoli (20)

.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
 
Machine Learning para devs com ML.NET
Machine Learning para devs com ML.NETMachine Learning para devs com ML.NET
Machine Learning para devs com ML.NET
 
O futuro do .NET
O futuro do .NETO futuro do .NET
O futuro do .NET
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
 
Machine Learning para devs com ML.NET
Machine Learning para devs com ML.NETMachine Learning para devs com ML.NET
Machine Learning para devs com ML.NET
 
Xamarin + App Center + Azure DevOps = 
Xamarin + App Center + Azure DevOps = Xamarin + App Center + Azure DevOps = 
Xamarin + App Center + Azure DevOps = 
 
Desenvolvimento Cross-mobile com Xamarin, por onde começar?
Desenvolvimento Cross-mobile com Xamarin, por onde começar?Desenvolvimento Cross-mobile com Xamarin, por onde começar?
Desenvolvimento Cross-mobile com Xamarin, por onde começar?
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
 
Generalização prematura e complexidade acidental, a raiz do mal de todo software
Generalização prematura e complexidade acidental, a raiz do mal de todo softwareGeneralização prematura e complexidade acidental, a raiz do mal de todo software
Generalização prematura e complexidade acidental, a raiz do mal de todo software
 
Visual Studio App Center - Continuous Everything
Visual Studio App Center - Continuous Everything Visual Studio App Center - Continuous Everything
Visual Studio App Center - Continuous Everything
 
Write beautiful code, faster
Write beautiful code, fasterWrite beautiful code, faster
Write beautiful code, faster
 
Como Mobile DevOps me ajudou no sucesso de desenvolvimento de aplicativos.
Como Mobile DevOps me ajudouno sucesso de desenvolvimento de aplicativos.Como Mobile DevOps me ajudouno sucesso de desenvolvimento de aplicativos.
Como Mobile DevOps me ajudou no sucesso de desenvolvimento de aplicativos.
 
Precisamos falar sobre Visual Studio App Center
Precisamos falar sobre Visual Studio App CenterPrecisamos falar sobre Visual Studio App Center
Precisamos falar sobre Visual Studio App Center
 
Dicas e Truques para aumentar sua produtividade no Visual Studio
Dicas e Truques para aumentar sua produtividade no Visual StudioDicas e Truques para aumentar sua produtividade no Visual Studio
Dicas e Truques para aumentar sua produtividade no Visual Studio
 
DevOps aplicado a Mobile: Challenge Accepted
DevOps aplicado a Mobile: Challenge AcceptedDevOps aplicado a Mobile: Challenge Accepted
DevOps aplicado a Mobile: Challenge Accepted
 
Desenvolvimento Cross Mobile com Xamarin, por onde começar?
Desenvolvimento Cross Mobile com Xamarin, por onde começar?Desenvolvimento Cross Mobile com Xamarin, por onde começar?
Desenvolvimento Cross Mobile com Xamarin, por onde começar?
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativosMobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos
 
Últimas atualizações de produtividade no Visual Studio 2017​
Últimas atualizações de produtividade no Visual Studio 2017​Últimas atualizações de produtividade no Visual Studio 2017​
Últimas atualizações de produtividade no Visual Studio 2017​
 
Xamarin.Forms: Você já ouviu falar?
Xamarin.Forms: Você já ouviu falar?Xamarin.Forms: Você já ouviu falar?
Xamarin.Forms: Você já ouviu falar?
 

Developer Experience no Nubank

  • 1. Letticia Nicoli Developer Experience no Nubank TDC São Paulo Online - Trilha Flutter
  • 2. @LetticiaNicoli Mobile Tools Build Tools and Releases app.sli.do/event/srp0rarr
  • 3.
  • 5. Developer Experience ● Valor Entender como realizam seu trabalho e otimizar essa experiência. ● Usabilidade Deve trazer uma boa experiência, ser fácil e funcionar conforme o esperado. ● Automação Dar fim em tarefas repetitivas, maçantes. Automatizar processos para focar na criação de algoritmos e soluções para problemas e novas funcionalidades. ● Comunicação Ter uma comunicação próxima, permitir que contribuam diretamente para essas prioridades. Interagir com elas e perguntar o que pensam. ● Boa documentação Não é dever do cliente adivinhar como um projeto/ferramenta/processo funciona. Documentar, irá ajudar na evolução do projeto e na inclusão de novas pessoas desenvolvedoras. ● Estabilidade Sem estabilidade, o produto se torna não confiável, tornando irrelevante a funcionalidade "incrível".
  • 6.
  • 7. Problemas Código fonte distribuído 1 Dificuldade no gerenciamento de dependências 2 Alterações não atômicas 3
  • 8.
  • 9. Monorepo Estratégia de desenvolvimento de software em que o código de muitos projetos é armazenado no mesmo repositório.
  • 10. MONOREPO ● Fonte única de verdade Todo o código em um só lugar, incluindo assets, ícones, arquivos de mock etc. ● Descobertas e colaboração Compartilhar conhecimento e criar oportunidades de melhorias. Visibilidade sobre o que cada time está fazendo. ● Alterações atômicas Alterações incompatíveis com versões anteriores são fáceis de entender/resolver. Um PR único afeta as alterações em muitos projetos. ● Refatoração Garantir que cada parte do projeto continue funcionando após uma refatoração, mesmo que em grande escala.
  • 11.
  • 12.
  • 13. CI/CD TOOL CHANGES ● Versionamento de Pipeline Versionar as pipelines no mesmo repositório do aplicativo. ● Várias pipelines no mesmo repo Como temos várias plataformas no mesmo repositório, precisávamos de vários pipelines. ● Runs paralelas Devido à quantidade de colaboradores, precisávamos de runs paralelas (mais agents disponíveis). ● Auto retry Um recurso importante para evitar problemas com flaky tests.
  • 17.
  • 18.
  • 19. BORS
  • 20.
  • 21.
  • 22. Jenkins main e seus agents estão em nosso cluster k8s usando a AWS e virtualizados no Docker. Usamos o MacStadium e o Ansible para iOS. Usamos Prometheus para monitorar e Splunk para fazer log do Jenkins.
  • 23.
  • 24. Setup 1 BACKEND + MOBILE 3 CROSS PLATFORM (Linux e MacOS) 2 CONFIGURAÇÃO DAS VERSÕES CORRETAS (IDES, frameworks, simuladores etc) 4 TEMPO TOTAL: ~1 hora
  • 25.
  • 26. DART Flutter tools possui utilitários de build e CLI interessantes. Engajar e facilitar contribuições de todas as pessoas engenheiras. MAIN TOOL COMMANDS A principal ferramenta fornecida para ajudar todas as pessoas engenheiras que desejam fazer alterações no monorepo. Muitos comandos usados por pessoas engenheiras e pipelines.
  • 27. Commands doctor Verifica todos os programas e versões necessárias para executar o aplicativo. --fix para corrigir problemas de configuração. deps get Gerenciador de dependências para Flutter, React, iOS e Android. release Comandos relacionados ao Release Management. Ex.: promover uma nova versão do aplicativo. create feature Criar nova feature package em Flutter. log splunk Comando para enviar logs. Utilizado nas pipelines. hotfix Auxilia no processo de realizar um hotfix no app.
  • 28.
  • 30.
  • 31. Participe do nosso programa Beta Tester sou.nu/android-beta sou.nu/ios-beta