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.


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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.