Hoje em dia existem cada vez mais pessoas a tentarem a sua sorte no mundo da programação. Seja qual for a sua escolha a nível da linguagem e embora possam existir muitos domínios de aplicação diferentes, existem alguns conceitos em comum, especialmente o percurso de aprendizagem.
Este artigo é meramente indicativo e baseado na minha opinião pessoal e experiência. Se não concorda, poderá comentar e dar a sua sugestão, que será devidamente agradecida...
Primeiro passo - Iniciação
Para começar a programar deve ter em conta que programar não é algo fácil, no entanto, é algo que na minha opinião trás recompensas fantásticas. Para mim é o mais perto que se pode ter de um super-poder.
Existem inúmeras linguagens de programação, muitas pouco conhecidas, algumas de utilização geral, outras específicas para um domínio em particular, e cada uma diferente da próxima. Deve ter a certeza de que escolhe uma linguagem com uma sintaxe fácil de aprender, como Java ou C, e se quiser começar por outro lado certifique-se que tem pelo menos um recurso a quem se possa dirigir caso existam algumas dificuldades.
Pelo menos metade do trabalho de aprendizagem, especialmente em programação pode ser realizado com pesquisa simples. Procure bons tutoriais, numa língua que domine e do tipo que preferir (há quem prefira slides ou texto, eu prefiro tutoriais em vídeo ou então um livro completo sobre o assunto) e equipe-se com material de leitura sobre o que a linguagem lhe oferece, especialmente se estiver a tentar implementar algo que lhe parece complexo - é comum as linguagens de programação terem bibliotecas com funções já feitas, para inúmeras tarefas.
Poderão haver casos em que a linguagem não seja tão apropriada para o destino que lhe quer dar (HTML e PHP são exemplos de linguagens com domínios de aplicação mais relacionados com páginas web, LISP para Inteligência Artificial, etc...). Se escolheu uma das minhas duas sugestões à partida não terá grandes problemas com o domínio, já que são linguagens que à partida poderão ter qualquer aplicação.
Defina objetivos claros sobre o que pretende fazer e torne a sua investigação relevante a esse aspecto. Mais importante ainda: torne esses objetivos concretizáveis, não seja irrealista. Se acha que ainda não sabe programar, não tente fazer um jogo. Comece por algo simples e tente modificar o seu projeto de forma a crescer com os seus conhecimentos.
Todos os exercícios são importantes. Faça tantos quanto consiga, e quando perceber o que estiver a fazer, experimente fazer de novo modificando uma parte, e observe que consequências tem. Não tem fontes de exercícios? Pesquise online ou então invente pequenos exercícios rudimentares ou que correspondam ao seu nível de conhecimento.
Se for uma pessoa que tenha ideias frequentemente aponte-as todas. De todas, escolha a mais fácil e tente implementá-la. Se não conseguir, não desespere. Lembre-se que deve apenas tentar algo que saiba que consiga com o seu nível de conhecimentos.
Nesta etapa há algo que deve ficar "queimado" no seu cérebro. Não está sozinho no seu percurso de aprendizagem. Existe sempre alguém no mesmo lugar onde se encontra agora e a comunidade de programadores é das que melhor recebem os novatos. Se procurar bem (fóruns online, núcleos de informática locais, etc), encontrará certamente alguém disposto a dar-lhe dicas sobre como resolver os problemas. Não se esqueça é que se os problemas não forem resolvidos por si pouco ou nada irá aprender!
Uma vez que entenda os básicos está na hora de aumentar os conhecimentos e adquirir novas capacidades, de forma a conseguir fazer ainda mais coisas com a programação.
Segundo passo - Consolidação
Se chegou a esta fase então parabéns! Já pertence a uma percentagem muito mais reduzida de programadores que se interessam pela área e não desistem à mínima dificuldade.
A partir de agora o processo de aprendizagem não será mais fácil mas deixará de ser tão doloroso, já que agora conseguirá (pelo menos) imaginar uma resolução para a esmagadora maioria dos problemas fáceis e pô-la em prática. Começarão a acabar as desculpas para não manter documentação do código que produz (comentários) muito em breve, já que se abrir um programa antigo um ano depois de o criar, se não estiver comentado certamente vai demorar muito mais tempo a aperceber-se do que faz do que se estivesse devidamente documentado. É uma ideia que não deverá aplicar cegamente, não será necessário que escreva paredes de texto enormes, basta uma ideia geral sobre o que faz cada componente (funções ou procedimentos) do seu programa.
Para estender os seus conhecimentos sobre uma linguagem em particular, considere comprar um livro ou um curso online sobre o assunto se achar que os tutoriais e o material de pesquisa que consegue arranjar não é suficiente. Certamente abordarão outros aspectos que porventura ficaram esquecidos ou simplesmente ainda não tinham sido necessários.
Mantenha também o seu código organizado e legível pelas mesmas razões anteriores, pode ser necessário voltar a ler o código que escreveu ou aproveitar a função/procedimento para outro projeto.
Nesta fase deverá começar a interessar-se pela melhor solução ao invés de procurar a primeira solução. Não deverá implementar cegamente a melhor solução - investigue porque é que a solução é melhor e depois de perceber talvez consiga encará-la como algo menos obscuro.
Se ainda não se inscreveu num fórum de programação, faça-o. Procure por alguém que pretenda fazer um projeto em grupo ou então proponha você mesmo a ideia: aprende-se sempre algo quando se trabalha com outras pessoas.
Abra o documento onde guardou as suas ideias e verifique novamente se existe algum projeto que acha saber completar. Existirão grandes probabilidades de já conseguir realizar pelo menos uma das ideias que teve.
Deverá agora conseguir utilizar bibliotecas incluídas com a linguagem bem como conseguir encontrar e perceber a sua documentação. Terá de descobrir quais as bibliotecas que interessam, descobrir as várias funções nelas existentes, e ler a sua documentação. Como complemento pode fazer exercícios sobre as funções que achar mais desafiantes, que de certeza serão úteis no futuro.
Terceiro passo - Utilização avançada
Se chegou a esta fase, já deverá sentir orgulho em tudo o que conseguiu fazer até agora. Como em tudo na vida, são menos os que chegam ao cimo do conhecimento. Já deverá saber todas as mecânicas básicas e avançadas da linguagem que escolheu, já deve ter a maior parte das ideias implementadas (se for uma pessoa com muitas ideias) e quando apresentado com um problema deve conseguir consolidar uma estratégia ou plano de resolução em pouco tempo.
Nesta fase, se achar que está satisfeito com o que consegue fazer então ótimo! Mas continua a haver inúmeras coisas que porventura nem sabe que existem, e algumas delas conceitos importantes! Nesta fase conseguirá agora ajudar os novatos a começarem e indicar o que para si foi o melhor caminho.
Está na altura de sair na sua zona de conforto. Tente criar um projeto complexo e implementá-lo, e se preferir, use a ajuda de outro programador. Sessões de brainstorming conseguem destruir problemas complexos em questão de poucas horas.
Já se sente fora da zona de conforto? Ótimo, aprenda outra linguagem! A maior parte dos programadores não se pode dar ao luxo de saber uma linguagem e sabê-la bem: avance para outras linguagens, cada uma com os seus truques e manhas, certamente será o maior passo, especialmente se irá lidar com gestão de memória (presente em C, C++, etc...) [Não existe em Java, Python, ...]. Com isso certamente descerá uma fase ou duas, mas sempre estará a alargar vastamente os seus horizontes.
Quer ideias para linguagens ótimas para aprender? C++ para utilização geral de aplicações onde a velocidade é fulcral (Sistemas operativos, Jogos, etc...); HTML e CSS para os mais interessados em páginas web; Javascript (pode ser utilizado em muitos sítios, inclusive web).
O tutorial não acaba aqui, mas certamente quem chegar a esta fase já terá uma ideia de como pretende evoluir, e a partir daqui deverá ser uma escolha pessoal!
Esta será a provavelmente a qualidade que distingue o bom do mau programador: a sua autonomia de criar e resolver problemas sozinho, bem como a perspicácia e a criatividade das ideias que usa para resolver os problemas.
Espero que se divirtam a ler este artigo tanto como eu me diverti a escrevê-lo!
Melhores cumprimentos,