Como iniciar a programação competitiva? [fechadas]

17

Eu pratico a codificação há um tempo, mas o problema é que levo muito tempo para escrever uma solução para os problemas. Quero perguntar se a programação competitiva pode me ajudar a melhorar isso.

Se sim, como devo iniciar e de quais sites eu poderia usar (como o TopCoder )? Obviamente, não vou conseguir resolver problemas muito difíceis por enquanto. O que devo fazer?

Se não, o que mais devo fazer?

Também tenho outro problema que quero aprender a codificar, mas o fato é que sinto que não sou muito bom nisso. O que devo fazer? É como me incomodar por dentro.

Sei que algumas pessoas podem não achar essa pergunta informativa, mas pelo menos permita-me obter uma resposta.

Vaibhav Agarwal
fonte
1
Também não subestime o valor da programação colaborativa. Vimos alguns problemas em nossa equipe devido a excesso de competitividade - a questões de engenharia / interpessoais. Uma programação tão competitiva pode ajudá-lo, mas também participar de um projeto de código aberto ou desenvolver um projeto com amigos que pensam assim.
Gavin Howden

Respostas:

19

[a programação competitiva pode me ajudar a melhorar [a velocidade]?

Sim, pode, e com tempo suficiente, certamente o fará. No entanto, a velocidade não é a habilidade mais importante que você vai melhorar. Da minha experiência de participar do TopCoder por mais de 10 anos, a habilidade mais importante que você terá da programação competitiva é a capacidade de escrever trechos de código simples corretamente da primeira vez, sem usar um depurador.

Como devo iniciar e de que site como o TopCoder?

Use as salas de treinamento para a Divisão 2. O nível 1 da Divisão 2 geralmente é "concursos de digitação", no sentido de você descobrir uma solução imediatamente, para que sua tarefa seja codificada o mais rápido possível. A maioria das tarefas da vida real é assim. Você perceberá rapidamente que o depurador é o maior "desperdício de tempo"; portanto, você naturalmente tentará concluir seu código sem depurá-lo. Isso vai ser frustrante no começo, mas vai melhorar com o tempo. Vai demorar algumas centenas de problemas de nível 1 para melhorar, então não desista.

Depurar na sua cabeça é a habilidade que o ajudará em seu trabalho real: embora a velocidade da codificação não seja importante, a capacidade de escrever trechos de código corretos sem depurar ajudará você a fazer uma transição de boa para excelente.

dasblinkenlight
fonte
Muito obrigado @dasblinkenlight!
Vaibhav Agarwal
10

Como programador iniciante, você deve se preocupar muito mais com a qualidade do seu código do que com a velocidade de escrevê-lo. Você deve trabalhar em projetos por conta própria para expandir suas habilidades. Você pode acompanhar a revisão de projetos de código aberto para ver como outras pessoas escrevem código e talvez começar a contribuir para um projeto de código aberto.

Nos meus 25 anos de desenvolvimento de código em várias plataformas e domínios de negócios, nunca encontrei um caso em que a velocidade da minha redação de código fosse mais importante do que a qualidade e a estabilidade do meu código.

cdkMoose
fonte
Mas quando você está participando de uma competição, digamos que haja algum concurso de codificação ou processo de entrevista, então a velocidade é importante, certo? E isso demais eu sinto.
Vaibhav Agarwal
@cdkMoose isso é bom, mas você também pode me sugerir como iniciar a programação competitiva significa por onde começar?
Vaibhav Agarwal
@VaibhavAgarwal Project Euler problemas 1 a 50: embora não seja competitivo (a menos que você esteja tentando ser uma das primeiras pessoas a resolver o problema mais recente), é desafiador e o tipo de pergunta que se pode esperar em uma competição de codificação ou processo de entrevista.
@ Vaibhav, eu começaria a programação competitiva da mesma maneira que iniciaria qualquer outra competição: Prática, Prática, Prática.
cdkMoose
1
@ Vaibhav: Você postou que deseja aprender programação. Se esse é o estágio em que você está, pessoalmente não acho que você deva se preocupar com programação competitiva. Isso pode acontecer depois que você desenvolver suas habilidades. Quanto à entrevista, não peço aos meus candidatos a entrevista que escrevam programas completos. Estou mais preocupado com os processos de compreensão e pensamento deles. Estou tentando desenvolver a confiança de que eles poderiam resolver o problema, não de que o resolveriam em tempo recorde.
cdkMoose