SlideShare uma empresa Scribd logo
1 de 46
Generalização Prematura
e Complexidade Acidental:
A raiz do mal de todo software
Letticia Nicoli
Microsoft MVP
Lucas Teles
Developer at Lambda3
@letticianicoli @lucasteles42
Generalização Prematura
e Complexidade Acidental:
A raiz do mal de todo software
Letticia Nicoli
Microsoft MVP
Lucas Teles
Developer at Lambda3
@letticianicoli @lucasteles42
Somos ótimos em
gerar complexidade.
No Silver Bullet
Complexidade Essencial
● Totalmente ligada ao domínio/negócio.
● Aquilo que não pode ser evitado,
independentemente da sua
experiência, de quais ferramentas você
utiliza ou qual padrão de arquitetura
novo e chamativo você usou para
resolver o problema.
Complexidade Acidental
● Totalmente ligada às decisões que
tomamos.
● Causada pela abordagem escolhida para
resolver o problema:
○ Todas as buzzwords que você não
precisava mas achou que era
necessário.
○ Técnicas e tecnologias (frameworks,
patterns, ambientes operacionais etc)
Não esqueça!
Complexidade
é custo!
Elemar Jr.
Boat Anchor
Cargo Cult
Lasagna Code
Keep It Simple, Stupid
KIS
S
KISS
"Não é a linguagem que faz os programas parecerem simples.
É o programador que faz a linguagem parecer simples!"
Uncle Bob
● Complicações geram confusão, pense na manutenção e fácil entendimento
no futuro.
● Lembre-se: a funcionalidade pode ser complexa mas o seu código não!
Otimização Prematura
"O verdadeiro problema é que programadores gastam muito tempo se preocupando com
eficiência em lugares e momentos errados; otimização prematura é a raiz de todo o mal
(ou pelo menos a maior parte) na programação."
Donald Knuth
Otimização Prematura
● Você precisa de Event Sourcing?
● Você precisa de Micro-serviços?
● Qual valor CQRS vai te trazer agora?
● Vamos usar Dapper por que é mais rápido?
Otimização Prematura
Otimização Prematura
Moral da história: Medir antes de otimizar
Generalização Prematura
● Remover código duplicado é sempre uma boa ideia?
“O propósito da abstração não é sobre ser vago, mas sobre
criar um novo nível de semântica na qual podemos ser
absolutamente precisos.”
Edsger Dijkstra
● Prefira código duplicado a uma abstração errada!
Generalização Prematura
1. O Lucas vê uma duplicação de código.
Generalização Prematura
2. O Lucas extrai a duplicação e
dá um nome.
Com isso cria uma nova abstração.
Um novo método ou talvez até uma nova
classe.
Generalização Prematura
3. O Lucas substitui a duplicação
pela nova abstração.
Ah, o código é perfeito.
O Lucas está feliz.
Generalização Prematura
4. O tempo passa...
Generalização Prematura
5. Um novo requisito aparece para o qual a abstração atual é quase perfeita.
Generalização Prematura
6. Agora a Letticia é encarregada de
implementar esse novo requisito.
Generalização Prematura
7. A Letticia se sente obrigada a manter a abstração existente, é igualzinho, ela
altera o código para receber um parâmetro, e adiciona a lógica para fazer a
coisa de acordo com parâmetro.
O que antes era uma
abstração universal
agora se comporta de
maneira diferente para
casos diferentes.
Generalização Prematura
8. Outra nova exigência chega.
● Chegou outra pessoa no time.
● Outro parâmetro adicional.
● Outra nova condicional.
● Faça um loop até que o código se torne
incompreensível.
Tudo não terás
You Ain't Gonna Need It
YAGN
I
YAGNI
● Somos péssimos em prever o futuro!
● Implemente apenas o que você
realmente vai precisar naquele
momento.
● Reflita: Eu tenho 100% de certeza de
que isso é necessário agora?
YAGNI
● Isso não é DDD
Manifesto Ágil
1. Indivíduos e interações mais que processos e ferramentas
2. Software em funcionamento mais que documentação abrangente
3. Colaboração com o cliente mais que negociação de contratos
4. Responder a mudanças mais que seguir um plano
Software funcional com entrega de valor
é a medida primária de progresso.
Simplicidade: a arte de maximizar a quantidade de
trabalho que não precisou ser feito.
Débito Técnico Dívida Técnica
Refatoração
● Um software não é apenas mais um pedaço de código finalizado e
entregue, se trata de uma solução em constante evolução.
Testes
● Antecipação de problemas
● Faz parte do nosso dia a dia de desenvolvimento.
Não julgar, acreditar que fizeram o melhor que podia com tempo que tinham
Premissa
@letticianicoli @lucasteles42

Mais conteúdo relacionado

Mais procurados

Introdução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingPedro Pereira Martins
 
Contratos de desenvolvimento de software para governo blue pill or red pill?
Contratos de desenvolvimento de software para governo  blue pill or red pill?Contratos de desenvolvimento de software para governo  blue pill or red pill?
Contratos de desenvolvimento de software para governo blue pill or red pill?SEA Tecnologia
 
Testando serviços aws localmente com Localstack e JUnit
Testando serviços aws localmente com Localstack e JUnitTestando serviços aws localmente com Localstack e JUnit
Testando serviços aws localmente com Localstack e JUnitRodrigo Vieira
 
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing Ariane Izac
 
TDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev Team
TDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev TeamTDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev Team
TDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev Teamtdc-globalcode
 
Você já aplicou dev box testing hoje?
Você já aplicou dev box testing hoje?Você já aplicou dev box testing hoje?
Você já aplicou dev box testing hoje?Ariane Izac
 
Agilidade é para desenvolvedores? Semana da Agilidade
Agilidade é para desenvolvedores? Semana da AgilidadeAgilidade é para desenvolvedores? Semana da Agilidade
Agilidade é para desenvolvedores? Semana da AgilidadeWagner Mendes Voltz Fusca
 
TDC2013 - Trilha de Testes - Iterasys - José Correia - Uso de Storyboards e K...
TDC2013 - Trilha de Testes - Iterasys - José Correia - Uso de Storyboards e K...TDC2013 - Trilha de Testes - Iterasys - José Correia - Uso de Storyboards e K...
TDC2013 - Trilha de Testes - Iterasys - José Correia - Uso de Storyboards e K...José Correia
 
10 coisas que não me contaram sobre Testes
10 coisas que não me contaram sobre Testes10 coisas que não me contaram sobre Testes
10 coisas que não me contaram sobre TestesKatiana Maia
 
CONWIP: uma outra opção para restrição do WIP
CONWIP: uma outra opção para restrição do WIP CONWIP: uma outra opção para restrição do WIP
CONWIP: uma outra opção para restrição do WIP Felipe Albuquerque
 
Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasGabriel Schade Cardoso
 
Metodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoMetodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoAchiles Camilo
 
Fisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoFisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoGustavo Neves
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosDionatan default
 

Mais procurados (19)

Introdução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCasting
 
TDD para Java EE
TDD para Java EETDD para Java EE
TDD para Java EE
 
Contratos de desenvolvimento de software para governo blue pill or red pill?
Contratos de desenvolvimento de software para governo  blue pill or red pill?Contratos de desenvolvimento de software para governo  blue pill or red pill?
Contratos de desenvolvimento de software para governo blue pill or red pill?
 
Testando serviços aws localmente com Localstack e JUnit
Testando serviços aws localmente com Localstack e JUnitTestando serviços aws localmente com Localstack e JUnit
Testando serviços aws localmente com Localstack e JUnit
 
Clean code v3
Clean code v3Clean code v3
Clean code v3
 
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
 
TDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev Team
TDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev TeamTDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev Team
TDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev Team
 
Você já aplicou dev box testing hoje?
Você já aplicou dev box testing hoje?Você já aplicou dev box testing hoje?
Você já aplicou dev box testing hoje?
 
Agilidade é para desenvolvedores? Semana da Agilidade
Agilidade é para desenvolvedores? Semana da AgilidadeAgilidade é para desenvolvedores? Semana da Agilidade
Agilidade é para desenvolvedores? Semana da Agilidade
 
TDC2013 - Trilha de Testes - Iterasys - José Correia - Uso de Storyboards e K...
TDC2013 - Trilha de Testes - Iterasys - José Correia - Uso de Storyboards e K...TDC2013 - Trilha de Testes - Iterasys - José Correia - Uso de Storyboards e K...
TDC2013 - Trilha de Testes - Iterasys - José Correia - Uso de Storyboards e K...
 
10 coisas que não me contaram sobre Testes
10 coisas que não me contaram sobre Testes10 coisas que não me contaram sobre Testes
10 coisas que não me contaram sobre Testes
 
CONWIP: uma outra opção para restrição do WIP
CONWIP: uma outra opção para restrição do WIP CONWIP: uma outra opção para restrição do WIP
CONWIP: uma outra opção para restrição do WIP
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
Facetas do desenvolvedor agil
Facetas do desenvolvedor agilFacetas do desenvolvedor agil
Facetas do desenvolvedor agil
 
Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em Libras
 
Qa4 women - Porque qualidade também é coisa de mulher! <3
Qa4 women - Porque qualidade também é coisa de mulher! <3Qa4 women - Porque qualidade também é coisa de mulher! <3
Qa4 women - Porque qualidade também é coisa de mulher! <3
 
Metodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoMetodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introdução
 
Fisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoFisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmo
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
 

Semelhante a Generalização Prematura e Complexidade Acidental: A raiz do mal de todo software

Mitos do Desenvolvimento de Software
Mitos do Desenvolvimento de SoftwareMitos do Desenvolvimento de Software
Mitos do Desenvolvimento de Softwareguest2f8cba
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceCarolina Karklis
 
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
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDJony Ferreira dos Santos
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 
Agile br2011 lucabastos-prog10x-noiteagilcaelum
Agile br2011 lucabastos-prog10x-noiteagilcaelumAgile br2011 lucabastos-prog10x-noiteagilcaelum
Agile br2011 lucabastos-prog10x-noiteagilcaelumLuca Bastos
 
XP Programming
XP ProgrammingXP Programming
XP ProgrammingCJR, UnB
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingMarcelo Láias
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Gabriel Rubens
 
Euquipe, evoluindo como dev
Euquipe, evoluindo como devEuquipe, evoluindo como dev
Euquipe, evoluindo como devAlan Zanatta
 
Xp Metodologias Ageis Para Desenvolvimento De Software
Xp   Metodologias Ageis Para Desenvolvimento De SoftwareXp   Metodologias Ageis Para Desenvolvimento De Software
Xp Metodologias Ageis Para Desenvolvimento De Softwareguest4b8d24
 
Xp Metodologias Ageis Para Desenvolvimento De Software
Xp   Metodologias Ageis Para Desenvolvimento De SoftwareXp   Metodologias Ageis Para Desenvolvimento De Software
Xp Metodologias Ageis Para Desenvolvimento De SoftwareMarcos Cardoso
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Gabriel Rubens
 

Semelhante a Generalização Prematura e Complexidade Acidental: A raiz do mal de todo software (20)

Over engineering
Over engineeringOver engineering
Over engineering
 
Código Limpo
Código LimpoCódigo Limpo
Código Limpo
 
Mitos do Desenvolvimento de Software
Mitos do Desenvolvimento de SoftwareMitos do Desenvolvimento de Software
Mitos do Desenvolvimento de Software
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
 
Extreme programming (xp)
 Extreme programming   (xp) Extreme programming   (xp)
Extreme programming (xp)
 
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?
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Agile br2011 lucabastos-prog10x-noiteagilcaelum
Agile br2011 lucabastos-prog10x-noiteagilcaelumAgile br2011 lucabastos-prog10x-noiteagilcaelum
Agile br2011 lucabastos-prog10x-noiteagilcaelum
 
O programador pragmático
O programador pragmáticoO programador pragmático
O programador pragmático
 
Aula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de Software
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
 
Euquipe, evoluindo como dev
Euquipe, evoluindo como devEuquipe, evoluindo como dev
Euquipe, evoluindo como dev
 
Xp Metodologias Ageis Para Desenvolvimento De Software
Xp   Metodologias Ageis Para Desenvolvimento De SoftwareXp   Metodologias Ageis Para Desenvolvimento De Software
Xp Metodologias Ageis Para Desenvolvimento De Software
 
Xp Metodologias Ageis Para Desenvolvimento De Software
Xp   Metodologias Ageis Para Desenvolvimento De SoftwareXp   Metodologias Ageis Para Desenvolvimento De Software
Xp Metodologias Ageis Para Desenvolvimento De Software
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
 
Developer 0.0 - Tiago Pascoal
Developer 0.0 - Tiago PascoalDeveloper 0.0 - Tiago Pascoal
Developer 0.0 - Tiago Pascoal
 

Mais de Lucas Teles

Type script alem do arroz com feijao
Type script   alem do arroz com feijaoType script   alem do arroz com feijao
Type script alem do arroz com feijaoLucas Teles
 
Conheça ROP - Programação orientada e trilhos​
Conheça ROP - Programação orientada e trilhos​Conheça ROP - Programação orientada e trilhos​
Conheça ROP - Programação orientada e trilhos​Lucas Teles
 
Fabulous - Xamarin.Forms com Elmish
Fabulous - Xamarin.Forms com ElmishFabulous - Xamarin.Forms com Elmish
Fabulous - Xamarin.Forms com ElmishLucas Teles
 
TypeScript - Além do arroz com feijão
TypeScript - Além do arroz com feijãoTypeScript - Além do arroz com feijão
TypeScript - Além do arroz com feijãoLucas Teles
 
Algoritmos genéticos aplicados no problema de roteirização de veículos com ja...
Algoritmos genéticos aplicados no problema de roteirização de veículos com ja...Algoritmos genéticos aplicados no problema de roteirização de veículos com ja...
Algoritmos genéticos aplicados no problema de roteirização de veículos com ja...Lucas Teles
 
Algoritmos genéticos aplicados em problemas de busca de caminho
Algoritmos genéticos aplicados em problemas de busca de caminhoAlgoritmos genéticos aplicados em problemas de busca de caminho
Algoritmos genéticos aplicados em problemas de busca de caminhoLucas Teles
 
Algoritmos geneticos
Algoritmos geneticosAlgoritmos geneticos
Algoritmos geneticosLucas Teles
 
Aplicações serverless com Blazor.pptx
Aplicações serverless com Blazor.pptxAplicações serverless com Blazor.pptx
Aplicações serverless com Blazor.pptxLucas Teles
 
Simplificando componentes com react hooks
Simplificando componentes com react hooksSimplificando componentes com react hooks
Simplificando componentes com react hooksLucas Teles
 
Um melhor frontend com elm
Um melhor frontend com elmUm melhor frontend com elm
Um melhor frontend com elmLucas Teles
 
F# para devs c# tdc
F# para devs c#   tdcF# para devs c#   tdc
F# para devs c# tdcLucas Teles
 
Introducao a azure functions
Introducao a azure functionsIntroducao a azure functions
Introducao a azure functionsLucas Teles
 
Block chain para desenvolvedores
Block chain para desenvolvedoresBlock chain para desenvolvedores
Block chain para desenvolvedoresLucas Teles
 
Elmish com xamarin.forms
Elmish com xamarin.formsElmish com xamarin.forms
Elmish com xamarin.formsLucas Teles
 

Mais de Lucas Teles (17)

Type script alem do arroz com feijao
Type script   alem do arroz com feijaoType script   alem do arroz com feijao
Type script alem do arroz com feijao
 
Conheça ROP - Programação orientada e trilhos​
Conheça ROP - Programação orientada e trilhos​Conheça ROP - Programação orientada e trilhos​
Conheça ROP - Programação orientada e trilhos​
 
Fabulous - Xamarin.Forms com Elmish
Fabulous - Xamarin.Forms com ElmishFabulous - Xamarin.Forms com Elmish
Fabulous - Xamarin.Forms com Elmish
 
TypeScript - Além do arroz com feijão
TypeScript - Além do arroz com feijãoTypeScript - Além do arroz com feijão
TypeScript - Além do arroz com feijão
 
Algoritmos genéticos aplicados no problema de roteirização de veículos com ja...
Algoritmos genéticos aplicados no problema de roteirização de veículos com ja...Algoritmos genéticos aplicados no problema de roteirização de veículos com ja...
Algoritmos genéticos aplicados no problema de roteirização de veículos com ja...
 
Algoritmos genéticos aplicados em problemas de busca de caminho
Algoritmos genéticos aplicados em problemas de busca de caminhoAlgoritmos genéticos aplicados em problemas de busca de caminho
Algoritmos genéticos aplicados em problemas de busca de caminho
 
Algoritmos geneticos
Algoritmos geneticosAlgoritmos geneticos
Algoritmos geneticos
 
Aplicações serverless com Blazor.pptx
Aplicações serverless com Blazor.pptxAplicações serverless com Blazor.pptx
Aplicações serverless com Blazor.pptx
 
Simplificando componentes com react hooks
Simplificando componentes com react hooksSimplificando componentes com react hooks
Simplificando componentes com react hooks
 
Um melhor frontend com elm
Um melhor frontend com elmUm melhor frontend com elm
Um melhor frontend com elm
 
C# 8 e além
C# 8 e alémC# 8 e além
C# 8 e além
 
F# para devs c# tdc
F# para devs c#   tdcF# para devs c#   tdc
F# para devs c# tdc
 
Introducao a azure functions
Introducao a azure functionsIntroducao a azure functions
Introducao a azure functions
 
F# para devs c#
F# para devs c#F# para devs c#
F# para devs c#
 
Block chain para desenvolvedores
Block chain para desenvolvedoresBlock chain para desenvolvedores
Block chain para desenvolvedores
 
Elmish com xamarin.forms
Elmish com xamarin.formsElmish com xamarin.forms
Elmish com xamarin.forms
 
Net - Threads
Net - ThreadsNet - Threads
Net - Threads
 

Generalização Prematura e Complexidade Acidental: A raiz do mal de todo software

Notas do Editor

  1. Adicionar comparacao com regex quebrar em slides o exemplo do cabecudo https://twitter.com/Zorchenhimer/status/1134178911628267520/photo/1
  2. Aquilo que não pode ser evitado, independentemente da sua experiência, quais ferramentas você usa ou qual padrão de arquitetura novo e chamativo você usou para resolver o problema.
  3. todo: colocar elemar sobre: o que é complexidade msm?
  4. Deixar que performance influencie o design do seu código vai produzir resultados bem ruins, como código de difícil manutenção, além de todo o tempo gasto para escrever o código otimizado que te deu 1 nano segundo a cada 10 requisições.
  5. slide de motivos para não se usar microservicos
  6. Ao decidir otimizar uma parte específica do programa, o impacto no programa geral depende muito de quanto tempo realmente é gasto naquela parte específica, nem sempre é claro ao olhar apenas para o código. sem uma análise de desempenho.
  7. Remover ou não código duplicado traz riscos
  8. Remover ou não código duplicado traz riscos
  9. Exemplos? Repositório genérico Camada de aplicação
  10. Você normalmente só precisa do projeto da aplicação e do de testes
  11. aparecer titulo depois
  12. Se ta funcionando nao mexe
  13. Se ta funcionando nao mexe
  14. Desapega