Executando verificação de segurança...
7

90 dias documentando a busca por um emprego - Dia 01: Criei um pequeno monstro

Criei um pequeno monstro, com direito a monólito distribuído e tudo.
O que eu achava que seria um projeto para servir como vitrine e me vender como desenvolvedor acabou se tornando algo desorganizado e inchado.
Mesmo assim, consegui aprender bastante com ele. Abaixo, listo 4 coisas que aprendi e que levarei para o resto dos projetos que eu criar.

1) O planejamento é fundamental

Eu costumava iniciar qualquer projeto no automático, abrindo o editor e deixando a imaginação fluir.
Esse mini projeto me mostrou, na prática, como isso pode gerar problemas lá na frente.
Quando iniciei o projeto, a ideia era ser apenas um e-commerce simples, mas acabei me empolgando e fui adicionando várias ideias. Conforme o projeto foi crescendo, outros problemas começaram a aparecer, a ponto de eu cogitar apagar tudo e começar do zero. Afinal, sempre parece mais fácil começar tudo do zero, certo?

2) Testes como alicerces

Minha pergunta era: como garanto que tudo o que construí está realmente funcionando?
E, se depois de algum tempo eu mudar algo, como vou saber onde quebrou? A partir disso, decidi estudar um pouco sobre testes, e esse foi um dos meus poucos acertos: a criação de testes automatizados cedo, o que me garantiu maior flexibilidade e me permitiu deixar a imaginação voar ainda mais.

Com isso, consegui implementar diferentes “arquiteturas” sem medo.

Mas, como nem tudo são flores, em um desses estudos li sobre taxa de cobertura de testes e, de lá pra cá, foi ladeira abaixo. Comecei a criar testes apenas para aumentar a cobertura, o que deu completamente errado e se mostrou inviável de manter a longo prazo. Imagina fazer uma pequena alteração e ter que atualizar todos os testes envolvidos. Foi aí que entendi que nem sempre um software precisa ter uma alta taxa de cobertura.

Conforme eu ia escrevendo os testes, mais perguntas iam aparecendo. Coisas do tipo: e se o banco de dados der um erro, o que acontece com a minha plataforma? A partir disso, aprendi um pouco sobre bad path e passei a escrever não apenas testes para quando tudo funcionava como planejado, mas também para quando algo dava errado.

Estudar sobre testes me deu outra perspectiva sobre desenvolvimento e hoje isso já faz parte da minha rotina: escrever algo pensando em como vou testar aquilo.

3) Criar algo pensando no futuro pode não ser uma boa ideia

Você começa a codar todo animado e acaba perdendo horas criando coisas que talvez nem vá usar.
No meu caso, tentei antecipar problemas que ainda nem existiam, criando estruturas e abstrações “para o futuro”.

Com o tempo, percebi que muitas dessas decisões nunca chegaram a ser usadas e só deixaram o código mais complexo.
Em vez de resolver o problema atual, eu estava tentando adivinhar o próximo.

Esse projeto me ensinou que, muitas vezes, é melhor resolver bem o problema de agora e deixar o código simples,
do que tentar prever todos os cenários futuros e acabar travando a evolução do projeto.

4) O primeiro bug em produção a gente nunca esquece

Nesse ponto, percebi como a falta de planejamento se tornou uma bola de neve. Um pequeno erro me custou horas, e eu cheguei a dormir pensando onde estava o problema.

No fim, era algo bobo: eu não tinha atualizado o banco de dados da nuvem para ficar igual ao ambiente local. Se eu tivesse planejado melhor toda a estrutura do banco de dados, esse problema provavelmente não teria acontecido.

Bom, na verdade, pra mim é bem difícil conseguir colocar este projeto aqui na comunidade. Sou bem perfeccionista e cheguei a pensar em refatorar tudo antes de postar, coisa que provavelmente nunca faria, porque acabaria deixando para amanhã, depois de amanhã…

Pra se ter ideia, há 9 dias tive a ideia de compartilhar minha jornada, mas só agora consegui começar. Decidi que é hora de tomar vergonha na cara e que, ao criar algo público, talvez eu finalmente consiga concluir um dos projetos que já venho postergando há tempos.

Caso alguém queira dar uma olhada no código ou deixar algum feedback, deixo o link do repositório abaixo.
Repositorio GitHub

Carregando publicação patrocinada...
2