Me mostra o norte, please?

Comecei a estudar programação depois que, por acidente, no YouTube, encontrei um vídeo do Deschamps falando sobre cursos gratuitos para começar a aprender a programar. Me matriculei numa escola técnica de informática porque eu tinha apenas conhecimento fundamental sobre computadores. Fiz o CS50 com muita dificuldade, mas sem desistir, com a mentalidade bem firme que aprendi num outro vídeo do Filipe. Agora estou me sentindo muito perdido porque não consigo escolher um projeto para concluir o CS50. Alguém poderia me dar alguma ideia, por favor? Quando vejo sugestões de projetos no YouTube, tenho a sensação de que são projetos ou muito simples ou tão complexos que eu nem consigo entender.

Além disso, tenho o pensamento de que eu poderia apresentar o mesmo projeto, tanto na conclusão do CS50, quanto na finalização do curso de técnico em informática. É errado "aproveitar" projeto?

Salve!

Man, parabéns pela garra no começo dessa jornada! O problema que vc está enfrentando está dentor de um tema muito foda dentro da pedagogia: é "muito fácil" resolver um problema que já é dado com começo e fim - mas, na hora em que vc tem toda a liberdade do Universo pra escolher o problema, a história ganha uma outra cara.

Eu acho a ideia do @murilomac1991 válida no ponto de fazer algo útil, mas vou apontar pra uma outra direção. E aí vc segue o caminho que mais ressoar contigo.

Nesse projeto, vc vai gastar algumas horas com o tema que vc escolher trabalhar. Pensa que é como se vc "chamasse seu tema pra um jantar" e aí vcs vão passar um tempo evoluindo juntos.

Existe algum tema que te deixa intrigado? Tratamento de imagem? Segurança de sistemas? Análise de dados? Tira uma horinha pra dar uma olhada em projetos que oturas pessoas fizeram (no reddit, no Youtube, etc...). Se vc quiser um exercício com começo e fim, começa com a meta de "assistir 5 projetos", e a partir daí vc já tem mais substrato pra continuar.

A ideia do "projeto final" é a jornada, e não o destino. Ao longo da aventura, vc vai perceber que foi coletando ferramentas e descobrindo referências que vão fazer parte do seu arsenal no futuro. É quase como um jogo, em que vc vai acumulando itens cada vez mais poderosos e enfrentando inimigos cada vez mais fortes.

Eu pensaria em tentar resolver um problema prático seu ou de algum conhecido. O problema não pode ser muito complexo, pois você pode ficar preso em algum problema prático ao invés de aprender sobre as ferramentas que você está pensando. Se você resolver fazer um IA que prevê o tempo, você vai ficar bastante tempo aprendendo sobre IA e previsão do tempo (que são tópicos muito complexos), ao invés de se aprofundar nas ferramentas que acabou de aprender.

Nesse site aqui você pode ver outros projetos finais dos seus colegas do CS50 para se inspirar: https://cs50.harvard.edu/x/2023/gallery/

Eu acredito que você tenha feito o projeto Finance, então eu tentaria aprender mais sobre Flask, Python e SQL para consolidar seu conhecimento, ao invés de pular para outras ferramentas.

Eu acho errado dar um copiar e colar no mesmo projeto para o CS50 e o seu curso técnico, pois ao invés de aprender a criar dois projetos do zero, você está tentando pegar um atalho que só vai prejudicar a si mesmo, pois você vai ter que passar por essas experiências se quer ser um desenvolvedor. Mas é totalmente ok usar o mesmo conjunto de tecnologias para criar dois projetos bem distintos, vai ser inclusive uma ótima aula de modularizar seu código para possibilitar a reutilização.

Excelentes dicas! Muito obrigado, Eduardo! Você falou exatamente o que está acontecendo comigo: estou considerando aprender ferramentas do zero para cada possível projeto que encontro! Dá a impressão de que não aprendi nada no curso... Ao invés disso, vou aprofundar nas ferramentas que aprendi e encontrar um problema menos complexo. Quanto ao copiar e colar, entendi que não seria mesmo o mais proveitoso, mas é um alívio pensar que posso usar o mesmo conjunto de tecnologias. Vou por aí mesmo! Valeu!

Dica rápida: pense num problema real que você entrenta diariamente, no seu ambiente, ou no seu computador, pense a respeito. Escreva um projeto que resolva esse problema, seja ele grande ou pequeno, talvez você esteja resolvendo o problema de outras pessoas por tabela.

Talvez não seja o que você gostaria de ter lido, mas é um caminho bastante racional para amadurecer a sua relação com engenharia de software. Pensar num problema, entende-lo e implementar uma solução :)

Boa sorte!

Obrigado Murilo! Acabei de perceber que, até pra resolver "probleminha", ainda tenho muito que estudar. É como se na minha caixa de ferramentas ainda não tivesse o material pra fazer esses reparos.

Talvez você devesse escolher um projeto que você considera simples e depois pensar numa nova funcionalidade que deixe ele mais complexo.

Então, se você me der mais informações sobre o que você sabe, posso te dar umas ideias legais, ou também o que você ainda quer aprender.

Tem uma postagem bem legal aqui que é sobre projetos do gitHub, da uma vasculhada em meio aos posts que você vai achar, pessoal com um nível parecido com o seu. E quais projetos eles estão fazendo. Uma outra ideia seria pensar em um projeto que você vá realmente usar, mesmo que for difícil de implementar na prática, vai te dar um gás, e você vai adquirir novos conhecimentos práticos, sabendo o que você sabe, quais os erros comuns, como corrigir esses erros, e usando essa plataforma, conhecer novos programadores! Networking é tudo meu brother!