O problema do estudante de programação
Vamos lá, você está estudando, estudando, estudando, vendo as aulas em vídeo, até quem sabe em plena sala de aula, mas tu vai pensar no que aprendeu e... Não sabe como formular esse aprendizado para as linhas de código? Parece frustrante como simplesmente é, porém isso é algo que ocorre muitas vezes.
Aqui irei te orientar com várias formas para você praticar, pois uma verdade a ser dita é que programação se aprende realmente na prática. Sabendo onde e como praticar você vai conseguir um aprendizado muito mais aprofundado e interativo entre você e seus estudos.
A eficiência de aprendizado
Existe uma teoria do aprendizado chamada de cone de aprendizagem. Ela reside no quanto você aprende de acordo com a sua modalidade de aprendizado e resumidamente você aprende mais quanto mais pratica do que apenas sendo um mero expectador. Por exemplo, apenas ler um conteúdo te repassa 10% de retenção daquela leitura, mas praticar enquanto estuda tem uma retenção de 80%, o que é uma diferença enorme.
E para agregar é uma questão de estimular a criatividade, isso é, você ter criatividade e experiência para saber como resolver algum problema. Na área de programação isso pesa muito no seu aprendizado, pois você não vai apenas precisar colocar uma estrutura de repetição e é isso. Você vai ter que saber como gerar uma lista que contenha filtros diferentes consultando o banco de dados simultâneamente (e otimizar a query), entende a diferença?
Dito isso, hora de te mostrar maneiras legais de praticar
Formas de praticar
Vou descrever formas das mais simples a até mais avançadas, ou seja, esse artigo pode ser útil para desenvolvedores experientes (até para mim), pois muitas ideias podem escapar da nossa cabeça até por motivos banais, no entanto aqui vou trazer tudo a tona que pode ser útil para você e está em mente aqui.
Ponha no editor de texto o código da vídeo aula
Eu sei que as chances de um leitor vim aqui já sabendo disso são grande, no entanto tem quem não faz isso. Estudante, geralmente os métodos de ensino repassados com programação é visado para você testar na sua máquina, você precisa ao menos digitar para ver a "magia" acontecendo na sua tela, caso contrário você vai acabar realmente absorvendo pouco do conhecimento.
Eu sei que o mais interessante é fazer o próprio código, mas o ato de ao menos copiar o exemplo para aprender a síntaxe, a função, ou até mesmo a framework, é importante para você conseguir voar com suas próprias asas.
Em adição, apenas copiar realmente pode ser insuficiente, portanto uma coisa boa de se fazer é copiar e ao entender o conceito, você modifica aquele código para funcionar de um jeito que você deseje. Isso faz a videoaula, por exemplo, ter mais profundidade no seu aprendizado do que apenas copiando, e claro pelo menos faz o exemplo do curso rodar na sua máquina.
Crie exercícios práticos para a sua prática
Se você teve uma aula de foreach, pense em maneiras de aplicar isso na prática, traga uma enumeração dos alunos de uma sala, ou então dê a cada um desses alunos um conselho diferente dependendo de sua nota, lembrando, na programação o céu é o limite e um programador criativo é importante para a criação de ótimas soluções.
"Amane, e se eu te disser que eu não tenho criatividade para pensar nesses exercícios? Falar é fácil e..."
Calma mano, eu fiz essa página preparada para quem não tiver criatividade desenvolvida para isso, faz parte e eu tenho duas soluções para esse caso. A primeira é bem simples na verdade, sabe o chatGPT? Use-o para o que eu acreditaria ser o uso ideal (não gerar vídeo de gatinho dançando para zerar o hardware do mercado), chega na IA e pede para ela te repassar algum exercício para o seu caso.
As inteligências artificiais foram fortemente treinadas para programar no lugar do desenvolvedor, portanto eles vão ter muito do que repassar para estudantes, seja síntaxes, boas práticas, ou exercícios para reforçar sua prática. A ferramenta está aí, a questão é se vamos utilizar ela bem ou fazer besteira (por sinal muito do que se tem feito com IA é besteira...).
E a segunda solução? Você pode pesquisar por fontes que já tenham exercícios prontos, como por exemplo... Aqui? Pois vou deixar no final algumas sugestões práticas, dê uma olhada pelo índice depois ou leia o artigo até o final.
Dica adicional: Consistência é superior ao ensino
Evite ser uma pessoa que vai estudar uma vez o dia todo para depois ficar dias ou até semanas sem estudar, o cérebro fica mal acostumado assim. É algo um tanto universal isso, se você quer ficar bom em algo não se trata de fazer um treino único que vai te tornar em algo superior, isso não faz sentido.
Quando você começa uma rotina em uma academia, o instrutor vai te passar exercícios que você aguenta fazer naquele momento, mas além disso irá te dar uma rotina, e ele vai desejar que você siga ela consistentemente, e é assim que seu corpo vai entender que precisa ir se construindo através dos treinos.
Eu sei, é frustrante isso, pois serve até para questões de tratamento de situações sensíveis como a própria depressão, então leve esse conselho para a sua vida, você precisa ser mais consistente para manter o domínio de algo, e programação está completamente dentro disso, siga essa consistência não apenas para se tornar um programador, mas pela sua saúde geral.
Faça um projeto
Isso é um conselho um pouco mais avançado, no entanto se teu conhecimento é na base do Java na linha de comando, por exemplo, você ainda pode o seguir. Sim, faça uma mini novel em Java com linha de comando, não precisa ser uma história longa, faça uma interface gráfica com bolinhas andando para lá e para cá (ok, eu já fiz isso, admito, eu tinha hiperfoco em touhou na época).
Lembra do que eu disse? O céu é o limite, então você precisa praticar sua criatividade em fazer algo com os recursos que tem em mente, mas não precisa se limitar apenas a isso, pesquisa por recursos a mais para colocar em prática em um projeto. Quer fazer um e-commerce de teste? Pesquise sobre gateways de pagamento, o ASAAS, por exemplo, tem um ambiente sandbox para simular pagamentos, não precisa fazer pagamentos reais para testar, inclusive isso pode ser algo grandioso para um iniciante querendo um portfólio, pensa nisso.
Por fim, fazendo o seu próprio projeto, além de praticar, você pode expandir seu conhecimento em base da necessidade do seu desafio, e ainda construir o seu próprio portfólio, é um grande ganho que vai te deixar a frente de outros programadores que querem entrar no mercado.
Sim, pode perguntar para a IA também sugestões de projetos, eu deixo.
Plataformas de exercícios
Então, você veio a esse artigo pensando em plataformas de exercícios para você treinar sua programação? Sim, isso existe mesmo. Inclusive pode ser que tenha até maratona de programação na sua faculdade de estudo, bem, as plataformas são pensadas no formato dessas maratonas, elas exigem muito de sua lógica de algoritmos, como a criatividade e agilidade para criar uma solução perfomática o suficiente para os programas que vão ser repassados para você.
Exemplos? Temos a BeeCrowd que é bem famosa, sim, também vai ser uma plataforma bem chata no padrão que essas maratonas exigem que você faça para o exercício sair como ok e não com uma falha, mesmo que pareça que sua resolução está perfeita. Pode parecer chato, mas é bom certa restrição nisso, pois não vai adiantar nada ter o "resultado certo" na maratona para você sair reprovado.
Exercícios propostos
Bem, não sei se essa é a parte que vocês mais esperavam no artigo, mas aqui está, vou deixar alguns exercícios para vocês resolverem em código, vou começar por casos mais simples e ir escalando, e as vezes poderei colocar um extra para dificultar o exercício se comprar a ideia de algo mais desafiador. Faça na sua linguagem alvo de estudo. E sim, interface gráfica para JavaScript seria o navegador de praxe, mas pode usar outras tecnologias ao seu desejo.
Caso o faça e hospedar em um repositório público no Git, não sou contra a ideia de fazer uma postagem no Linkedin apresentando e me marcando (porque também não tem como eu ver sem me avisarem né).
Calculadora
Vamos começar bem simples, faça uma calculadora. É realmente isso, você vai ter que criar o menu para selecionar a operação, que tem que envolver soma, subtração, multiplicação, divisão, potência e raízes.
Extra: Se você achou fácil demais então faz tudo isso em uma interface gráfica fiel a uma calculadora padrão, mas além disso crie um histórico das operações com algum armazenamento local para poder acessar mesmo caso queira usar a calculadora novamente após a fechar.
Mini-Banco
A ideia trata-se de um mini banco, onde você poderá acessar várias contas bancárias, elas vão começar com um valor padrão de mil moedas (não estamos trabalhando com dinheiro real né) e você terá que permitir a transferência de valores para outras contas existentes através de seus códigos de conta.
Extra: Não faça esse sistema ser apenas local, faça um back-end para que esses bancos possam fazer a transferência na rede.
Jogo de Damas
Antes que achem um completo absurdo, eu consegui fazer um jogo de damas no segundo semestre do curso técnico tá? Vai na fé que você consegue dar um jeito.
Extra: Para ser uma experiência mais agradável ao usuário não lide apenas de usar botões e algo tão estático, faça tudo renderizável a 60 FPS travados, confio no seu potencial. (tá, essa parte eu não fiz no segundo semestre do ensino técnico)
Blackjack (21 para os íntimos)
Um jogo de cartas é totalmente possível de se programar (mais fácil que damas tá?), então está aqui o desafio, criar um jogo de 21 funcional, pode ser você contra o dealer, que no caso é a máquina.
Extra: Faça esse jogo funcionar em partidas na rede, não precisa ser algo realmente síncrono mas tem que ser jogável, pelo menos que o usuário receba uma notificação quando for a vez dele.
Agenda
Basicamente é isso, uma agenda simples. Nesse programa você vai permitir que coloque a tarefa respectiva no dia desejado, como também adicionar uma notificação para o usuário no momento marcado para a atividade ser feita.
Extra: A agenda vai ter que trabalhar com backup de dados e funcionar em mais de uma plataforma, por exemplo, se funciona no navegador também vai funcionar como aplicativo Android, ou pode funcionar como aplicativo de celular e como aplicativo desktop.
Faça uma ferramenta de web scraping
Aqui o tema é mais livre pela complexidade da coisa, pois você vai ter que estudar formas de fazer uma raspagem de dados eficientes, como também evitar ferir a LGPD, aumentando a complexidade do exercício, pois vai tratar de uma questão que envolverá bastante estudo sobre bots na internet, sobre leis, éticas e outros fundamentos para a realização da atividade.
Por fim, pratique
Já tem muito apresentado aqui para o seu aprendizado. Siga esses conselhos com consistência e você vai conseguir ser um ótimo profissional no mercado. Por sinal se repercutir bem a sessão de exercícios, poderei expandir isso para uma sessão maior nessa plataforma, e até pensarei em criar um hall da fama com as melhores soluções e as mais criativas.