Pra quem está começando agora os estudos na área de desenvolvimento de software, é muito comum ficar um tanto perdido quanto ao que deve estudar, como deve estudar e com que materiais. Com isso, na maioria das vezes, quando já se tem um entendimento de que só a faculdade não basta, os iniciantes (e eu me incluo nisso) decidem fazer um curso online sobre alguma linguagem específica, no meu caso, JavaScript. A questão é que, após ter terminado o curso e ter começado a estudar por outros métodos, como livros (em destaque aqui), podcasts, vídeos e documentações, eu percebi que não é que os cursos sejam ruins, você só não pode se limitar a eles. Com isso, vou contar um pouco da minha trajetória pessoal nos estudos como exemplo prático da questão levantada.
Sumário
- Início dos meus estudos
- Primeiro grande projeto
- MVP do projeto
- O início real dos meus estudos
- O que devo fazer então?
- E a IA?
- Conclusão
Início dos meus estudos
Meu contato com a programação começou bem cedo, por volta dos meus 12 ou 13 anos, quando comecei a assistir às aulas de Python do grande mestre Gustavo Guanabara. Minha evolução ali ficou limitada a if else e um pouco de arrays, mas eu nunca entendia como que o código saia do editor de código e se transformava em um aplicativo ou site de verdade e também não sabia o que eu precisava aprender para entender. Com o tempo, acabei parando de estudar por conta das demandas da escola e só voltei quando me formei no ensino médio.
Com isso, depois que eu me formei, já certo de que eu queria ser um desenvolvedor (e já entendendo um pouco melhor de como as coisas funcionavam), decidi pagar um curso enquanto eu não entrava na faculdade (entrei no segundo semestre). Muito bem, pesquisei um pouco, vi algumas reviews de alguns cursos e então, escolhi um e comecei a fazer. Era um curso de desenvolvimento web, ele te ensinava JavaScript, CSS e HTML e depois você decidia seguir ou a rota do backend, que foi a que escolhi (com Node.js e Express) ou a do frontend (com React). E então, passei uns 8 meses estudando pelas aulas desse curso. Nesse meio tempo, entrei na faculdade, desenvolvi alguns projetos básicos e finalizei o curso, com uma forte impressão de que eu sabia JavaScript suficientemente bem e tinha os conceitos básicos de Node, mesmo ele não cobrindo assuntos como: prototypes, symbols, closures, etc.
Primeiro grande projeto
Começando o segundo semestre da faculdade, peguei uma disciplina chamada projeto e engenharia de software, que tratava das documentações, metodologias e tudo que envolvia todo o ciclo de vida do projeto. Com isso, decidi começar um projeto real, que iria desde a documentação do escopo do projeto, requisitos, etc, até o deploy e manutenção, um projeto para estudo, em que eu praticaria os conceitos que estava aprendendo na faculdade e backend de verdade. Com isso, decidi fazer um projeto para minha mãe, uma cliente real, com um problema real, que me permitiria construir o projeto enquanto estudava, sem ter uma data de entrega.
Durante a fase inicial do projeto, fiz a parte da documentação, levantamento dos requisitos e coisas do tipo (claramente com muita coisa faltando, já que nunca tinha feito isso antes), consolidando o que o MVP (Produto mínimo viável) tinha que ter.
MVP do projeto
Um sistema de geração de prontuários eletrônicos para atendimentos psicológicos, psicanalíticos e psicopedagógicos. O sistema deve permitir que a profissional cadastre seus clientes no sistema, garantindo o controle e a visibilidade da quantidade de pacientes ativos no momento, e que a profissional crie prontuários novos a cada novo atendimento realizado, os salvando em um histórico no perfil do paciente, para consultas futuras.
Sim, um sistema da área da saúde, um buraco negro de LGPD e normas de segurança que estão sugando a minha alma atualmente - mas isso é assunto pra outros artigos.
Com isso, (ainda pensando que eu já era bom o suficiente em JavaScript) escolhi o framework Next.js pra desenvolver o projeto. Por que eu escolhi esse framework? Boa pergunta, a minha escolha foi baseada em uma pesquisa rápida de frameworks atuais de Node e acabei caindo no Next, um framework fullstack com mais ênfase em frontend que em backend, algo que só fui perceber depois, mostrando que minha pesquisa pra escolha do framework tinha sido péssima (já que eu queria algo com um backend robusto). De todo modo, segui desenvolvendo e estudando, mas em dado momento, algo parecia errado. Eu estava aprendendo os fundamentos de Nextjs, eu entendia o que eu tinha que fazer, mas sempre surgiam dúvidas na minha cabeça. Por que escrever [...array] funciona? O que exatamente esses 3 pontinhos mágicos fazem? De onde vêm esses métodos padrões como array.map() ou array.filter()?
Eu não entendia a fundo como que a linguagem funcionava, eu poderia até construir códigos que faziam o que tinham que fazer, mas me incomodava muito não entender o porque as coisas funcionavam do jeito que funcionavam. Pode ser algo pessoal, mas eu não consigo simplesmente aceitar que algo funciona, sem entender o porque que funciona, e isso eu não aprendi com o curso. Com isso, decidi parar, dar um passo pra trás (ou uns 2 ou 3) e voltar pro JavaScript puro.
O início real dos meus estudos
Então, depois de toda essa saga do projeto, que durou cerca de 2 ou 3 meses até eu perceber que era necessário, voltei a estudar JavaScript. Pedi para o Claude criar algo como um roadmap com todos os fundamentos e conteúdos que eu precisava pra realizar o projeto, junto com materiais de estudo (isso incluiu toda a parte além do JavaScript também, como a parte de banco de dados, git, docker, etc). E foi assim que eu comecei a estudar através do livro Eloquent Javascript, e sinceramente, foi a melhor escolha que eu poderia ter feito. O livro explica tudo de forma bem profunda, mostrando o por que de cada coisa da linguagem ser de tal forma e não apenas dizendo que tal coisa é escrita assim "porque sim".
E talvez alguém possa pensar que não tem o por que de você aprender coisas que são usadas somente em códigos legado, ou entender que na verdade, quase tudo do JavaScript deriva de prototypes, e por isso que você consegue usar métodos padrão, porque cada instância herda os métodos dos prototypes de que são derivados, e é por isso que você não consegue usar aqueles 3 pontinhos mágicos (spread) em um objeto comum da mesma forma que se usa em um array. Isso porque, quando usado em contexto de iteração, o spread precisa que a instância tenha uma propriedade Symbol.iterator, que define como iterar sobre ela (por isso [...array] se expande em array[0], array[1], array[2]...). Isso permite, inclusive, criar seus próprios objetos iteráveis — entre muitas outras coisas que renderiam um artigo inteiro.
Claro, para completos iniciantes que nunca tiveram contato com programação de fato, o conteúdo tratado no livro talvez seja mais difícil de assimilar, tornando mais difícil você começar a programar alguma coisa de verdade. E é por isso que eu jamais tiraria o mérito dos cursos (os bons cursos), que são extremamente didáticos e que podem trazer muito mais incentivo para a pessoa continuar estudando, ao contrário de um livro que em 100 páginas já te coloca pra fazer alguns exercícios que podem ser considerados difíceis para iniciantes.
O que devo fazer então?
Com tudo isso, o que eu posso dizer é, os cursos são ótimos para quem está começando, vão simplificar muitos conceitos e você com poucas aulas já vai conseguir escrever um programinha que faça algo legal (principalmente com JavaScript). Porém, se você realmente quer ser um programador, você vai precisar estudar através de outras formas, e a minha primeira sugestão é ir atrás de um livro da sua linguagem, talvez ele abra a sua mente pra algumas coisas, dando muito mais sentido pro código que você está escrevendo, fixando ainda mais aquilo que você já sabia.
Além disso, é claro, a partir de certo ponto é bom começar a se acostumar a buscar respostas nas documentações oficiais e mesclar todas as formas de aprendizado que você puder.
E a IA?
E por fim, não poderia deixar de citar a IA aqui. Atualmente, surgem muitas perguntas como "Por que eu deveria aprender tudo isso se a IA já vai fazer isso pra mim?", e a minha resposta atualmente é, você não consegue pedir pra IA fazer algo que você nem sabe que existe.
A IA é uma ferramenta excelente, mas ela vai criar soluções baseadas nos dados que ela tem, e muitas vezes, o código que ela vai criar não é o ideal pro seu contexto, mas se você não souber outras formas de fazer aquela mesma coisa, vai acabar deixando passar, resultando em códigos ruins.
Eu digo que essa é a minha resposta atual, porque esse é um dos principais problemas que eu encontrei quando pedia pra IA escrever algum pedaço de código pra mim. Ela fazia algo que funcionava? Sim, mas muitas vezes, tinha alguma outra forma muito melhor de fazer aquilo que ela simplesmente ignorava. Porém, eu ainda estou muito no começo da minha carreira e estudos, então talvez a minha opinião mude com o tempo, tanto com o aumento da minha experiência quanto com o avanço da IA.
Conclusão
Então, respondendo ao título desse artigo, faça os dois, cursos (pagos ou não) são ótimos para quem está iniciando, mas em algum momento você vai precisar estudar de outras formas e a IA não vai substituir a sua capacidade de analisar o contexto pra entender o que você REALMENTE precisa.
Pretendo escrever outros artigos sobre assuntos que estou aprendendo com o Eloquent Javascript e outros falando sobre outras questões de estudo e minhas considerações sobre minha trajetória. Obrigado pela paciência de quem leu até aqui, qualquer sugestão de melhora pode falar!













