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 diversas empresas/instituições que de vez 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!
Boa sorte e bons códigos!
Post de referência: http://wp.me/pCF9v-gr
5 Comentários
Ótimas dicas!
Sempre gostei muito dos seus artigos/tutoriais. Continue sempre assim 😉
Abraços e sucesso!
Bruno.
A Loiane como sempre, quando fala, sempre me acrescenta algo. Admiro muito seus conselhos.
Realmente experiência em resolução de problemas falta no mercado. A maioria dos programadores são somente executores. Temos que ser analistas, analizar e resolver da melhor forma, seja ela : fazer da forma mais simples e rápida. Simples Não significa fazer um código fácil, as vezes um código simples com lógica apurada é mais difícil de entender que um código enorme que foi feito na raça.
Gostei muito do artigo, parabéns!
São essas pequenas dúvidas que ajudam na base de conhecimentos que tanto falta no nosso mercado.
É se especializar demais na parte técnica e deixar de lado os “skills” básicos do ser humano. Pra pensar em uma solução, além de tudo que foi dito, entender e comunicar falta muito no nosso mercado de TI.
Que coisa feia..
Alguem copiou de alguem…
artigo igualzinho
https://loiane.com/2009/10/como-melhorar-sua-habilidade-de-programacao-e-resolucao-de-problemas/
aparentemene esse aqui é a copia do de cima
tsc tsc