SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Downloaden Sie, um offline zu lesen
Construindo aplicações
confiantes
Photo by Samuel Zeller on Unsplash
Carolina
Karklis
@carolkarklis
carolina@rubyladies.com.br
magnetis.workable.com
Esse é o livro que me inspirou a falar sobre isso. Eu
realmente sou uma entusiasta do Ruby e acredito que o
código não tem que trazer dor de cabeça pra gente, e sim
ser um meio pra chegarmos aonde queremos. O código
deveria passar confiança pra quem mantém ele, mas nem
sempre é assim
🤔
O que não é um código
confiante
Code smells
💩 métodos MacGyver
💩 excesso de condicionais
💩 excesso de type checking
💩 nil driven development
Métodos MacGyver
Problema:
Métodos longos que fazem muita coisa
Solução:
Identificar mensagens e papéis,
separando o código em partes menores
Photo by Caleb Woods on Unsplash
Sistema legado de registro de compras
Em resumo, precisamos de um
método para migrar os dados de
um sistema legado para o novo
Photo by Annelies Geneyn on Unsplash
Primeiro, vamos
pensar na história
que queremos contar
Photo by Annelies Geneyn on Unsplash
4 partes de um
método para contar
uma boa história
Photo by Annelies Geneyn on Unsplash
4 partes de um
método para contar
uma boa história
1. Coletar input
Photo by Annelies Geneyn on Unsplash
4 partes de um
método para contar
uma boa história
1. Coletar input
2. Realizar o trabalho
Photo by Annelies Geneyn on Unsplash
4 partes de um
método para contar
uma boa história
1. Coletar input
2. Realizar o trabalho
3. Entregar output
Photo by Annelies Geneyn on Unsplash
4 partes de um
método para contar
uma boa história
1. Coletar input
2. Realizar o trabalho
3. Entregar output
4. Lidar com falhas
Realizando o trabalho
“The foundation of an object
oriented system is the message”
- Sandi Metz
Mensagens = Ações
#parse_legacy_purchase_records
Mensagens = Ações
#parse_legacy_purchase_records
for #each purchase record we want to:
Mensagens = Ações
#parse_legacy_purchase_records
for #each purchase record we want to:
use #email_address to #get_customer
Mensagens = Ações
#parse_legacy_purchase_records
for #each purchase record we want to:
use #email_address to #get_customer
use #product_id to #get_product
Mensagens = Ações
#parse_legacy_purchase_records
for #each purchase record we want to:
use #email_address to #get_customer
use #product_id to #get_product
#add_purchased_product to the customer record
Mensagens = Ações
#parse_legacy_purchase_records
for #each purchase record we want to:
use #email_address to #get_customer
use #product_id to #get_product
#add_purchased_product to the customer record
#log_successfull_import from the purchase record
Realizando o trabalho
“A role is a set of responsibilities”
- Rebecca Wirfs-Brock
Messages 💖 Roles
Message Role
#parse_legacy_purchase_records
#each
#email_address, #product_id
#get_customer
#get_product
#add_purchased_product
#log_successfull_import
Messages 💖 Roles
Message Role
#parse_legacy_purchase_records data_parser
#each
#email_address, #product_id
#get_customer
#get_product
#add_purchased_product
#log_successfull_import
Messages 💖 Roles
Message Role
#parse_legacy_purchase_records data_parser
#each purchase_list
#email_address, #product_id
#get_customer
#get_product
#add_purchased_product
#log_successfull_import
Messages 💖 Roles
Message Role
#parse_legacy_purchase_records data_parser
#each purchase_list
#email_address, #product_id purchase_record
#get_customer
#get_product
#add_purchased_product
#log_successfull_import
Messages 💖 Roles
Message Role
#parse_legacy_purchase_records data_parser
#each purchase_list
#email_address, #product_id purchase_record
#get_customer customer_list
#get_product
#add_purchased_product
#log_successfull_import
Messages 💖 Roles
Message Role
#parse_legacy_purchase_records data_parser
#each purchase_list
#email_address, #product_id purchase_record
#get_customer customer_list
#get_product product_list
#add_purchased_product
#log_successfull_import
Messages 💖 Roles
Message Role
#parse_legacy_purchase_records data_parser
#each purchase_list
#email_address, #product_id purchase_record
#get_customer customer_list
#get_product product_list
#add_purchased_product customer
#log_successfull_import
Messages 💖 Roles
Message Role
#parse_legacy_purchase_records data_parser
#each purchase_list
#email_address, #product_id purchase_record
#get_customer customer_list
#get_product product_list
#add_purchased_product customer
#log_successfull_import data_importer
def import_legacy_purchase_data(data)
purchase_list = data_parser.parse_purchase_records(data)
end
def import_legacy_purchase_data(data)
purchase_list = data_parser.parse_purchase_records(data)
purchase_list.each do |purchase|
end
end
def import_legacy_purchase_data(data)
purchase_list = data_parser.parse_purchase_records(data)
purchase_list.each do |purchase|
customer = customer_list.get_customer(purchase.email_address)
product = product_list.get_product(purchase.product_id)
end
end
def import_legacy_purchase_data(data)
purchase_list = data_parser.parse_purchase_records(data)
purchase_list.each do |purchase|
customer = customer_list.get_customer(purchase.email_address)
product = product_list.get_product(purchase.product_id)
customer.add_purchased_product(product)
end
end
def import_legacy_purchase_data(data)
purchase_list = data_parser.parse_purchase_records(data)
purchase_list.each do |purchase|
customer = customer_list.get_customer(purchase.email_address)
product = product_list.get_product(purchase.product_id)
customer.add_purchased_product(product)
log_successfull_import(purchase_record)
end
end
Um pouco verboso,
mas conta uma história👌
Detalhe 

Não me preocupei com os colaboradores, 

e sim com a história e a usabilidade do método
#TODO: Criar a ponte entre os papéis
que criamos e objetos de verdade.
Code smells
💩 métodos MacGyver
Excesso de
condicionais e
type checkings
Photo by Javier Allegue Barros on Unsplash
💣 causa desordem e tira linearidade no código
💣 se torna difícil de testar e manter
💣 embute responsabilidades e conhecimentos desnecessários
A solução é dividida em patterns estratégias específicas:
Coagir objetos para que façam o que precisa ser feito
Rejeitar valores inesperados de maneira mais eficiente
Substituir inputs inaceitáveis por valores válidos
Photo by mauRÍCIO santos on Unsplash
Guarde as fronteiras,
não as esquinas
Isso é um código confiante.
menos type checking
menos condicionais
Code smells
💩 métodos MacGyver
💩 excesso de condicionais
💩 excesso de type checking
💩 nil driven development
Nil Driven Development
NoMethodError no Ruby
AttributeError no Python
NullPointerException no Java
TypeError no Javascript
Photo by JOSHUA COLEMAN on Unsplash
Photo by JOSHUA COLEMAN on Unsplash
YAGNI
You ain’t gonna need it
Converta de maneira
implícita ou explícita
#to_s
#to_str
#to_i
#to_f
If you know what you want,
ask for it
Use conversões do módulo
Kernel para outros tipos
Array()
Integer()
Pathname()
Hash.[*]
Defina suas próprias conversões
para tipos definidos
Não pergunte pelo tipo de
objeto, e sim peça a permissão
is_a?(Duck)
respond_to?(:quack)
Aprenda a usar structs e crie um
padrão para seu sistema
Não use nil, não passe nil
Utilize o ActiveRecord::NullRelation se
precisar retornar um objeto vazio
Joyful Driven Development
🌈
Obrigada!
Photo by Samuel Zeller on Unsplash
@carolkarklis
carolina@rubyladies.com.br

Weitere ähnliche Inhalte

Ähnlich wie Construindo aplicações confiantes

Gestão Ágil de Produtos com Lean Startup para times Scrum
Gestão Ágil de Produtos com Lean Startup para times ScrumGestão Ágil de Produtos com Lean Startup para times Scrum
Gestão Ágil de Produtos com Lean Startup para times ScrumMarcos Garrido
 
[DTC21] Thiago Henrique - Microsserviços do Mundo Real
[DTC21] Thiago Henrique - Microsserviços do Mundo Real[DTC21] Thiago Henrique - Microsserviços do Mundo Real
[DTC21] Thiago Henrique - Microsserviços do Mundo RealDeep Tech Brasil
 
Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...
Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...
Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...Edlaine Zamora
 
GraphQL e APIs: como manter a qualidade?
GraphQL e APIs: como manter a qualidade?GraphQL e APIs: como manter a qualidade?
GraphQL e APIs: como manter a qualidade?Qaladies
 
Forca de Digital & RPA
Forca de Digital & RPAForca de Digital & RPA
Forca de Digital & RPAEduardo Britto
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Palestra sobre Design de Produto para o 17º Startup Chopp Blumenau
Palestra sobre Design de Produto para o 17º Startup Chopp BlumenauPalestra sobre Design de Produto para o 17º Startup Chopp Blumenau
Palestra sobre Design de Produto para o 17º Startup Chopp BlumenauVitor Hugo
 
Culture Code Coderockr
Culture Code CoderockrCulture Code Coderockr
Culture Code CoderockrCoderockr
 
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 softwareLucas Teles
 
AI & Big Data - Personalização da Jornada - PicPay - TDC
AI & Big Data - Personalização da Jornada - PicPay - TDCAI & Big Data - Personalização da Jornada - PicPay - TDC
AI & Big Data - Personalização da Jornada - PicPay - TDCRenan Moreira de Oliveira
 
Carreira em testes de software
Carreira em testes de softwareCarreira em testes de software
Carreira em testes de softwareJoyce Bastos
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Thiago Barradas
 
Arquitetura no Android, realmente importa? - TDC 2011
Arquitetura no Android, realmente importa? - TDC 2011Arquitetura no Android, realmente importa? - TDC 2011
Arquitetura no Android, realmente importa? - TDC 2011Marcos Paulo Souza Damasceno
 
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ..."Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...Cesar Augusto Nogueira
 
Empreendendo com métodos ágeis
Empreendendo com métodos ágeisEmpreendendo com métodos ágeis
Empreendendo com métodos ágeisVanessa Me Tonini
 
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 softwareLetticia Nicoli
 

Ähnlich wie Construindo aplicações confiantes (20)

PHPZEIRO: Adote um framework
PHPZEIRO: Adote um frameworkPHPZEIRO: Adote um framework
PHPZEIRO: Adote um framework
 
Gestão Ágil de Produtos com Lean Startup para times Scrum
Gestão Ágil de Produtos com Lean Startup para times ScrumGestão Ágil de Produtos com Lean Startup para times Scrum
Gestão Ágil de Produtos com Lean Startup para times Scrum
 
[DTC21] Thiago Henrique - Microsserviços do Mundo Real
[DTC21] Thiago Henrique - Microsserviços do Mundo Real[DTC21] Thiago Henrique - Microsserviços do Mundo Real
[DTC21] Thiago Henrique - Microsserviços do Mundo Real
 
Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...
Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...
Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...
 
O programador pragmático
O programador pragmáticoO programador pragmático
O programador pragmático
 
GraphQL e APIs: como manter a qualidade?
GraphQL e APIs: como manter a qualidade?GraphQL e APIs: como manter a qualidade?
GraphQL e APIs: como manter a qualidade?
 
Lab metodologia
Lab metodologiaLab metodologia
Lab metodologia
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
Forca de Digital & RPA
Forca de Digital & RPAForca de Digital & RPA
Forca de Digital & RPA
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Palestra sobre Design de Produto para o 17º Startup Chopp Blumenau
Palestra sobre Design de Produto para o 17º Startup Chopp BlumenauPalestra sobre Design de Produto para o 17º Startup Chopp Blumenau
Palestra sobre Design de Produto para o 17º Startup Chopp Blumenau
 
Culture Code Coderockr
Culture Code CoderockrCulture Code Coderockr
Culture Code Coderockr
 
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
 
AI & Big Data - Personalização da Jornada - PicPay - TDC
AI & Big Data - Personalização da Jornada - PicPay - TDCAI & Big Data - Personalização da Jornada - PicPay - TDC
AI & Big Data - Personalização da Jornada - PicPay - TDC
 
Carreira em testes de software
Carreira em testes de softwareCarreira em testes de software
Carreira em testes de software
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
 
Arquitetura no Android, realmente importa? - TDC 2011
Arquitetura no Android, realmente importa? - TDC 2011Arquitetura no Android, realmente importa? - TDC 2011
Arquitetura no Android, realmente importa? - TDC 2011
 
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ..."Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
 
Empreendendo com métodos ágeis
Empreendendo com métodos ágeisEmpreendendo com métodos ágeis
Empreendendo com métodos ágeis
 
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
 

Mehr von iMasters

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroiMasters
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesiMasters
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesiMasters
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...iMasters
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesiMasters
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...iMasters
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsiMasters
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...iMasters
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudiMasters
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza LeiteiMasters
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesiMasters
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosiMasters
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeiMasters
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle MonteiroiMasters
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujoriMasters
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaiMasters
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiiMasters
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...iMasters
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoiMasters
 
Clean Architecture - Elton Minetto
Clean Architecture - Elton MinettoClean Architecture - Elton Minetto
Clean Architecture - Elton MinettoiMasters
 

Mehr von iMasters (20)

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio Telles
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen Moraes
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita Bernardes
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana Arnos
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato Groffe
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio Maujor
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe Regalgo
 
Clean Architecture - Elton Minetto
Clean Architecture - Elton MinettoClean Architecture - Elton Minetto
Clean Architecture - Elton Minetto
 

Construindo aplicações confiantes