SlideShare uma empresa Scribd logo
OverEngineering
a linha entre o sucesso e o fracasso
by Daniel Archer
Daniel Archer
Zend Certified PHP 5.5
Análise de Sistemas
Desenvolvedor há 7 anos
Participante PHPRS
#orgulhodeserking
English Speaker
Conférencier Français
Arqueiro nas horas vagas
(duh!)
“Poucas coisas são garantidas que crescerão
eternamente:
● Distância entre as estrelas
● Entropia no universo visível
● As malditas Regras de negócio
“ by Subhas Dandapni
O que é OverEngineering?
Algumas imagens falam mais do que palavras
Over engineering
Over engineering
Over engineering
Over engineering
Over engineering
“Unnecessarily complicated”
by Collins English Dictionary
Imagine um novo projeto...
Over engineering
Imaginou?...
Agora pense em poder usar:
● todas as técnicas que aprendeu
● configurar todos os eventos já no início
● prever os futuros gatilhos que o cliente
solicitou no meio do projeto passado
Over engineering
“Premature optimization is the root of all
evil.” by Donald Knuth
Foca no Problema!
Alguns erros comuns… que já passamos
ainda
● Lógicas de negócio, reusáveis
○ Ex: uma grande classe de CRUD BaseModel contendo
diversas lógicas e fluxos distintos.
○ Prefira isolar Actions do que agrupá-las em grandes
“BaseActions”
Over engineering
Over engineering
● Classes Genéricas
○ Ex: Tentar abstrair todo pedaço de código
○ Às vezes é melhor duplicar do que abstrair de forma errada
Over engineering
Over engineering
● Qualidade Excessiva
○ Ex: DesignPatterns e tipagem excessiva por todo o código
○ Procure olhar o software como um todo
Over engineering
● Not-Invented-Here
○ Ex: Códigos criados dentro de Casa, reescrever bibliotecas
como CMS, template, cache, config e etc...
○ Reuse, Contribua, Reconsidere
○ Proudly-found-elsewhere
Over engineering
● ...lidade
○ Ex: Escalabilidade, Configurabilidade, Mantenabilidade
○ Muitas vezes adicionamos uma camada extra de
complexidade, apenas para: talvez ser usada no futuro... 1x.
Escrever software não é fácil
mas não deve ser um tormento...
A dica de ouro é:
“Escreva código para ser deletado”.
Mas por quê?
Toda linha de código vem com um preço:
manutenção!
Não crie dependências desnecessárias.
“It's not a problem until it's a problem.”
4 Dicas para melhorar a simplicidade do seu
código
1. Não escreva código
Toda linha de código que não tem um motivo
para estar ali, é tempo gasto.
Over engineering
[Assim Não]
2. Copie e Cole
Não tem problema copiar algumas poucas
vezes, para não adicionar complexidade.
Over engineering
3. Escreva um monte de lixo
Às vezes, precisamos criar a ideia completa e
funcional para depois, sim, entender e
compreender o quê foi feito
4. Quebre seu código em pedaços
Uma vez feito, separe o quê realmente é
lógica de negócio e isole o necessário.
A dura realidade é que:
O cliente é mais importante que o
desenvolvedor
Saímos do modelo cascata, para o modelo
ágil, justamente para entregar softwares
funcionais em menos tempo de acordo com a
necessidade do cliente.
Funcionalidade é mais importante que
flexibilidade
Over engineering
O segredo está em balancear técnicas de
flexibilidade e entrega de código funcional
Continue programando… todos os dias
K.
I.
S.
S.
K.eep
I.
S.
S.
K.eep
I.t
S.
S.
K.eep
I.t
S.imple
S.
K.eep
I.t
S.imple
S.tudent
kingho.st/daniel-archer
Palestra sobre Frameworks e Microframeworks
Bibliografias
1. https://programmingisterrible.com/post/139222674273/write-code-that-is-easy-to-d
elete-not-easy-to
2. http://productdesignmanagement.com/over-engineering/
3. https://www.vinta.com.br/blog/2017/case-against-over-engineering/
4. https://medium.com/@rdsubhas/10-modern-software-engineering-mistakes-bc67fb
ef4fc8
5. http://www.codesimplicity.com/post/what-is-overengineering/
6. http://www2.lsd.ufcg.edu.br/~nazareno/ensino/si1/16.OverEngineering.pdf
7. https://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/
8. https://www.martinfowler.com/articles/designDead.html

Mais conteúdo relacionado

PPT
Seja Um Programador Pragmatico
PDF
O Programador Pragmático
PDF
O programador pragmático
PDF
Test First, TDD e outros Bichos
PDF
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
PDF
Programação Orientada a Gambiarra
PPTX
#Moving br workshop
PPTX
Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio atravé...
Seja Um Programador Pragmatico
O Programador Pragmático
O programador pragmático
Test First, TDD e outros Bichos
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
Programação Orientada a Gambiarra
#Moving br workshop
Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio atravé...

Mais procurados (18)

PDF
Treinamento TDD - Atech
PDF
SETIC Scrum & XP
PPTX
Hackathon Inmetrics e Fiap: Construindo um MVP (Minimum Viable Product)
PDF
Não deixe seu projeto só nas mãos do framework
PDF
Introdução ao TDD nas soluções Global AppCasting
PDF
BDD em Ação - Testadores 2015
PPT
Introdução a BDD
KEY
Greenbar - Testes automatizados na sua empresa
PPTX
Extreme Programming
PDF
Os desafios no uso de XP e SCRUM no dia-a-dia
PDF
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
PDF
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
PDF
Engenharia Ágil
PPTX
BDD e TDD na prática com SpecFlow e Visual Studio 2012
PDF
BDD em Ação
PDF
Boas práticas no desenvolvimento de software através do uso de TDD
PDF
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
Treinamento TDD - Atech
SETIC Scrum & XP
Hackathon Inmetrics e Fiap: Construindo um MVP (Minimum Viable Product)
Não deixe seu projeto só nas mãos do framework
Introdução ao TDD nas soluções Global AppCasting
BDD em Ação - Testadores 2015
Introdução a BDD
Greenbar - Testes automatizados na sua empresa
Extreme Programming
Os desafios no uso de XP e SCRUM no dia-a-dia
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
Engenharia Ágil
BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD em Ação
Boas práticas no desenvolvimento de software através do uso de TDD
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
Anúncio

Semelhante a Over engineering (20)

PDF
Generalização prematura e complexidade acidental, a raiz do mal de todo software
PPT
Mitos do Desenvolvimento de Software
PPTX
Generalização prematura e complexidade acidental, a raiz do mal de todo software
KEY
Implementing lean software development
PPTX
Clean code - Qualidade em desenvolvimento de Software
PPTX
XP - Extreme Programming
PDF
Muita gestão e pouca engenharia, por onde anda o XP?
PDF
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
PPTX
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
PPT
Padrões Web & Code Standard
PDF
Clean Code na prática
PPTX
Domain Driven Design
PDF
Palestra Scrum Gathering 2017
PDF
Extreme programming (xp)
PPTX
Seu código fede e você nem sabia
PPTX
Seu codigo fede e voce nem sabia - 2020
PDF
Extreme Programming
PDF
Fisl 16 - Proteja sua aplicação de você mesmo
PDF
Domain Driven Design - Uma introdução
PPT
Introdução ao XP
Generalização prematura e complexidade acidental, a raiz do mal de todo software
Mitos do Desenvolvimento de Software
Generalização prematura e complexidade acidental, a raiz do mal de todo software
Implementing lean software development
Clean code - Qualidade em desenvolvimento de Software
XP - Extreme Programming
Muita gestão e pouca engenharia, por onde anda o XP?
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Padrões Web & Code Standard
Clean Code na prática
Domain Driven Design
Palestra Scrum Gathering 2017
Extreme programming (xp)
Seu código fede e você nem sabia
Seu codigo fede e voce nem sabia - 2020
Extreme Programming
Fisl 16 - Proteja sua aplicação de você mesmo
Domain Driven Design - Uma introdução
Introdução ao XP
Anúncio

Mais de Daniel Archer Marques Cramer (11)

PDF
Filas e mensageria com RabbitMQ
PDF
Monitorando aplicações com Prometheus
PDF
Frameworks e microframeworks php - conexão kinghost
PDF
Case Kinghost + Elasticsearch
PDF
Aplicando SOLID com PHP7
PDF
Refatorar é preciso! 2.0
PDF
PPTX
PHP 7 - A Maioridade do PHP
PPTX
PHP Além da universidade
PDF
Refatorar é preciso. Palestra TDC 2014
PPTX
PHP Tools for Fast coding
Filas e mensageria com RabbitMQ
Monitorando aplicações com Prometheus
Frameworks e microframeworks php - conexão kinghost
Case Kinghost + Elasticsearch
Aplicando SOLID com PHP7
Refatorar é preciso! 2.0
PHP 7 - A Maioridade do PHP
PHP Além da universidade
Refatorar é preciso. Palestra TDC 2014
PHP Tools for Fast coding

Último (7)

PPTX
Curso de Windows 11 resumido na prática.pptx
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
PDF
Dos requisitos ao código: como criar código rastreável em PHP
PDF
Evolução em código: algoritmos genéticos com PHP
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PPTX
Mapeamento de Objeto para Tabela Relacional
PDF
apresentacao introducao computacao ead.pdf
Curso de Windows 11 resumido na prática.pptx
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Dos requisitos ao código: como criar código rastreável em PHP
Evolução em código: algoritmos genéticos com PHP
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Mapeamento de Objeto para Tabela Relacional
apresentacao introducao computacao ead.pdf

Over engineering