¿Cómo comenzar la programación competitiva? [cerrado]

17

He practicado la codificación durante un tiempo, pero el problema es que me lleva mucho tiempo escribir una solución para los problemas. Quiero preguntar si la programación competitiva puede ayudarme a mejorar esto.

En caso afirmativo, ¿cómo debo comenzar y desde qué sitios web puedo usar (como TopCoder )? Obviamente no podré resolver problemas muy difíciles por ahora. ¿Qué tengo que hacer?

Si no, ¿qué más debo hacer?

También tengo otro problema que quiero aprender a codificar, pero es que siento que no soy muy bueno en eso. ¿Qué tengo que hacer? Es como molestarme desde adentro.

Sé que algunas personas pueden no encontrar esta pregunta informativa, pero al menos permítanme obtener una respuesta.

Vaibhav Agarwal
fuente
1
No subestimes el valor de la programación colaborativa tampoco. Hemos visto algunos problemas en nuestro equipo debido a la competitividad excesiva, a la ingeniería / problemas interpersonales. Por lo tanto, la programación competitiva podría ayudarlo, pero también podría participar en un proyecto de código abierto o desarrollar un proyecto con amigos afines.
Gavin Howden

Respuestas:

19

[¿Puede] la programación competitiva ayudarme a mejorar [la velocidad]?

Sí, puede, y con el tiempo suficiente, ciertamente lo hará. Sin embargo, la velocidad no es la habilidad más importante que vas a mejorar. Desde mi experiencia de participar con TopCoder durante más de 10 años, la habilidad más importante que aprenderá de la programación competitiva es la capacidad de escribir fragmentos de código simples correctamente la primera vez, sin usar un depurador.

¿Cómo debo comenzar y desde qué sitio como TopCoder?

Use las salas de práctica para la División 2. El Nivel 1 de la División 2 generalmente son "concursos de mecanografía", en el sentido de que encuentra una solución de inmediato, por lo que su tarea se convierte en la codificación lo más rápido posible. La mayoría de las tareas de la vida real son así. Rápidamente se dará cuenta de que el depurador es el mayor "gasto de tiempo", por lo que, naturalmente, intentará completar su código sin depurarlo. Esto será frustrante al principio, pero mejorará con el tiempo. Se necesitarán unos cientos de problemas de nivel 1 para ser buenos, así que no te rindas.

La depuración en su cabeza es la habilidad que lo ayudará en su trabajo real: si bien la velocidad de codificación no es importante, la capacidad de escribir fragmentos de código correctos sin depurar lo ayudará a hacer una transición de bueno a sobresaliente.

dasblinkenlight
fuente
Muchas gracias @dasblinkenlight!
Vaibhav Agarwal
10

Como programador principiante, debe preocuparse mucho más por la calidad de su código que por la velocidad de escritura. Debería estar trabajando en proyectos por su cuenta para ampliar sus habilidades. Podría seguir con la revisión de proyectos de código abierto para ver cómo otros escriben código y tal vez comenzar a contribuir a un proyecto de código abierto.

En mis más de 25 años de desarrollo de código en varias plataformas y dominios comerciales, nunca he encontrado un caso en el que la velocidad de escritura de mi código fuera más importante que la calidad y la estabilidad de mi código.

cdkMoose
fuente
Pero cuando participa en una competencia, digamos una competencia de codificación o un proceso de entrevista, entonces la velocidad importa ¿no? Y eso también lo siento mucho.
Vaibhav Agarwal
@cdkMoose eso es bueno, pero ¿puedes sugerirme también cómo iniciar la programación competitiva desde dónde comenzar?
Vaibhav Agarwal
@VaibhavAgarwal Project Euler problemas 1 a 50: si bien no es competitivo (a menos que esté tratando de ser una de las primeras personas en resolver el problema más reciente), es desafiante y el tipo de pregunta que uno podría esperar en una competencia de codificación o proceso de entrevista.
@ Vaibhav, comenzaría la programación competitiva de la misma manera que comenzaría cualquier otra competencia: práctica, práctica, práctica.
cdkMoose
1
@ Vaibhav: Has publicado que quieres aprender a programar. Si esa es la etapa en la que se encuentra, personalmente no creo que deba preocuparse en absoluto por la programación competitiva. Eso puede venir después de que hayas desarrollado tus habilidades. En cuanto a las entrevistas, no les pido a mis candidatos a entrevistas que escriban programas completos. Me preocupa más su comprensión y sus procesos de pensamiento. Estoy tratando de desarrollar la confianza de que podrían resolver el problema, no de que lo resolverían en un tiempo récord.
cdkMoose