É normal demorar pra montar um algoritmo?

Olá, eu tenho 18 anos (Faço CC a 1 ano), comecei a programar com uns 14, aprendi PHP inicialmente, dps aprendi o Básico de JavaScript/jQuery e agora comecei com Java.Talvez essa não seja a categoria correta (Me perdoe se eu estiver certo), mas, tenho um problema. É normal demorar dias ou semanas pra construir um algoritmo não muito complexo? Por exemplo, eu levei uma semana pra montar um jogo da velha( Humano x Computador) e só fiz os sistemas de defesa, estou agora montando um cubo inteligente que deve desviar dos obstáculos (Meio que um labirinto) e chegar no destino no caminho mais curto, até agora só montei o cenário e o modo em que os obstáculos de organizam (Aleatóriamente), lembrando que comecei no dia 31 por volta das 4h da tarde. Será que talvez eu não sirva pra essa área? Eu amo muito programar mas as vezes eu demoro muito pra resolver um problema, como esses citados acima e já faz 4 anos que estou neste caminho. Nas aulas de Programação eu até resolvo os exercícios básicos rapidamente, e tudo aparente que eu seja um dos melhores da sala, mas é facul particular (Geralmente facilitam as coisas). O que acham? estou exagerando? Esse tipo de coisa que citei, que usa um pouco de IA realmente demora? Lembrando que é difícil eu desenvolver esses tipos de sistema, mas eu penso muito em fazer as vezes. (Estou utilizando Java para montar tudo). Quando eu monto esse tipo de sistema, eu gasto no total diário no máximo umas quatro horas, talvez menos se considerar que eu fico jogando e entrando no facebook toda hora.

Não tentar apressar as coisas, leve tudo a seu tempo. Se você acha que a facul ta facilitando, faça como você faz, tente fazer projetos mais complicados, e sobre demorar com certas coisas, tente procurar na internet, muitas vezes ela te salva de dor de cabeças e ; fora de lugar.

Olá, obrigado pela resposta! Eu evito procurar na internet pois eu tento forçar o meu raciocínio, eu quero aprimorá-lo, mas talvez eu esteja fazendo de forma errada ou forçando muito ou minha lógica não é boa o bastante.

Se você tentar entender o que está acontecendo no código da internet, e tentar modificar para testar, é bem melhor que copiar + colar e usar.

Uma coisa que já ouvi e vi em vários lugares, ninguém consegue resolver tudo de cabeça, ver documentação é algo bem importante, além de procurar ajuda.

Então, quando o problema tá pegando eu até procuro na internet, mas eu vejo um exemplo e tento montar com minha lógica, mesmo que demore mais um pouco do que copiar e colar, isso ainda me ajuda a memorizar os comandos da linguagem, que no caso do Java é muito necessário, pelo menos eu acho.

Não é nem questão de memorizar, se você aprender o que deve usar em certas situações é bem melhor que conhecer tudo cegamente.

Você esta certo, talvez eu esteja querendo “Saber de tudo” pra provar pra mim mesmo que sou bom o suficiente é tanto que eu memorizo todas as classes que já aprendi (Todo mundo que conheço fala que isso não é necessário, deve-se memorizar apenas as mais utilizadas).

Não é questão de memorizar as classes. Só saber qual usar é mais que o suficiente, noção de programa se paga ao invés de memória.

É verdade, vou utilizar esse método a invés de ficar memorizando. Obrigado pelo seu tempo.

Sem problema. :slight_smile:

1 curtida

Se você está se referindo a montar como transformar o algoritmo em código, a resposta é: depende.
Depende do teu nível de conhecimento da linguagem, depende de quanto tempo dispõe, diariamente, para dedicar-se a isso, etc.
Em geral, algoritmos como o jogo da velha não levam tanto tempo.
Outro aspecto é que o processo de aprendizado é diferente para cada um (viva a pedagogia que propôs e definiu o ensino como algo regular e linear a maioria). Assim sendo, você pode aprender melhor vendo vídeos, outros aprendem lendo, outros aprendem quando alguém os explica, etc.
Sendo assim, você precisa identificar a melhor forma de assimilar conhecimento e, então, ir por esse viés.
De mais a mais, é importante, sim, forçar o raciocínio, porém, é preciso entender que nós criamos resistências a cosias que nos exigem demais. Então, se você já tentou todas as suas possibilidades, não custa dar uma pesquisada, não acha?

Pode ficar tranquilo que é normal sim. Na verdade, desenvolver um algoritmo completamente novo rende até tese de doutorado, Na prática, o que nós fazemos no dia-a-dia é aplicar variações de algoritmos bem conhecidos.

Mas já que você gosta de algoritmos, uma boa maneira de praticar são as maratonas de programação. Tente montar uma equipe na faculdade e procure um professor que abrace a ideia para inscrever vocês nas competições. Um bom site para treinar é esse aqui:

e um bom livro para aprender é esse:

Me refiro a própria montagem do algoritmo, a linguagem é relativamente simples. Talvez eu tenha demorado um pouco no jogo da velha porque eu não vejo exemplos na internet, eu apenas entendo como o jogo funciona e a partir disso tento montar o algoritmo.

Excelente ideia as maratonas. Lá tem todo ano, só que no ano passado eu não tentei até porque a linguagem que está em uso era C ou java e ambas eu tenho estudado a pouco tempo.

Outra coisa, eu não penso muito antes de montar os projetos, tipo, eu determino criar X coisa que eu nunca fiz, ao invés de fazer um Fluxograma ou um Pseudocódigo eu já vou botando o código Java e vou pensando tudo na hora e muitas vezes eu preciso apagar muita coisa pois é desnecessário.

Essa é uma estratégia arriscada. Funciona? Sim. Mas, quando você monta um algoritmo, você consegue se antecipar a uma série de problemas que podem vir a ocorrer. Diminuindo o tempo de codificação e, ainda, criando um código mais coeso e mais bonito, digamos assim.

No caso das maratonas, conhecer a linguagem é o de menos. Por se tratar de uma competição de algoritmos, você só vai precisar dos recursos mais básicos da linguagem mesmo. Para o caso das maratonas de programação, para mim a melhor linguagem é C mesmo: simples, rápida e você não corre o risco de ser penalizado pelo tempo de execução.

Com relação à sua prática de programação, você realmente precisa criar o hábito de pensar e planejar o seu algoritmo. Para a maioria dos problemas da maratona, é praticamente impossível resolver um problema sem antes pensar muito sobre o algoritmo que você está implementando.

talvez menos se considerar que eu fico jogando e entrando no facebook toda hora.

Cara, faça uma força para mudar esse hábito. Isso atrapalha MUITO a sua produtividade. Um programa que pode te ajudar é o Cold Turkey. Com ele você pode bloquear as páginas que te distraem por um tempo para se concentrar melhor no trabalho.

Complementando o que o @rmendes08 falou, tente criar uma rotina de estudos. Você não precisa ficar horas e horas estudando, pesquisando e desenvolvendo. Comece aos poucos, com 15 a 20 minutos por dia, aumente gradativamente até um nível que você perceba que é bom, que consegue evoluir, 2 ou 3 horas, por exemplo.
Além disso, lembre-se que é fundamental dar ao cérebro (e ao corpo) alguns intervalos para assimilar informação e processar a mesma. Em geral, especialistas indicam que, cada hora de estudo seja alternada com 15 minutos de relax (para um café, um suco, comer algo, esticar as pernas, alongar, enfim, o que achar mais adequado).
Existem outras dicas, como não estudar na cama (eu sei que a combinação notebook + cama é irresistível, mas o corpo já entra com a pretensão de dormir e a produtividade cai muito), estudar em ambiente tranquilo (evitando distrações).
Ah, entenda o seguinte, raciocínio também está associado à pesquisa. Dentro do meio científico, qualquer que seja a área, é muito raro alguém criar algo novo, mais raro ainda que essa criação aconteça sem uma gigantesca pesquisa anterior. O que quero dizer é: nem sempre forçar é uma boa prática, isso pode trazer resistência para novos conteúdos e deteriorar teu processo de aprendizado.

Eu não sou especialista, mas, garanto que isso pode ajudar muito na tua evolução.