Como melhorar sua habilidade de programação e resolução de problemas
Uma pessoa que trabalha com desenvolvimento sempre escuta que a melhor formar de melhorar suas habilidades de programação é colocando a mão na massa. O mesmo acontece com aqueles que estão começando a aprender uma nova linguagem, quando perguntam: "Agora que já sei fazer o básico, qual é o próximo passo?". E a resposta dessa pergunta é sempre algo do tipo: "desenvolve um pequeno projeto para você praticar, assim você pega as manhas da linguagem mais fácil".
Uma resposta semelhante é dada para quem procura melhorar seus skills de resolução de problemas (ou lógica de programação, neste caso). Afinal, o que adianta uma pessoa saber uma linguagem de programação se não sabe o que e como usar as técnicas certas para a resolução de um determinado problema. E o foco aqui não é qual framework usar, e sim como usar a lógica para resolver o problema.
Ok, eu já sei que é praticar. No mundo da programação, os problemas não se resumem em telas de cadastro e alguns selects no banco de dados. Os problemas estão muito além desse trivial. Não é à toa que ainda temos problemas que não possuem uma solução conhecida.
Uma boa forma de praticar a resolução de problemas não triviais é através das competições de programação. Essas competições trazem problemas em que a solução envolve grafos, busca e ordenação de dados, matemática, simulação, etc. E acreditem, melhora e MUITO a habilidade de programar e resolver problemas, além de ser um ótimo hobby e ser relaxante (não, isso não é coisa de nerd, e se você está nessa área, amar programar e achar isso relaxante é o mínimo né?).
Atualmente, estou praticando esses problemas como hobby, no UVA e TopCoder. É bem interessante quando você lê um problema, acha que é bem fácil de resolver, e quando termina o algoritmo, você toma um "Wrong Answer" do judge, e fica se matando para conseguir acertar.
É uma ótima maneira de expandir os horizontes e aumentar o conhecimento de algoritmos diversos.
Aí você pergunta: Mas pra que eu vou fazer isso? Isso deve ser coisa de nerd que não tem o que fazer! Google, Microsoft e IBM estão sempre de olho nas pessoas que gostam desses desafios. E também são essas empresas que patrocinam as competições. No final diversos ex-competidores acabam como funcionários dessas empresas.
A própria Google tem sua competição, o Google Code Jam. Conheço algumas pessoas que ganharam a competição e hoje estão trabalhando lá.
E você também pode ganhar um dinheiro extra com essas competições. O TopCoder sempre tem competições periodicamente, tanto de desenvolvimento de componentes, quanto competições de resolução de pequenos problemas. E o prêmio é em dólar! rs Além de diversar empresas/instituições que de vem em quando patrocinam as competições em busca de talentos, entre elas NASA, Facebook, Nike, etc.
E se você ainda é estudante, você também tem a oportunidade de participar da Maratona de Programação. Aqui no Brasil tem o apoio da SBC (Sociedade Brasileira de Computação), mas é de nível mundial, apoiado pela ACM (Association for Computing Machinery - uma das 'socidades'/grupo de computação mais respeitado no mundo). Já tive a oportunidade de representar a minha faculdade numa final brasileira, e realmente, não tem preço! É muito legal! :)
Depois de todo esse texto, ainda acha que é bobagem? TUDO se resume a OPORTUNIDADE. Seu futuro emprego pode ter origem em uma dessas competições!
Pra terminar, o Filipi fez essa apresentação para motivar o pessoal que ia participar da Maratona. Quero agradecer a ele pela referência! ;)
Boa sorte e bons códigos!
:)