Aquela sensação estranha quando você sente que é o único que não está evoluindo.
A premissa:
Uma coisa que percebi enquanto estudava é que, quanto mais se estuda, mais você sente a necessidade de estudar conceitos mais abstratos e coisas que complementam o que você está vendo atualmente, e assim você vai empilhando partes de ecossistemas cada vez mais complexos, mas isso nos leva a uma questão:
"Até que ponto de abstração e aprofundamento é necessário para que alguém realmente possa se considerar pronto para as demandas do mercado? Ou que pelo menos possa gerar valor?"
Por exemplo, estou estudando Java atualmente, depois de ter testado durante mais de 1 ano o Python e o básico de Django, pulei pra outra linguagem pois percebi que o ecossistema do Python não era o que desejava para mim. Passei a ter interesse de fazer além do Hello World!
em alguma linguagem mais robusta, fiquei com dúvidas de qual escolher entre Java, C# e afins, felizmente tenho agora uma espécie de roadmap mental de como seguirei a linha de estudos (apenas uma parte do roadmap, a outra metade está uma completa bagunça).
Diversidade de gama de tecnologias:
Nesse processo, me deparei com, além do Spring Boot, a grande quantidade de ferramentas da Apache (como Apache Kafka, Apache Solr, Apache Pig) e alguns frameworks open source. Além disso, existem outros assuntos importantes como Kubernetes, Docker, AWS e bancos de dados relacionais e não relacionais, ainda estou a decidir em que ponto eu devo reforçar meu foco em cada um deles (assim surge a bagunça na minha linha de aprendizado planejada).
Além disso, há a necessidade de se preocupar com a tal base, no caso, algoritmos e estruturas de dados, a essência do pensamento lógico.
É uma aprendizagem constante, tipo, quando eu me sinto um gênio por fazer algo nem tão incrível, a sensação só dura até eu visitar algum outro vídeo do Fábio Akita e relembrar que tudo que eu sei não é nada além da ponta de um Iceberg GIGANTESCO.
Comparativos:
Vejo muita gente com relativamente pouco tempo, mas que ainda assim consegue fazer bastante coisa, gerar valor, resolver problemas. Não sei se isso envolve estudar ignorando buracos, pelo menos no sentido de procrastinar alguma coisa muito importante da base, tipo estudar 2 frameworks sem nem saber o que é um algoritmo BFS, ou o que é o algoritmo de Dijkstra.
Situações assim me lembram do Princípio de Pareto (80/20) que o Akita adaptou para o contexto de um vídeo, a afirmação era de que 20% do conhecimento conseguia resolver 80% dos problemas mais comuns, mas o que te diferenciaria de fato, seriam os 80% de conhecimento que te faria solucionar os outros 20% dos problemas.
pie title Conhecimento para resolver problemas
"80%": 20
"20%": 80
Além de que isso não se aplica apenas a iniciantes, existe gente experiente que de algum jeito conseguiu encerrar uma lista praticamente infindável de coisas diferentes que só aumenta pra cada coisa que se vê.
Conclusão:
Mesmo vendo um monte de pessoas que estão aparentemente avançando muito mais rápido que eu em um tempo muito menor, irei sem tanta pressa, pelo menos no momento eu ainda não preciso estudar sob pressão de ser rápido, e meu foco ainda é aprender e evitar deixar espaços em branco que precisavam ser preenchidos, recomendo que quem pode também o faça.
Mas e então? Quais são os insights de vocês sobre isso?
Se quiser bater um papo posso tentar te dar algumas dicas, segue meu discord saraiva1989
Não vou me alongar muito aqui pois o texto ficaria muito grande, mas o você está no caminho certo mas talvez andando errado.
A base é muito importante, mas para resolver muitos problemas como júnior você não vai utilizar BFS ou Dijkstra. Não estou dizendo para não estudar, mas pode deixar para depois. O próprio AKITA diz que nunca lia um livro de arquitetura de uma vez, lia vários algumas paginas e depois voltava neles para se aprofundar.
Mas também não pule direto para um framework o biblioteca, estude a base da linguagem. Se vai criar um sistema web, crie usando HTML, CSS e Javascript puro, aprenda como funciona a semântica do HTML. As Sintaxe, Seletores, Medias queries, Pseudo classes do CSS. Elementos de decisão, repetição, classes, objeto, funções do javascript.
Com isso tu já vai conseguir resolver muitos problemas, criar coisas legais, e depois que isso estiver legal ai vejo ir para problemas como o BFS ou Dijkstra.
No back-end tem diversas coisas para aprender também, se quiser bater um papo para eu tentar te orientar me chama no discord.
Mano, vai no seu próprio tempo tlgd, se vc se esforçar muito, uma hora vai acabar se cansando de aprender...