He realizado una programación competitiva y tengo una calificación decente en Codeforces. He completado con éxito el proyecto Google Summer of Code’2015 para sistemas operativos FreeBSD.
En mi opinión, hay dos aspectos para convertirse en un buen programador:
1) Capacidad para resolver problemas: – Implica lidiar con abstracciones y diseñar estructuras de datos y algoritmos para mejorar la eficiencia del software en general. Al diseñar sistemas escalables, es posible que deba diseñar soluciones inteligentes y eficientes, y aquí es donde su capacidad de resolución de problemas lo ayudará. (Ciencias de la Computación)
- ¿De qué manera es el capitalismo como un algoritmo?
- No soy bueno con los algoritmos y no puedo encontrar una solución hasta que alguien me lo diga. ¿Cómo puedo arreglar esto?
- Dada una lista enlazada circular, ¿cómo encuentro la secuencia más larga de nodos de valor no repetido?
- ¿Son los algoritmos de big data de caja negra una instancia de historia que se repite? ¿Qué está haciendo la comunidad de código abierto para crear algoritmos de big data transparentes y precisos?
- ¿Cuál es el mejor curso para algoritmos y estructuras de datos?
2) Capacidad de codificación: – Esto implica traducir sus ideas y algoritmos de manera eficiente en código. Manejo de detalles de lenguaje, optimizaciones de minutos. También implica diseñar el sistema en general (patrones de diseño) (ingeniería de software).
Para convertirse en un mejor programador y contribuir a grandes proyectos, debe tener un equilibrio de ambas habilidades.
También estoy en mi último año y así es como mejoré en ambas cosas durante los últimos 3 años.
Habilidad para resolver problemas
Para mejorar su conocimiento algorítmico, debe comenzar leyendo CLRS. Estoy seguro de que muchos estarían de acuerdo en que se trata de los libros más completos sobre el tema a nivel de pregrado. Intente comprender los algoritmos mencionados en el libro correctamente, comprenda su prueba de corrección correctamente e impleméntelos. Si no comprende cómo funciona el algoritmo, no podrá mejorar su capacidad de resolución de problemas. Intente resolver los problemas dados en CLRS al final de las secciones. Estos problemas son muy buenos y pondrán a prueba su comprensión de la sección.
Después de comprender los algoritmos básicos de uso frecuente, debe comenzar a practicar sus habilidades en diferentes sitios web de codificación. Intente participar en concursos de programación competitivos realizados en diferentes sitios web como Codeforces, HackerRank. Tienen una buena interfaz de usuario y preguntas y concursos de buena calidad. Puede suceder que no pueda resolver ni un solo problema durante los concursos, pero no se desmotive. Simplemente lea editoriales y entienda qué error estaba cometiendo. Después de un poco de práctica y una sólida comprensión de los algoritmos básicos de uso frecuente, debería ser capaz de resolver los problemas de nivel Div2 A, B, C en Codeforces.
Participar en concursos es muy importante. Le proporcionará muchos beneficios, tales como: –
1) Mejora de la capacidad de resolución de problemas.
2) Mejorar la comprensión de los algoritmos.
3) Mejore su capacidad de traducir ideas en código correctamente.
4) Mejorará su velocidad de codificación.
5) Entenderá el lenguaje de programación que esté utilizando. ej., si usa C ++, la programación competitiva aumentará en gran medida su conocimiento del uso general de C ++ y STL.
Algunos enlaces útiles: –
Aprenda a codificar mediante programación competitiva
¿Cuál es la mejor estrategia para mejorar mis habilidades en programación competitiva en C ++ en 2-3 meses?
La ‘ciencia’ de la formación en programación competitiva – Codeforces
http://contest-wiki.csc.kth.se/i…
Habilidad de codificación
En la programación competitiva, escribimos piezas cortas de código. En general, las personas tienden a escribir código ilegible, no se centren en micro optimizaciones (principalmente se centren en optimizaciones de complejidad), lo que está en completo contraste con la forma en que escribimos código en software real.
Para mejorar su capacidad de codificación general, debe intentar contribuir a proyectos de código abierto. Contribuir al código abierto puede ser desalentador al principio, pero vale la pena el esfuerzo. A pesar de que hice muchos proyectos personales antes de contribuir a FreeBSD, aprendí más mientras contribuía a FreeBSD y trabajaba con mi mentor y comunidad que trabajando solo en mis proyectos personales.
Al contribuir a proyectos de código abierto, aprenderá cómo se escribe el código correcto, legible y limpio. Confía en mí, hay muchos programadores muy buenos de los que puedes aprender mucho. Aprenderá sobre los detalles internos del idioma, lo que sin duda lo ayudará a escribir código optimizado.
Comience con proyectos pequeños, en un idioma con el que se sienta cómodo trabajando.
Algunos enlaces útiles: –
¿Cómo participo o contribuyo en proyectos de código abierto?
¿Cuáles son algunos buenos proyectos de código abierto de nivel principiante en línea en los que puedo involucrarme?
Solo recuerda programar casi todos los días. No solo veas video conferencias. Respuesta del usuario de Quora a ¿Cuál es la peor forma de aprender a programar? A menos que codifique e implemente sus ideas, no mejorará. ¡Sigue practicando duro!
La mejor de las suertes !