Essa postagem é pra compartilhar pontos interessantes na minha trajetória como desenvolvedor
Tenho dois anos de experiência profissional como desenvolvedor backend com Java. Nesses dois anos trabalhei com projetos bem diferentes:
- 6 meses em um sistema legado em Java 7, JSF, Primefaces e SVN
- 1 ano e 6 meses com microsserviços em Java 21, Spring e git
Trabalhar com um sistema legado me fez ter contato com muitos problemas citados pelo Martin Fowler no seu livro de Refatoração como por exemplo:
- Classes e métodos grandes realizando diversas funções
- Duplicação de código
- Nomes misteriosos
- Lista longa de parâmetros
E por causa disso, eu tinha medo de alterar uma vírgula e o sistema parar de funcionar kkk. Por não ter pra onde correr, já que escolhi como profissão ser um desenvolvedor de software, precisei superar essas inseguranças. E foi através do trabalho desenvolvido em cima desse sistema, que ganhei confiança ao atuar como desenvolvedor e subir modificações em produção.
Como eu ganhei essa segurança testando localmente os caminhos felizes e os edge cases, e resolvendo os eventuais BO's que apareciam. Isso me ajudou a melhorar a qualidade do código e diminuiu consideravelmenteas chances de erros em produção.
Depois disso, comecei a trabalhar com microsserviços... e foi aqui que comecei a aprender sobre desenvolvimento de software na atualidade... tendo contato com tópicos como:
- Versionamento com git, Docker, Kubernetes, AWS, SOLID, Clean Code, testes de software, integração de APIs, Design Patterns
- Mensageria, paralelismo e concorrência
Eu sinto que isso abriu um universo dentro da minha cabeça, porque até então eu só tinha trabalhado com monolitos tanto profissionalmente quanto academicamente.
Ao trabalhar com microsserviços, os prós e contras dele se comparado com os monolitos tornaram-se mais evidentes. Fora que também percebi a importância de gerenciamento de recursos como memória e até mesmo a utilização de logs nos projetos.
Um outro ponto interessante é que existem trechos de códigos que se repetem em todos os projetos. Por exemplo, você quer que seu tratamento de exceção seja padronizado. Então, se o projeto x retornar um código de erro "5x5x5x5" que significa "Dados de excel não encontrado", se o projeto y, retornar esse mesmo código de erro, deve ter o mesmo significado.
Caso você não tire um tempo pra extrair essa duplicação e criar uma “biblioteca interna“, sempre que você alterar esse código em um projeto, você vai ter que alterar em todos os outros projetos e as chances de dar errado são grandes. (problema clássico da duplicação de código)
Se você parar pra pensar, é algo óbvio mas apesar disso, eu só percebi a dimensão do problema depois de ter tido contato na prática rs.
Bom, além do trabalho, estou sempre estudando alguma coisa… Atualmente estou lendo o livro Fundamentos da Arquitetura de Software: uma Abordagem de Engenharia e estou achando bem legal.
Espero terminar de ler até o final do ano. Comprei ele recentemente pela amazon, caso você queira comprar também aqui está meu link de associado https://amzn.to/45xrlAi… caso você compre pelo link, vai estar me ajudando a comprar mais livros e matar minha sede por conhecimento!!!
Fora isso, também estou fazendo meu TCC do curso de ADS do Instituto Federal do Piauí… estou construindo um aplicativo m-health com React Native mas quero dar mais detalhes só quando ele tiver mais encaminhado.
Bom, acho que com essa breve postagem deu pra você conhecer um pouco mais sobre minha pessoa e sobre minha carreira.
E por fim, o objetivo dessas postagens é compartilhar pensamentos e conhecimentos que eu julgar interessante de serem compartilhados. Uma das próximas postagens será sobre uma introdução a mensageria e uma proposta de implementação em Java com RabbitMQ.
Top comments (0)