SlideShare uma empresa Scribd logo
1 de 78
Baixar para ler offline
http://borba.blog.br
Merda Acontece
Luiz Borba
1989Estudante
1991
Programador
1994
Empreendedor
Analista
de
Tecnologia
1998
Líder
Técnico
2000
2001
Arquiteto de
Software
2005
Scrum
Master
2010
Consultor em
Tecnologia
2014(?)
Consultor em
Negócios
Quem é
Luiz Borba?
Ada Lovelace
“Think of my horror then at just
discovering that the table & diagram
(over which I have been spending
infinite patience & pains) are seriously
wrong, in one or two points”.
1843
Grace Hopper
1952
A-0primeiro compilador já
escrito para um
computador eletrônico
1947
“As soon as we started programming,
we found to our surprise that it wasn't
as easy to get programs right as we
had thought. Debugging had to be
discovered. I can remember the exact
instant when I realized that a large
part of my life from then on was going
to be spent in finding mistakes in my
own programs”.
(Maurice Wilkes, 1949)
"There is no program that, given a
description of an arbitrary computer
program, can decide whether the
program finishes running or continues to
run forever".
(Alan Turing, 1936)
Seja empírica ou
matematicamente, já faz
décadas que descobrimos
que MERDA ACONTECE!
1º Ato
Porque a Merda Acontece?
Onde há catinga, há merda
Martin Fowler’s Code Smells
Duplicated Code
Long Method
Large Class
Long Parameter List
Divergent Change
Shotgun Surgery
Feature Envy
Data Clumps
Primitive Obsession
Switch Statements
Parallel Inheritance Hierarchies
Lazy Class
Speculative Generality
Temporary Field
Message Chains
Middle Man
Inappropriate Intimacy
Alternative Classes with Different Interfaces
Incomplete Class Libraries
Data Class
Refused Bequest
Comments
Merda Acontece porque
deixamos janelas quebradas
O milagre da multiplicação
Cuidado com ORM
Merda Acontece porque
usamos abstrações sem saber
o que acontece por “debaixo
dos panos”
As 2 Leis de Borba
Primeira Lei de Arquitetura
de Software de Borba
(Borba's 1st Software Architecture Law)
Primeira Lei de Arquitetura
de Software de Borba
(Borba's 1st Software Architecture Law)
Toda arquitetura definida está errada.
Precisa PROVAR!
Segunda Lei de Arquitetura
de Software de Borba
(Borba's 2nd Software Architecture Law)
Segunda Lei de Arquitetura
de Software de Borba
(Borba's 2nd Software Architecture Law)
Toda arquitetura definida que
comprovadamente funciona
estará errada em breve.
As coisas mudam
• Tecnologias mudam
• Requisitos/Planos/Negócios mudam
• Pessoas mudam
• Usuários mudam
• TUDO MUDA. O TEMPO TODO.
Twitter no Início
Twitter Hoje
Merda Acontece porque não
evoluimos nossos sistemas ao
longo do tempo
O Banco do Tio Patinhas
Como alterar
configurações no
computador do Banco
do Tio Patinhas
Merda Acontece quando
operadores são dementes
2º Ato
Como lidar com a Merda?
Logs
Sua Aplicação falha, usuários lhe esculhambam
Crash Analysis
Obter os logs de execução e
analisa-los ajuda a descobrir
rapidamente os problemas
quando a Merda Acontece
Descomendo em
Produção
Deploy em
Produção
Como voltar no tempo?
$ git push heroku master
class AddCurrentToVendor < ActiveRecord::Migration
def up
articles = select_all('SELECT * FROM articles')
articles.each do |article|
first_vendor = select_one("SELECT * FROM vendors WHERE article_id = #{article['id']}")
if first_vendor
update("UPDATE vendors SET current=#{quoted_true} WHERE id=#{first_vendor['id']}")
end
end
end
def down
remove_column :vendors, :current
end
end
Migrations (Rails)
Esteja sempre preparado para
voltar atrás quando a Merda
Acontece
O Paradoxo do Deploy
Porque temos
medo do Deploy?
O Deploy de 180 Dias
Deploy Frequente minimiza a
chance de dar Merda e
quando acontece, é mais fácil
de detectar o problema
O Caso Facebook
Qual a frequência de deploy
em produção do Facebook?
2 vezes por dia
E o que acontece quando dá
merda?
"Reverting is for losers!"
(Chuck Rossi)
IRC para localizar os
desenvolvedores, resolver a
bronca na hora e fazer um
novo deploy
Desenvolvedores
tem karma
Quanto tempo leva o processo
de deploy? (dezenas de
milhares de servidores e um
pacote de 1.5Gb)
Como descobrir se deu
merda?
Monitoramento do Facebook
analisa até o que o pessoal do
Twitter tá falando
Facebook sabe das coisas, se
você não sabe o que fazer,
copie dos melhores
3º Ato
Tendências
Testes Automatizados
Só teremos velocidade de
recuperação se nossos testes
forem automatizados
Vagrant e Docker
Operação deve ser o mais
simples possível
Um C seguro
Rust
Linguagens e Frameworks
devem ajudar a evitar que
desenvolvedor cometa erros
Epílogo
Sobre Você
“That’s 30 Minutes Away. I’ll be there in 10.”
(Wiston ‘The Wolf’ Wolfe)
Seja Rápido
“No more half
measures, Walt”
(Mike Ehrmantraut)
Seja Decisivo
Automatize
TUDO
Use Unix
Não seja um
Embola Bosta
O nosso trabalho é cada vez
mais importante e se não
tivermos cuidado, muitos
inocentes vão pagar o pato
Skynet
Replicantes
Cylons
Obrigado!
http://borba.blog.br
Luiz Borba

Mais conteúdo relacionado

Mais procurados

WebCamps Software Testing
WebCamps Software TestingWebCamps Software Testing
WebCamps Software Testing
Rodrigo Vidal
 

Mais procurados (20)

DevOps - A Origem
DevOps - A OrigemDevOps - A Origem
DevOps - A Origem
 
Acelerando projetos de software com Scrum e Extreme Programming
Acelerando projetos de software com Scrum e Extreme ProgrammingAcelerando projetos de software com Scrum e Extreme Programming
Acelerando projetos de software com Scrum e Extreme Programming
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e devel
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOps
 
Discutindo DevOps na pratica, por Danilo Sato
Discutindo DevOps na pratica, por Danilo SatoDiscutindo DevOps na pratica, por Danilo Sato
Discutindo DevOps na pratica, por Danilo Sato
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012
 
Desenvolvimento Ágil e a mudança de mindset envolvida
Desenvolvimento Ágil e a mudança de mindset envolvidaDesenvolvimento Ágil e a mudança de mindset envolvida
Desenvolvimento Ágil e a mudança de mindset envolvida
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Automatizando a entrega/deploy de software
Automatizando a entrega/deploy de softwareAutomatizando a entrega/deploy de software
Automatizando a entrega/deploy de software
 
DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014
 
DevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega ContínuaDevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega Contínua
 
Como escrever apps de qualidade em qualquer arquitetura
Como escrever apps de qualidade em qualquer arquiteturaComo escrever apps de qualidade em qualquer arquitetura
Como escrever apps de qualidade em qualquer arquitetura
 
Transformação ágil ou transformação digital?
Transformação ágil ou transformação digital?Transformação ágil ou transformação digital?
Transformação ágil ou transformação digital?
 
Seminario Scrum
Seminario ScrumSeminario Scrum
Seminario Scrum
 
Enterprise Scrum - Recife Summer School
Enterprise Scrum - Recife Summer SchoolEnterprise Scrum - Recife Summer School
Enterprise Scrum - Recife Summer School
 
Cultura DevOps
Cultura DevOpsCultura DevOps
Cultura DevOps
 
DevOps Anti-Patterns - Campus Party
DevOps Anti-Patterns - Campus PartyDevOps Anti-Patterns - Campus Party
DevOps Anti-Patterns - Campus Party
 
WebCamps Software Testing
WebCamps Software TestingWebCamps Software Testing
WebCamps Software Testing
 
Scrum Na Globo.Com - Estudo de caso
Scrum Na Globo.Com - Estudo de casoScrum Na Globo.Com - Estudo de caso
Scrum Na Globo.Com - Estudo de caso
 
Scrum na Globo.com - Derrubando mitos - UPDATED
Scrum na Globo.com - Derrubando mitos - UPDATEDScrum na Globo.com - Derrubando mitos - UPDATED
Scrum na Globo.com - Derrubando mitos - UPDATED
 

Destaque

A Palavra Merda!
A Palavra Merda!A Palavra Merda!
A Palavra Merda!
Renata Emy
 
Uso do preservativo
Uso do preservativoUso do preservativo
Uso do preservativo
Tânia Sousa
 
Ingles teste 2pdf
Ingles teste 2pdfIngles teste 2pdf
Ingles teste 2pdf
cic
 
Modelo romano parte 1
Modelo romano   parte 1Modelo romano   parte 1
Modelo romano parte 1
cattonia
 
Scrum checklist 2013
Scrum checklist 2013Scrum checklist 2013
Scrum checklist 2013
Hanser Update
 

Destaque (20)

What killed RUP could kill Agile, too
What killed RUP could kill Agile, tooWhat killed RUP could kill Agile, too
What killed RUP could kill Agile, too
 
A Palavra Merda!
A Palavra Merda!A Palavra Merda!
A Palavra Merda!
 
Dossier de Produção Audiovisual
Dossier de Produção AudiovisualDossier de Produção Audiovisual
Dossier de Produção Audiovisual
 
Técnicas para descobrir Mentiras
Técnicas para descobrir MentirasTécnicas para descobrir Mentiras
Técnicas para descobrir Mentiras
 
Uso do preservativo
Uso do preservativoUso do preservativo
Uso do preservativo
 
4. O Modelo Romano - a progressiva extensão da cidadania; a afirmação imperia...
4. O Modelo Romano - a progressiva extensão da cidadania; a afirmação imperia...4. O Modelo Romano - a progressiva extensão da cidadania; a afirmação imperia...
4. O Modelo Romano - a progressiva extensão da cidadania; a afirmação imperia...
 
War Gandalf eigentlich Scrum Master?
War Gandalf eigentlich Scrum Master?War Gandalf eigentlich Scrum Master?
War Gandalf eigentlich Scrum Master?
 
Scrum Poster
Scrum PosterScrum Poster
Scrum Poster
 
Short Scrum Presentation for Teams
Short Scrum Presentation for TeamsShort Scrum Presentation for Teams
Short Scrum Presentation for Teams
 
Anleitung zum Ruinieren eines Scrum Teams
Anleitung zum Ruinieren eines Scrum TeamsAnleitung zum Ruinieren eines Scrum Teams
Anleitung zum Ruinieren eines Scrum Teams
 
Traditionelles Projektmanagement und SCRUM
Traditionelles Projektmanagement und SCRUMTraditionelles Projektmanagement und SCRUM
Traditionelles Projektmanagement und SCRUM
 
Shades of Scrum (Urs Reupke, Stefan Roock), SEACON 2015 in Hamburg
Shades of Scrum (Urs Reupke, Stefan Roock), SEACON 2015 in HamburgShades of Scrum (Urs Reupke, Stefan Roock), SEACON 2015 in Hamburg
Shades of Scrum (Urs Reupke, Stefan Roock), SEACON 2015 in Hamburg
 
Scrum Cheat Sheet (Jan 2012)
Scrum Cheat Sheet (Jan 2012)Scrum Cheat Sheet (Jan 2012)
Scrum Cheat Sheet (Jan 2012)
 
Scrum in der Praxis - Ein Blick hinter die Kulissen von Scrum
Scrum in der Praxis - Ein Blick hinter die Kulissen von ScrumScrum in der Praxis - Ein Blick hinter die Kulissen von Scrum
Scrum in der Praxis - Ein Blick hinter die Kulissen von Scrum
 
Ingles teste 2pdf
Ingles teste 2pdfIngles teste 2pdf
Ingles teste 2pdf
 
Modelo romano parte 1
Modelo romano   parte 1Modelo romano   parte 1
Modelo romano parte 1
 
Testes 8º ano
Testes 8º anoTestes 8º ano
Testes 8º ano
 
Scrum In 15 Minutes
Scrum In 15 MinutesScrum In 15 Minutes
Scrum In 15 Minutes
 
Scrum checklist 2013
Scrum checklist 2013Scrum checklist 2013
Scrum checklist 2013
 
Agile Software Development Overview
Agile Software Development OverviewAgile Software Development Overview
Agile Software Development Overview
 

Semelhante a Merda Acontece

Apresentacao log
Apresentacao logApresentacao log
Apresentacao log
pedrohfsd
 
curso-228532-aula-10-20e2-completo 1..pdf
curso-228532-aula-10-20e2-completo  1..pdfcurso-228532-aula-10-20e2-completo  1..pdf
curso-228532-aula-10-20e2-completo 1..pdf
kassiocarlos
 
Webinar: Oportunidades e requisitos no projeto de hardware para IoT
Webinar: Oportunidades e requisitos no projeto de hardware para IoTWebinar: Oportunidades e requisitos no projeto de hardware para IoT
Webinar: Oportunidades e requisitos no projeto de hardware para IoT
Embarcados
 

Semelhante a Merda Acontece (20)

Apresentacao log
Apresentacao logApresentacao log
Apresentacao log
 
curso-228532-aula-10-20e2-completo 1..pdf
curso-228532-aula-10-20e2-completo  1..pdfcurso-228532-aula-10-20e2-completo  1..pdf
curso-228532-aula-10-20e2-completo 1..pdf
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
 
Macro br
Macro brMacro br
Macro br
 
Debugging node
Debugging nodeDebugging node
Debugging node
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Pessoas Ou Processos
Pessoas Ou ProcessosPessoas Ou Processos
Pessoas Ou Processos
 
Aula2
Aula2Aula2
Aula2
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
 
Webinar: Oportunidades e requisitos no projeto de hardware para IoT
Webinar: Oportunidades e requisitos no projeto de hardware para IoTWebinar: Oportunidades e requisitos no projeto de hardware para IoT
Webinar: Oportunidades e requisitos no projeto de hardware para IoT
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Silberschatz sistemas operacionais
Silberschatz   sistemas operacionaisSilberschatz   sistemas operacionais
Silberschatz sistemas operacionais
 
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
 
Adm sop-unidade1
Adm sop-unidade1Adm sop-unidade1
Adm sop-unidade1
 
Aula 3.1 - Ergonomia
Aula 3.1 - ErgonomiaAula 3.1 - Ergonomia
Aula 3.1 - Ergonomia
 
Introdução a Informatica Basica
Introdução a Informatica BasicaIntrodução a Informatica Basica
Introdução a Informatica Basica
 
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES IORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I
 
Algoritmos com java script
Algoritmos com java scriptAlgoritmos com java script
Algoritmos com java script
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
 
E Books MBV - Livro1
E Books MBV - Livro1E Books MBV - Livro1
E Books MBV - Livro1
 

Mais de Luiz Borba

Mais de Luiz Borba (20)

Novas ferramentas para analise de dados
Novas ferramentas para analise de dadosNovas ferramentas para analise de dados
Novas ferramentas para analise de dados
 
Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...
Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...
Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...
 
Desconstruindo EJB
Desconstruindo EJBDesconstruindo EJB
Desconstruindo EJB
 
Dias do futuro presente da programação
Dias do futuro presente da programaçãoDias do futuro presente da programação
Dias do futuro presente da programação
 
It's the end of design patterns as we know it (and i feel fine)
It's the end of design patterns as we know it (and i feel fine)It's the end of design patterns as we know it (and i feel fine)
It's the end of design patterns as we know it (and i feel fine)
 
O triunfo dos nerds
O triunfo dos nerdsO triunfo dos nerds
O triunfo dos nerds
 
As coisas mudam
As coisas mudamAs coisas mudam
As coisas mudam
 
Build 2013: O que vi por lá
Build 2013: O que vi por láBuild 2013: O que vi por lá
Build 2013: O que vi por lá
 
11 historias e 1 segredo
11 historias e 1 segredo11 historias e 1 segredo
11 historias e 1 segredo
 
Coisas que levei um tempo para aprender
Coisas que levei um tempo para aprenderCoisas que levei um tempo para aprender
Coisas que levei um tempo para aprender
 
O futuro
O futuroO futuro
O futuro
 
Windows 8 a nova corrida do ouro
Windows 8 a nova corrida do ouroWindows 8 a nova corrida do ouro
Windows 8 a nova corrida do ouro
 
Assuntos aleatorios que podem mudar sua vida
Assuntos aleatorios que podem mudar sua vidaAssuntos aleatorios que podem mudar sua vida
Assuntos aleatorios que podem mudar sua vida
 
Startup tools
Startup toolsStartup tools
Startup tools
 
What i dont know about startups
What i dont know about startupsWhat i dont know about startups
What i dont know about startups
 
Todas as coisas que todo programador não pode deixar de saber
Todas as coisas que todo programador não pode deixar de saberTodas as coisas que todo programador não pode deixar de saber
Todas as coisas que todo programador não pode deixar de saber
 
Por que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionaisPor que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionais
 
TDD Direto das Trincheiras versao 2
TDD Direto das Trincheiras versao 2TDD Direto das Trincheiras versao 2
TDD Direto das Trincheiras versao 2
 
TDD direto das trincheiras
TDD direto das trincheirasTDD direto das trincheiras
TDD direto das trincheiras
 
Métricas Em Fabricas De Software
Métricas Em Fabricas De SoftwareMétricas Em Fabricas De Software
Métricas Em Fabricas De Software
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Último (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Merda Acontece