[Desenvolvimento] Simplicidade

Todo mundo quer deixar seu sistema lindo e redondo, usando técnicas super "avançadas" e siglas mágicas que exalam superioridade, como DDD, SOLID, EDA e etc. porém, na realidade é que sua aplicação nem precisa ser "clean", pois se ela for realmente SIMPLES, não importa se o acoplamento está alto, se não tem teste nenhum ou se não usa grandes patterns. Já que a simplicidade de bater o olho e entender o que acontece, te permite alterar e expandir facilmente e claro, arrumar todos esses gaps que existem, mesmo sem uma documentação clara.

Mas afinal, o que é simplicidade? Como posso chegar nesse estado?


Giotto foi um pintor, arquiteto e escultor florentino. No início do século 14, a palavra do domínio de Giotto chegou ao Papa Bento XI na Lombardia. O Papa enviou uma cortesão a Florença para ver quem era esse Giotto, com o objetivo de encomendar algumas pinturas para a Basílica de São Pedro no Vaticano. 

O cortesão viajou para coletar desenhos de outros mestres. Então foi ao estúdio de Giotto e pediu um desenho para levar ao Papa. Giotto pegou uma tela, mergulhou o pincel na tinta vermelha, prendeu o braço ao lado do corpo e fez um círculo perfeito com a mão. A cortesão explicou como Giotto havia desenhado o círculo sem ajuda, e o papa e seus conselheiros perceberam o quanto Giotto superava todos os outros pintores da época.

A prova de Giotto de sua obra-prima foi seu círculo à mão livre. Foi uma forma concisa para ele demonstrar sua enorme habilidade técnica. Observá-lo desenhar o círculo provavelmente parecia fácil, mas sem dúvida levou anos de prática para obter esse tipo de habilidade.
A resposta para essa pergunta é fácil, KISS. Esse princípio maravilhoso que coloca a simplicidade antes de tudo. Lembre-se, que antes de Clean Code vem bom-senso, antes de DDD vem camadas, antes de TDD garanta o happy path (no mínimo), antes de SOLID vem os pilares de OOP, antes de Design Patterns vem convenções e antes de OOP (ou funcional) vem programação procedural.

Como você pode ver, para as coisas funcionarem de maneira simples e que permita qualquer um dar continuidade, não precisa alcançar o estado da arte fazendo com que seu código reflita todas as grandes ideias dos diversos livros no mundo do desenvolvimento. Seguindo essa linha de pensamento, qualquer desenvolvedor, independente de framework, linguagem, paradigma ou nível de experiência, consegue ver e entender o que acontece.

Sempre que começar a codar, pense, um dev de outra área, que usa outra linguagem e que seja iniciante, entenderia o que acontece aqui? Se a resposta for sim, está no caminho certo. Seja consistente nas escolhas e mantenha a simplicidade o máximo possível, faça a sua arquitetura ser evolutiva e só traga complexidade na real necessidade. Abraços!