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

Projeto de Ultraaprendizado: De desenvolvedor junior para pleno em um ano.

Sei que esse título parece meio absurdo, eu entendo, mas esse é o desafio que eu estou me propondo a fazer esse ano, tentar me superar e melhorar como desenvolvedor não é uma tarefa fácil, mas tentar alguma coisa e falhar ainda é melhor do que pensar em fazer e nunca tentar.
Existe um ritual japonês chamado “Misogi” que diz o seguinte:

“Misogi é um desafio que consiste em realizar uma atividade que demande grande esforço físico e mental, superando seus próprios limites. O objetivo é superar os próprios limites e se conectar consigo mesmo”

Esse ritual pode ser visto como uma forma de purificação ou de desafio pessoal, o objetivo é que a pessoa realize um grande objetivo de vida no período de um ano e que no meio do processo alcance um entendimento maior de si mesma. (Calma! Eu já vou chegar na parte da programação.)
Eu sou um desenvolvedor majoritariamente backend, eu me formei em 2021 e desde então tenho tido muita dificuldade de encontrar vagas junior que tenham interesse no meu currículo e quando eu consigo encontrar e tenho a oportunidade de fazer uma entrevista descobri que todos os 4 anos em sistema de informação me prepararam apenas com o básico e que as empresas querem um profissional com conhecimento que vai além apenas da grade curricular, não estou apontando todos os dedos para as empresas afinal eu poderia ter pesquisado mais e estudado por conta própria no meu tempo livre as matérias que estavam faltando na grade curricular.

É por isso que após ter lido o livro Ultra Aprendizado do autor Scott H. Young, eu decidi preparar esse material que vou mostrar a seguir com a esperança de tornar o meu perfil mais atraente para os recrutadores e também de receber um feedback de vocês que trabalham na área de coisas que posso melhorar neste material.

O meu objetivo com esse post é divulgar esse pequeno projeto de estudos que estou fazendo e fazer atualizações mensais sobre como está indo o meu progresso e quem sabe motivar algumas pessoas a seguirem a área apesar das dificuldades.

Sem mais delongas aqui está a versão 1.0 do conteúdo que eu vou seguir até o final deste ano.

Objetivo Final:

No final de 1 ano, terei conhecimento e experiência prática equivalentes a um engenheiro de software pleno, pronto para ser contratado por qualquer empresa.

Princípios do Ultralearning Aplicados

Meta-Aprendizado – Pesquisa inicial sobre o que precisa ser aprendido.
Foco – Estudo intenso e sem distrações.
Prática Direta – Trabalhar em projetos reais desde o início.
Prática Intencional – Exercícios direcionados para melhorar pontos fracos.
Recuperação – Aprender ativamente em vez de passivamente.
Feedback Rápido – Receber correções constantes de código e práticas.
Retenção – Revisões espaçadas e aplicação do conhecimento.
Experimentação – Testar novas abordagens e desafios.

Trimestre 1: Fundamentos Sólidos e Primeiros Projetos

Foco: Dominar Java, Spring Boot, banco de dados e DevOps básico
Projetos: CRUD completo, API REST, Integração com Banco de Dados

Mês 1: Java Avançado e Engenharia de Software

Teoria & Prática:
Programação funcional (Streams, Lambdas).
Concorrência e paralelismo (Threads, CompletableFuture).
Design Patterns mais usados (Factory, Singleton, Observer).
Introdução a Arquitetura de Software (MVC, Clean Code, SOLID).
Projeto 1: Criar um sistema de gerenciamento de tarefas com Java puro.
Desafios: Criar testes unitários, aplicar padrões de projeto.

Mês 2: APIs com Spring Boot e Banco de Dados

Teoria & Prática:
Criando APIs RESTful com Spring Boot.
Banco de Dados Relacional (PostgreSQL, MySQL) e ORM (Hibernate).
Transações, Indexação e Otimização de Queries.
Projeto 2: Criar um sistema de agendamento de consultas com API REST.
Desafios: Autenticação JWT, paginar resultados, CRUD otimizado.

Mês 3: Docker, DevOps Básico e Microservices

Teoria & Prática:
Criando contêineres com Docker.
Kubernetes: Introdução e Deploy básico.
Spring Boot com Microservices.
Comunicação entre Microservices (Feign, RabbitMQ, Kafka).
Projeto 3: Criar um sistema de microservices para um e-commerce.
Desafios: Deploy com Docker Compose, circuit breaker com Resilience4J.

Trimestre 2: Arquitetura Avançada e Sistemas Distribuídos

Foco: Microservices, Segurança, Mensageria
Projetos: Aplicações robustas em produção

Mês 4: Segurança e Escalabilidade

Teoria & Prática:
OWASP Top 10 (Prevenção de SQL Injection, XSS, CSRF).
Spring Security + OAuth2 + JWT.
API Gateway e Load Balancing.
Projeto 4: Criar um sistema de autenticação de usuários.
Desafios: Implementar OAuth2, logins sociais (Google, GitHub).

Mês 5: Arquitetura de Software Profunda

Teoria & Prática:
Domain-Driven Design (DDD).
Clean Architecture e Hexagonal Architecture.
Event-Driven Architecture com Kafka.
Projeto 5: Criar um sistema de pagamentos assíncronos.
Desafios: Implementar comunicação via eventos, garantir consistência.

Mês 6: Cloud Computing e Monitoramento

Teoria & Prática:
AWS Lambda, API Gateway, S3, RDS.
Infraestrutura como código (Terraform).
Monitoramento com Prometheus e Grafana.
Projeto 6: Criar um sistema serverless de envio de e-mails.
Desafios: Deploy no AWS, logs detalhados no CloudWatch.

Trimestre 3: Frontend Avançado e Integração Completa

Foco: React, Integração com Backend
Projetos: Aplicações full stack

Mês 7: React Avançado e Gerenciamento de Estado

Teoria & Prática:
Hooks avançados (useReducer, useMemo, useCallback).
Redux e Zustand para gerenciamento global de estado.
Projeto 7: Criar um painel de controle para microservices.
Desafios: Gráficos dinâmicos, integração com backend.

Mês 8: Testes e Qualidade de Código

Teoria & Prática:
TDD e BDD (JUnit, Mockito, Cypress).
Testes de carga (JMeter).
Projeto 8: Criar um sistema de monitoramento de performance.
Desafios: Criar testes unitários, integração e de performance.

Mês 9: Full Stack - Aplicação Completa

Projeto 9: Criar um sistema de reservas estilo Airbnb com React + Spring Boot + AWS.
Desafios: Deploy full, pagamentos com Stripe.

Trimestre 4: Refinamento, Desafios e Projetos Pessoais

Foco: Refinamento e preparação para entrevistas

Mês 10: Desafios e Código de Alta Performance

Teoria & Prática:
Algoritmos e Estruturas de Dados (Leetcode, Codeforces).
Performance tuning em Java e SQL.
Projeto 10: Criar um sistema de recomendação de produtos.
Desafios: Criar queries SQL performáticas.

Mês 11: Preparação para o Mercado

Desafios: Simulações de entrevistas técnicas, criação de um case para apresentar a recrutadores.

Resultado Final

Após 1 ano, terei:
Experiência prática com 12 projetos robustos.
Domínio de Java, Spring Boot, Arquitetura, DevOps e Frontend.
Perfil atrativo para empresas, pronto para se tornar um Engenheiro de Software Pleno.

Esse foi o meu primeiro post, desculpe se fui muito prolixo ou se o post não estiver no padrão da comunidade.

Carregando publicação patrocinada...
2

Esses títulos tem pouca serventia e não é o que a maioria imagina, inclusive porque cada empresa entende de forma diferente. Veja mais em https://www.tabnews.com.br/maniero/faq-do-programador-perdidao.

Mas uma das coisas que eu percebo que mais é usado é sobre a experiência que a pessia tem, não o que ela sabe. Por isso, por mais louvável que seja essr planejamento e ainda que a execução seja muito boa, isso não faz alguém ser pleno.

Mais ainda, boa parte dessas coisas a maioria dos sêniores não sabem fazer, até porque muitas dessas coisas só são úteis em alguns projetos muito específicos.

Eu sempre rio muito quando alguém diz que vai aprender mexer com microsserviços sozinho, que vai tentar fazer um para aprender. Mostra o quanto a pessoa não tem noção do que seja isso, que problema ele resolve, do tamanho da complexidade, e a desnecessidade dele. Um dia farei um vídeo/postagem falando mais sobre isso, mas já escrevi algumas coisas pela internet.

De qualquer forma para aprender metade dessas coisas em 1 ano será tudo absolutamente superficial, então derrotará o objetivo de se tornar pleno, estará fazendo exatamente o contrário.

A falta de vcagas que muitos reclamam é justamente porque o processo de aprendizagem das pessoas está errado.

Mas desejo sorte, só quis dar minha contribuição mais realista, principalmente para as pessoas que vão ler aqui.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).

1

Olha man, por mais q isso pareça ser legal e vc parece estar bem motivado, acho q seu plano não dará certo. Só pra deixar claro, não estou querendo te desanimar, é q sou bem realista e não gosto de mentir ou passar a mão na cabeça das pessoas motivando falsamente por algo q a chance de falhar é qse 100%.

Bom, deixa explicar. Primeiro que desenvolver software, além das soft skill, ela é uma hard skill totalmente intelectual, ou seja, exige puramente do seu cérebro. Se vc não está acostumado a ler muito, ou não está acostumado a ficar mto tempo programando direto, pode dizer q a chance de falhar é alta, pois gravar informações novas no cérebro demanda mta energia e atenção.
Pra ver como está sua situação, faz uma consulta com seu passado mais recente. Teve algum dia q vc durou mais q 4h só raciocinando sem parar? Tipo, vc já conseguiu ficar direto estudando ou programando por mto tempo? Ou até ler um livro técnico e entender qse tudo do q leu em pouco tempo? E lembrou do assunto depois de 1 ou 2 semanas?
O motivo de estar falando isso é pq se sua mente nunca teve esse tipo de exercício mental, ele até dará certo no início, mas irá começar a falhar em alguns dias e pior, pode espalhar o problema pro resto do corpo, tipo cansaço, sonolência e outras coisas. Por mais q pareça legal o misogi, se vc não fazer isso gradualmente, a queda é alta. Lembre q somos seres vivos e nosso corpo tem limite. Tipo, um exemplo físico. Se vc nunca passou de 50kg e tentar carregar 100kg, por mais q vc tente carregar 100kg várias vezes, não vai conseguir. O msm acontecerá com cérebro, tentando guardar mtas informações em pouco tempo.

Mas eu vou deixar as minhas recomendações do que eu faria se fizesse isso. Primeiro eu pelo menos cortaria pela metade o q vc quer aprender. Nem um sênior normal sabe de tudo isso. Talvez algumas coisas vc pode mais colocar como uma leitura extra de como funciona, ou até pegar um desses projetos q vc quer fazer e procurar por códigos similares e tentar entender. Leitura de código é um bom exercício tbm.

Outra coisa é vc deixar o material de estudo preparado antes de iniciar o estudo em si.
A tendência é q se vc for estudar por demanda, existe uma alta chance de acumular coisas não planejadas ali. Por exemplo, achar q irá estudar TDD em 1 semana, mas durar 2 semanas pq não planejou direito o q tinha q estudar.
Então já organize por partes q for estudar. Tipo, no início do mês já começa a pesquisar e separe por partes o q vc irá ver em cada dia. E SEMPRE deixe dias extras, pois sempre irá ter conteúdo q durará mais de 1 dia para ler.

A última coisa q eu recomendo é vc revisar o q vc estudou. O seu estilo é cada mês focar em um grupo de tecnologias e um tipo de projeto. O problema é q a maioria do assunto q aprendeu em 1 mês, vc não irá utilizar nos seguintes. Então o q recomendo desse é vc estuda o conteúdo X no mês 1, ai no final do mês 2 vc pega aquele conteúdo do mês 1 e faça um resumo e adicione no seu portfólio. E faça isso pro mês seguinte. O intuito disso é vc de alguma maneira forçar a revisão do conteúdo anterior para ver o q vc já esqueceu e relembrar.
Claro q o correto seria o contato constante com o conteúdo q aprendeu, pois só assim vc fixa corretamente no cérebro, mas como vc dividiu em etapas com começo e fim bem curtos, então pelo menos adicione revisões para q vc reforce o assunto na memória. De nada adianta vc aprender como programar usando Spring Boot se vc não lembrar na semana seguinte de como iniciar o projeto.

Bom, espero q essas dicas ajude ai de alguma forma. Agora o q posso fazer é te dizer boa sorte e vai fundo na sua empreitada. E se cansar ou desanimar lembre q ninguém é de ferro e descanse um pouco. Descanso faz parte do treino.

1