Comment démarrer une programmation compétitive? [fermé]

17

Je pratique le codage depuis un certain temps, mais le problème est qu'il me faut beaucoup de temps pour écrire une solution aux problèmes. Je veux savoir si une programmation compétitive peut m'aider à améliorer cela.

Si oui, comment dois-je commencer et à partir de quels sites Web puis-je utiliser (comme TopCoder )? Évidemment, je ne serai pas en mesure de résoudre des problèmes très difficiles pour l'instant. Que devrais-je faire?

Si non, que dois-je faire d'autre?

J'ai aussi un autre problème que je veux apprendre à coder, mais le fait est que je sens que je ne suis pas très bon dans ce domaine. Que devrais-je faire? C'est comme me déranger de l'intérieur.

Je sais que certaines personnes peuvent ne pas trouver cette question informative, mais permettez-moi au moins d'obtenir une réponse.

Vaibhav Agarwal
la source
1
Ne sous-estimez pas non plus la valeur de la programmation collaborative. Nous avons constaté des problèmes dans notre équipe en raison d'une compétitivité excessive - de problèmes d'ingénierie / interpersonnels. Une programmation compétitive pourrait donc vous aider, tout comme participer à un projet open source ou développer un projet avec des amis partageant les mêmes idées.
Gavin Howden

Réponses:

19

[une] programmation compétitive peut-elle m'aider à améliorer [la vitesse]?

Oui, il le peut, et avec suffisamment de temps, il le fera certainement. Cependant, la vitesse n'est pas la compétence la plus importante que vous allez améliorer. D'après mon expérience de participation avec TopCoder pendant plus de 10 ans, la compétence la plus importante que vous allez tirer de la programmation compétitive est la capacité d'écrire correctement des extraits de code simples la première fois, sans utiliser de débogueur.

Comment dois-je commencer et à partir de quel site comme TopCoder?

Utilisez les salles d'entraînement pour la division 2. Le niveau 1 de la division 2 est généralement un "concours de dactylographie", dans le sens où vous trouvez une solution tout de suite, de sorte que votre tâche devient de la coder le plus rapidement possible. La plupart des missions réelles sont comme ça. Vous vous rendrez rapidement compte que le débogueur est le plus grand «drain de temps», vous tenterez donc naturellement de terminer votre code sans le déboguer. Ce sera frustrant au début, mais cela s'améliorera avec le temps. Il faudra quelques centaines de problèmes de niveau 1 pour réussir, alors n'abandonnez pas.

Le débogage dans votre tête est la compétence qui va vous aider dans votre vrai travail: bien que la vitesse de codage ne soit pas importante, la possibilité d'écrire des extraits de code corrects sans débogage vous aidera à faire une transition du bon au remarquable.

dasblinkenlight
la source
Merci beaucoup @dasblinkenlight!
Vaibhav Agarwal
10

En tant que programmeur débutant, vous devriez être beaucoup plus préoccupé par la qualité de votre code que par la vitesse de son écriture. Vous devriez travailler sur des projets par vous-même pour développer vos compétences. Vous pouvez suivre cela en examinant les projets open source pour voir comment les autres écrivent du code et peut-être commencer à contribuer à un projet open source.

Au cours de mes 25 années de développement de code sur diverses plates-formes et domaines commerciaux, je n'ai jamais trouvé de cas où la vitesse d'écriture de mon code était plus importante que la qualité et la stabilité de mon code.

cdkMoose
la source
Mais lorsque vous participez à un concours, disons un concours de codage ou un processus d'entrevue, la vitesse compte, non? Et cela aussi, je le ressens.
Vaibhav Agarwal
@cdkMoose c'est bien mais pouvez-vous aussi me suggérer comment démarrer des moyens de programmation compétitifs par où commencer?
Vaibhav Agarwal
@VaibhavAgarwal Project Euler problèmes 1 à 50: bien qu'il ne soit pas compétitif (sauf si vous essayez d'être l'une des premières personnes à résoudre le problème le plus récent), il est difficile et le type de question auquel on peut s'attendre dans un concours de codage ou le processus d'entrevue.
@Vaibhav, je commencerais une programmation compétitive comme je commencerais n'importe quelle autre compétition: Pratique, Pratique, Pratique.
cdkMoose
1
@Vaibhav: Vous avez signalé que vous souhaitez apprendre la programmation. Si vous en êtes là, je ne pense pas du tout que vous devriez vous préoccuper de programmation compétitive. Cela peut arriver après que vous ayez développé vos compétences. En ce qui concerne les entretiens, je ne demande pas à mes candidats aux entretiens d'écrire des programmes complets. Je suis plus préoccupé par leur compréhension et leurs processus de réflexion. J'essaie de développer une confiance qu'ils pourraient résoudre le problème, pas qu'ils le résoudraient en un temps record.
cdkMoose