Simples & fácil

🧠

"A simplicidade é a sofisticação final."

- Leonardo da Vinci.

Guilherme  Siquinelli

Engenheiro front-end

e degustador da boa tecnologia

Precisamos criar sistemas simples

Se quisermos construir bons sistemas

Não confunda

simples

com fácil

Coisas simples

  • Tem um papel
  • Cumprem uma tarefa
  • Tem um objetivo definido
  • Abrangem um conceito

Coisas simples

são focadas

resolvem um problema

simples !== único

Uma interface

Não precisa ter apenas um único método para ser simples.

Não se trata de cardinalidade

Se trata de ser objetiva e poder ser testada

Simples implica

proximidade

perto de ser tocada / entendida

Simplicidade
vs.
Facilidade

Fácil significa

estar presente em nossas skills, ser familiar...

É superestimado

posso fazer isso em 5 minutos...

tudo deve ser feito rapidamente

Não importa se

o resultado será uma grande

💩

...como quase tudo né?

salvo raras exceções

Software de qualidade

exige esforço

Tememos o novo

por isso escolhemos o caminho mais familiar

não evite algo

por ser desconhecido

que por consequência se torna o mais fácil

Sabemos que

o fácil é relativo

o que é fácil pra você

pode ser difícil pra alguém

Muitas vezes dizem que algo é simples

quando querem dizer que é fácil, só por que estão familiarizados

Os atributos de um software

são como ele funciona

  • Ter bom desempenho
  • Resolver o problema proposto
  • Como pode ser alterado com o tempo

e isso não está ligado somente ao código

As pessoas se concentram muito na facilidade com que podem escrever

ou na facilidade com que podem substituir um desenvolvedor por outro

considerando apenas a familiaridade das ferramentas usadas

E esquecem da simplicidade ou complexidade do código

que o novo desenvolvedor precisará lidar

Por que a simplicidade

é importante no desenvolvimento de software?

Pergunte-se

  • O software faz o que deve fazer?
     
  • É de qualidade com eficiencia?
     
  • Podemos confiar nisso?
     
  • Os problemas podem ser corrigidos no caminho?
     
  • Os requisitos podem mudar com o tempo?

Só podemos esperar que algo se torne confiável se as entendermos

Geralmente isso é uma troca...

Ao evoluir um sistema, ele se torna mais extensível e dinâmico

Pode se tornar mais difícil decidir se decisões tomadas no

caminho estão corretas

O entrelaçamento aumenta a complexidade combinatóriamente

E fica pior quando as coisas estão interligadas, porque não se pode raciocinar sobre elas isoladamente.

não conseguimos pensar em muitas coisas ao mesmo tempo.

Manter

Para sermos capazes de mudar um sistema existente, precisamos entendê-lo para decidir como e onde aplicar as mudanças

Sempre tivemos este bug?

Mas passava em todos testes, linters e type checks...

Escrever testes

Não significa que podemos tomar menos cuidado ao escrever software

Complexidade ignorada

Atrasa as pessoas pouco a pouco com o tempo...

Complexidades fáceis também existem.

Código familiar é aquele que usamos em um projeto parecido e poderíamos re-aproveitar no próximo pra entregar mais rápido.

Assim fica fácil né?!

Fácil e geralmente imprevisível...

Simples e fácil

By Gui Seek

Simples e fácil

  • 132