SlideShare uma empresa Scribd logo
REDUZINDO A
COMPLEXIDADE
PORQUE A SIMPLICIDADE É IMPORTANTE
Simplicity is prerequisite for
reliability.
Edsger W. Dijkstra
The competent programmer
is fully aware of the strictly
limited size of his own skull
Edsger W. Dijkstra
DEFINIÇÕES
Simples x Complexo
Fácil x Difícil
SIMPLES
Um conceito
Uma responsabilidade
FÁCIL
npm install left-pad
Faz parte da minha IDE
LIMITES
LIMITES
SÓ POSSO PRODUZIR SOFTWARE CONFIÁVEL SE
EU ENTENDER TODOS OS ASPECTOS DO QUE
ESTOU PRODUZINDO
POSSO CONSIDERAR UM NÚMERO LIMITADO DE
CONCEITOS AO MESMO TEMPO
PARTES INTERDEPENDENTES PRECISAM SER
CONSIDERADAS AO MESMO TEMPO
A COMPLEXIDADE PREJUDICA O ENTENDIMENTO
O teu cérebro é o gargalo
PRODUTIVIDADE
curto prazo
longo prazo
MUDANÇAS
1. NOVAS FEATURES
2. BUGS
3. ATUALIZAÇÕES
4. PERFORMANCE
MUDANÇAS
1. Análise e tomada de decisões
2. Tem que caber na sua cabeça
3. Testes, Tipos, Ferramentas e
Processos não são suficientes
INÉRCIA
SIMPLICIDADE
EXIGE
INVESTIMENTO
npm install spaguetti
1. Values
2. Immutability
3. Functions
4. Composition / Polymorphism
5. Data
6. Declarative Data Manipulation
7. Consistency
8. Pure functions
1. State, Objects
2. Mutability
3. Methods
4. Inheritance
5. Syntax
6. ORM
7. Inconsistency
8. Side Effects
EXPLÍCITO > INPLÍCITO
Você solicita a banana mas
recebe um gorila segurando a
banana e a floresta inteira.
Joe Armstrong
PURE > SIDE EFFECTS
function concat(str1, str2)
{
launchMissiles();
return str1 + str2;
}
function concat(str1, str2)
{
return str1 + str2;
}
DATA IN, DATA OUT CHANGE THE WORLD
CONCLUINDO
TRADE-OFFS
EVERYWHERE
SIMPLICIDADE
É UMA ESCOLHA
1. Seja vigilante
2. Evite entrelaçamento e
interdependências
3. Torne as partes complexas
explícitas
4. Não dependa unicamente de
ferramentas e processos
5. Cuidado com side-effects
SIMPLICIDADE
DÁ RETORNO
1. Facilita o raciocínio
2. Facilita alterações e correções
3. Evita o desperdício e retrabalho
4. Evita o tédio e a fadiga.
5. Profit
OBRIGADO

Mais conteúdo relacionado

Semelhante a Reduzindo complexidade

Desenvolvimento de Software - Escopo, Solução
Desenvolvimento de Software - Escopo, Solução Desenvolvimento de Software - Escopo, Solução
Desenvolvimento de Software - Escopo, Solução
Jonathan Célio
 
Bdd&tdd
Bdd&tddBdd&tdd
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?
Raphael Paiva
 
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de softwareTDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
tdc-globalcode
 
Além do MVP com PHP - TDC POA 2015
Além do MVP com PHP  - TDC POA 2015Além do MVP com PHP  - TDC POA 2015
Além do MVP com PHP - TDC POA 2015
Romeu Mattos
 
além do mvp com php
além do mvp com phpalém do mvp com php
além do mvp com php
tdc-globalcode
 
Além do MVP com PHP - TDC Floripa 2016
Além do MVP com PHP - TDC Floripa 2016Além do MVP com PHP - TDC Floripa 2016
Além do MVP com PHP - TDC Floripa 2016
Romeu Mattos
 

Semelhante a Reduzindo complexidade (7)

Desenvolvimento de Software - Escopo, Solução
Desenvolvimento de Software - Escopo, Solução Desenvolvimento de Software - Escopo, Solução
Desenvolvimento de Software - Escopo, Solução
 
Bdd&tdd
Bdd&tddBdd&tdd
Bdd&tdd
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?
 
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de softwareTDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
 
Além do MVP com PHP - TDC POA 2015
Além do MVP com PHP  - TDC POA 2015Além do MVP com PHP  - TDC POA 2015
Além do MVP com PHP - TDC POA 2015
 
além do mvp com php
além do mvp com phpalém do mvp com php
além do mvp com php
 
Além do MVP com PHP - TDC Floripa 2016
Além do MVP com PHP - TDC Floripa 2016Além do MVP com PHP - TDC Floripa 2016
Além do MVP com PHP - TDC Floripa 2016
 

Mais de Criciúma Dev

Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...
Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...
Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...
Criciúma Dev
 
Como ser um bom dev FrontEnd em 2017
Como ser um bom dev FrontEnd em 2017Como ser um bom dev FrontEnd em 2017
Como ser um bom dev FrontEnd em 2017
Criciúma Dev
 
UX Design para desenvolvedores
UX Design para desenvolvedoresUX Design para desenvolvedores
UX Design para desenvolvedores
Criciúma Dev
 
Escalando aplicações no front-end com ReactJS
Escalando aplicações no front-end com ReactJSEscalando aplicações no front-end com ReactJS
Escalando aplicações no front-end com ReactJS
Criciúma Dev
 
Javascript, porque?
Javascript, porque?Javascript, porque?
Javascript, porque?
Criciúma Dev
 
Aspectos de segurança em bancos de dados para web
Aspectos de segurança em bancos de dados para webAspectos de segurança em bancos de dados para web
Aspectos de segurança em bancos de dados para web
Criciúma Dev
 
Webpack packing it all
Webpack packing it allWebpack packing it all
Webpack packing it all
Criciúma Dev
 
Microserviços na vida real
Microserviços na vida realMicroserviços na vida real
Microserviços na vida real
Criciúma Dev
 
DevOps Culture: Como implementar métodos ágeis em infraestrutura como código
DevOps Culture: Como implementar métodos ágeis em infraestrutura como códigoDevOps Culture: Como implementar métodos ágeis em infraestrutura como código
DevOps Culture: Como implementar métodos ágeis em infraestrutura como código
Criciúma Dev
 
CSS {Grid} Layout: It's evolution baby
CSS {Grid} Layout: It's evolution babyCSS {Grid} Layout: It's evolution baby
CSS {Grid} Layout: It's evolution baby
Criciúma Dev
 
Simplificando UX e Códigos para Conteúdos Complexos
Simplificando UX e Códigos para Conteúdos ComplexosSimplificando UX e Códigos para Conteúdos Complexos
Simplificando UX e Códigos para Conteúdos Complexos
Criciúma Dev
 
Metodologias interativas
Metodologias interativasMetodologias interativas
Metodologias interativas
Criciúma Dev
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Criciúma Dev
 
Venha para o lado livre da força. O que você pode fazer pelo software livre e...
Venha para o lado livre da força. O que você pode fazer pelo software livre e...Venha para o lado livre da força. O que você pode fazer pelo software livre e...
Venha para o lado livre da força. O que você pode fazer pelo software livre e...
Criciúma Dev
 
Começando na área de desenvolvimento mobile. O que preciso saber?
Começando na área de desenvolvimento mobile. O que preciso saber?Começando na área de desenvolvimento mobile. O que preciso saber?
Começando na área de desenvolvimento mobile. O que preciso saber?
Criciúma Dev
 

Mais de Criciúma Dev (15)

Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...
Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...
Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...
 
Como ser um bom dev FrontEnd em 2017
Como ser um bom dev FrontEnd em 2017Como ser um bom dev FrontEnd em 2017
Como ser um bom dev FrontEnd em 2017
 
UX Design para desenvolvedores
UX Design para desenvolvedoresUX Design para desenvolvedores
UX Design para desenvolvedores
 
Escalando aplicações no front-end com ReactJS
Escalando aplicações no front-end com ReactJSEscalando aplicações no front-end com ReactJS
Escalando aplicações no front-end com ReactJS
 
Javascript, porque?
Javascript, porque?Javascript, porque?
Javascript, porque?
 
Aspectos de segurança em bancos de dados para web
Aspectos de segurança em bancos de dados para webAspectos de segurança em bancos de dados para web
Aspectos de segurança em bancos de dados para web
 
Webpack packing it all
Webpack packing it allWebpack packing it all
Webpack packing it all
 
Microserviços na vida real
Microserviços na vida realMicroserviços na vida real
Microserviços na vida real
 
DevOps Culture: Como implementar métodos ágeis em infraestrutura como código
DevOps Culture: Como implementar métodos ágeis em infraestrutura como códigoDevOps Culture: Como implementar métodos ágeis em infraestrutura como código
DevOps Culture: Como implementar métodos ágeis em infraestrutura como código
 
CSS {Grid} Layout: It's evolution baby
CSS {Grid} Layout: It's evolution babyCSS {Grid} Layout: It's evolution baby
CSS {Grid} Layout: It's evolution baby
 
Simplificando UX e Códigos para Conteúdos Complexos
Simplificando UX e Códigos para Conteúdos ComplexosSimplificando UX e Códigos para Conteúdos Complexos
Simplificando UX e Códigos para Conteúdos Complexos
 
Metodologias interativas
Metodologias interativasMetodologias interativas
Metodologias interativas
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
 
Venha para o lado livre da força. O que você pode fazer pelo software livre e...
Venha para o lado livre da força. O que você pode fazer pelo software livre e...Venha para o lado livre da força. O que você pode fazer pelo software livre e...
Venha para o lado livre da força. O que você pode fazer pelo software livre e...
 
Começando na área de desenvolvimento mobile. O que preciso saber?
Começando na área de desenvolvimento mobile. O que preciso saber?Começando na área de desenvolvimento mobile. O que preciso saber?
Começando na área de desenvolvimento mobile. O que preciso saber?
 

Último

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
2m Assessoria
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 

Último (10)

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 

Reduzindo complexidade