muito se fala sobre ter "a base" para programar, mas o que isso quer dizer? na maioria das vezes, quer dizer ter uma boa lógica e saber técnicas que podem ser aplicadas em qualquer linguagem de programação
não posso ensinar vocês a terem uma boa lógica com uma thread, mas posso dizer o que ajuda: prática. façam muitos exercícios de programação, do simples ao avançado. recomendo sites como o beecrowd e o hackerrank para isso
as técnicas são mais fáceis porque eu posso listar as principais. são elas:
entrada e saída de dados
variáveis e tipos de dados
loops (repetição)
condicionais
funções (modularização)
estruturas de dados
arquivos e includes
orientação a objetos*
*nem toda linguagem tem suporte à orientação a objetos, mas as que a maioria começa tem
2. aprenda uma linguagem de programação programando
tentar aprender todas as coisas que eu listei e depois só começar a programar é pouco produtivo, pois tu vai esquecer de muita coisa ou não vai saber aplicar ela direito
por isso, recomendo que comece com programas simples, usando algumas coisas da lista apenas, pra depois ir incrementando e fazendo coisas maiores. não tentem fazer um site inteiro logo de primeira
3. entenda, pelo menos um pouco, de como um computador funciona e interpreta instruções
parece desnecessário mas é muito importante para fazer algoritmos melhores. não estou dizendo pra ir correndo aprender assembly, só pra buscar se informar sobre o assunto no geral
recomendo a playlist do crash course computer science, tem no youtube, mas não tenho certeza se tem legenda em português. o que nos leva a...
4. aprenda a ler em inglês
sim, existe material em português, mas tem MUITO mais coisa em inglês (e as vezes, se for algo mais específico, não vai haver conteúdo em português. acontece mais com erros pontuais)
5. aprenda a usar o google da forma certa
ele pode ser usado para buscar por documentações, exemplos, solução de erros etc. minhas dicas são:
- pesquise em inglês
- olhe a documentação oficial primeiro
- tente entender e aplicar para o que você precisa sem copiar e colar muito
6. não existe uma linguagem de programação "perfeita"
toda linguagem de programação tem seus pontos fortes e fracos. algumas são melhores pra certos assuntos e não para outros, por exemplo: python é bom para análise de dados, c++ para jogos, rust e c para sistemas operacionais
eu diria que a com a menor curva de aprendizado é python, mas isso tem um custo: tu vai sofrer se precisar ir pra outra linguagem depois, principalmente uma mais baixo nível como c. outra coisa, python é bem lento
7. entenda sobre complexidade de algoritmos
isso se chama big O notation. não precisa saber todos os detalhes, só coisas mais básicas, como por exemplo: 5 fors um dentro do outro não é uma boa ideia kkkkkk
8. escreva códigos legíveis
eu não estou dizendo para comentar cada linha. estou dizendo para criar códigos que podem ser entendidos sem muito comentário. comentários devem ser reservados para partes complexas, que requerem uma lógica mais avançada
como fazer um código mais limpo? bem, o principal é:
dar nomes que fazem sentido e não muito longos para variáveis e funções
modularizar o código
manter uma boa identação
essas são dicas para algoritmos em geral. agora vou falar mais especificamente de engenharia de software
1. busque entender o que se espera do teu software
isso se chama análise de requisitos e é uma das partes mais importantes da engenharia de software. é sobre entender o que o cliente quer e, mais importante ainda, entender como fazer isso em código
provavelmente o "cliente" vai ser você, então aqui estão algumas coisas que tu pode se perguntar
o que eu quero que o meu software faça, em termos gerais? quais características ele vai ter, especificamente? como eu vou chegar nelas com código? quanto tempo preciso?
2. faça um produto simples e adicione features depois
após fazer uma análise dos requisitos, provavelmente você vai acabar com uma lista enorme do que o teu programa deve fazer. agora se pergunte: o que é o mínimo que eu preciso fazer para que isso seja usável?
o "produto mínimo" (minimum viable product ou MVP) é como se fosse a versão 1.0 do seu programa, e com cada update ele vai melhorando, com novas features, correção de bugs etc
uma nota sobre número de versões: digamos que temos um software em sua versão x.y.z
mudanças muito pequenas (bugfix, geralmente) aumentam o z
mudanças pequenas a médias aumentam o y
mudanças grandes aumentam o x
3. aprenda sobre versionamento com git
git (geralmente usado junto com github) é um sistema de controle de versões, que te permite editar o código e mandar ele pra um servidor pra ele ficar armazenado. quando você mudar esse código, pode reenviar ele e ele vai ser atualizado
isso também permite que você trabalhe em times. várias pessoas podem ter acesso ao código no servidor e mandar suas versões. o git consegue (geralmente) manusear as versões para que todas as alterações sejam feitas da maneira correta e todos possam ter acesso a elas
4. tenha um projeto grande e vários menores
por experiência própria, ter só um projeto grande é muito maçante, porque as vezes tu simplesmente não quer mais olhar para aquele código mas ainda quer programar. as vezes tu também pode querer testar algo novo sem afetar o projeto
projetos menores também significam menos comprometimento, é mais fácil largar um deles se tu não tem mais interesse
recomendo ter um projeto grande porque te dá uma sensação de propósito e é algo no qual tu pode trabalhar quando não sabe o que fazer
5. simples é melhor que complexo, complexo é melhor que complicado
acho que essa fala por si mesmo. tente sempre buscar soluções simples e coisas já feitas. não tem porque "reinventar a roda". linguagens como python principalmente tem muitas coisas já feitas em bibliotecas
sim eu fiz uma thread enorme, e daí?
• • •
Missing some Tweet in this thread? You can try to
force a refresh
vou usar inglês nos exemplos mas as dicas se aplicam pra qualquer língua
1. leia materiais adequados para o seu nível
essa é meio óbvio, mas ainda sim precisa ser dito. pra quem é iniciante, recomendo histórias curtas feitas para quem está aprendendo a língua. pra quem tá no nível básico, pode começar a ler graded readers e livros bilíngues