¿La programación competitiva realmente mejora la comprensión de los algoritmos?

Es difícil decir si la programación competitiva será beneficiosa para su proyecto específico sin conocer el proyecto y su programa de estudios. Tal vez su proyecto necesita una base de datos SQL para metadatos y no algoritmos 🙂

En general, sí, la programación competitiva mejora la comprensión de los algoritmos y (probablemente lo más importante) la capacidad de implementarlos de manera limpia y sin errores. Una cosa es escuchar una conferencia sobre BFS y luchar a través de un problema de práctica, pero es otra cosa resolver varias docenas de problemas usando varios tipos de BFS. Y muchos algoritmos utilizados en la programación competitiva no se pueden incluir en el programa de estudios; por ejemplo, no creo que mis cursos universitarios incluyan programación dinámica, al menos sentí que era algo completamente nuevo cuando lo aprendí para las competiciones 🙂

No creo que la programación competitiva y los algoritmos estén correlacionados. Lo que puede hacer la programación competitiva es ayudarte a ser mejor en la programación y reforzar ciertos factores que te harán rápido. Por otro lado, los algoritmos son de naturaleza altamente matemática. Si dedica suficiente tiempo a elaborar ejemplos, incluso a mano, puede mejorar sus habilidades en algoritmos.
Dicho esto, no veo por qué necesitaría dominar conceptos algorítmicos para el proyecto en el que está trabajando. Es diferente que dominar algoritmos es una habilidad muy útil para un profesional / estudiante de CS.

Sí, ayuda. Para ser un programador ok-ish está bien si puedes abordarlo con fuerza bruta. Pero para mejorar, debe buscar otros algoritmos estandarizados (y ajustarlos con ellos) que a su vez ayudarán con el pensamiento algorítmico.

La programación competitiva enseña cómo usar algoritmos ya existentes y cómo transformar un problema verbal para programar la solución de manera efectiva.

La programación competitiva no puede enseñar cómo diseñar nuevos algoritmos (por nuevos quiero decir nuevos algoritmos, no los nuevos programas que usan algoritmos existentes). El algoritmo es un campo de investigación profunda, la gente hace doctorado en informática informática al diseñar nuevos algoritmos o proporcionar una nueva estructura de datos. La programación competitiva solo lo toca, pero para entenderlo, uno tiene que pasar por etapas y literatura que involucra conceptos matemáticos detrás de cada lógica y el diseño de una nueva lógica lo requiere.

La programación competitiva puede crear ingenieros de software, pero no puede crear los verdaderos pensadores o investigadores. Por cierto, yo también hago programación competitiva para mantenerme en contacto con la sintaxis de los idiomas, lo cual se hace muy bien.