Wie starte ich eine wettbewerbsfähige Programmierung? [geschlossen]

17

Ich habe eine Weile mit dem Codieren geübt, aber das Problem ist, dass ich viel Zeit brauche, um eine Lösung für die Probleme zu schreiben. Ich möchte fragen, ob wettbewerbsfähiges Programmieren mir dabei helfen kann, dies zu verbessern.

Wenn ja, wie soll ich anfangen und von welchen Websites aus (wie TopCoder )? Ich werde offensichtlich nicht in der Lage sein, sehr schwierige Probleme zu lösen. Was soll ich machen?

Wenn nein, was soll ich sonst noch tun?

Ich habe auch ein anderes Problem, das ich lernen möchte, aber die Sache ist, dass ich das Gefühl habe, dass ich nicht sehr gut darin bin. Was soll ich machen? Es ist, als würde man mich von innen nerven.

Ich weiß, dass manche Leute diese Frage vielleicht nicht informativ finden, aber bitte erlauben Sie mir zumindest, eine Antwort zu bekommen.

Vaibhav Agarwal
quelle
1
Unterschätzen Sie auch nicht den Wert der kollaborativen Programmierung. Wir haben einige Probleme in unserem Team gesehen, die auf übermäßige Wettbewerbsfähigkeit zurückzuführen sind - über technische / zwischenmenschliche Probleme. Eine wettbewerbsfähige Programmierung könnte Ihnen helfen, aber auch die Teilnahme an einem Open Source-Projekt oder die Entwicklung eines Projekts mit gleichgesinnten Freunden.
Gavin Howden

Antworten:

19

[kann] wettbewerbsfähiges Programmieren mir helfen, [die Geschwindigkeit] zu verbessern?

Ja, es kann, und wenn genügend Zeit vorhanden ist, wird es dies mit Sicherheit tun. Geschwindigkeit ist jedoch nicht die wichtigste Fähigkeit, die Sie verbessern werden. Aufgrund meiner mehr als 10-jährigen Erfahrung mit TopCoder ist die wichtigste Fähigkeit, die Sie aus der Wettbewerbsprogrammierung ziehen werden, die Fähigkeit, einfache Code-Snippets beim ersten Mal korrekt zu schreiben, ohne einen Debugger zu verwenden.

Wie soll ich anfangen und von welcher Seite wie TopCoder?

Verwenden Sie Übungsräume für Division 2. Level 1 von Div 2 sind in der Regel "Tippwettbewerbe" in dem Sinne, dass Sie eine Lösung sofort finden, damit Ihre Aufgabe sie so schnell wie möglich codiert. Die meisten Aufgaben im wirklichen Leben sind so. Sie werden schnell erkennen, dass der Debugger den größten "Zeitaufwand" darstellt. Sie werden also natürlich versuchen, Ihren Code zu vervollständigen, ohne ihn zu debuggen. Dies wird anfangs frustrierend sein, sich aber mit der Zeit verbessern. Es wird ein paar hundert Level-1-Probleme brauchen, um gut darin zu werden, also gib nicht auf.

Das Debuggen in Ihrem Kopf ist die Fähigkeit, die Ihnen bei Ihrer eigentlichen Arbeit helfen wird: Während die Codierungsgeschwindigkeit nicht wichtig ist, hilft Ihnen die Fähigkeit, korrekte Codeausschnitte ohne Debuggen zu schreiben, beim Übergang von gut zu hervorragend.

dasblinkenlight
quelle
Vielen Dank @dasblinkenlight!
Vaibhav Agarwal
10

Als Anfänger sollten Sie sich mehr mit der Qualität Ihres Codes als mit der Geschwindigkeit des Schreibens befassen. Sie sollten selbst an Projekten arbeiten, um Ihre Fähigkeiten zu erweitern. Anschließend können Sie Open-Source-Projekte überprüfen, um festzustellen, wie andere Code schreiben, und möglicherweise einen Beitrag zu einem Open-Source-Projekt leisten.

In mehr als 25 Jahren der Entwicklung von Code auf verschiedenen Plattformen und Geschäftsdomänen habe ich noch nie einen Fall gefunden, in dem die Geschwindigkeit des Codeschreibens wichtiger war als die Qualität und Stabilität meines Codes.

cdkMoose
quelle
Aber wenn du an einem Wettbewerb teilnimmst, sagen wir, ein Codierungswettbewerb oder ein Interview-Prozess, dann ist Geschwindigkeit wichtig, oder? Und das fühle ich auch sehr.
Vaibhav Agarwal
@cdkMoose das ist gut, aber kannst du mir auch vorschlagen, wie man wettbewerbsfähiges Programmieren beginnt, wenn man von wo aus anfängt?
Vaibhav Agarwal
@ VaibhavAgarwal Project Euler Probleme 1 bis 50: Während es nicht wettbewerbsfähig ist (es sei denn, Sie sind einer der ersten, der das neueste Problem löst), ist es eine Herausforderung und die Art der Frage, die man in einem Codierungswettbewerb erwarten könnte oder Interviewprozess.
@ Vaibhav, ich würde mit dem Programmieren von Wettbewerben beginnen wie mit jedem anderen Wettbewerb: Üben, Üben, Üben.
cdkMoose
1
@ Vaibhav: Du hast geschrieben, dass du Programmieren lernen willst. Wenn Sie sich in diesem Stadium befinden, sollten Sie sich meiner Meinung nach überhaupt nicht mit wettbewerbsfähiger Programmierung befassen. Das kann kommen, nachdem Sie Ihre Fähigkeiten entwickelt haben. In Bezug auf Interviews bitte ich meine Interviewkandidaten nicht, vollständige Programme zu schreiben. Mir geht es mehr um ihr Verständnis und ihre Denkprozesse. Ich versuche, ein Vertrauen zu entwickeln, dass sie das Problem lösen könnten, nicht, dass sie es in Rekordzeit lösen würden.
cdkMoose