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