¿Cómo mejoro la habilidad para resolver problemas como programador?

Resolver acertijos de programación es una forma divertida de desarrollar tus habilidades lógicas y de resolución de problemas. Además, cuando se está familiarizando con un nuevo lenguaje de programación, resolver acertijos para ese idioma puede ayudar a acelerar el proceso de aprendizaje.

Aquí están los 10 mejores sitios populares de rompecabezas de programación que lo ayudarán a evaluar su pensamiento y mejorar su programación, resolución de problemas y habilidades de pensamiento lógico.

1. Programación de praxis

Programming Praxis es un blog que incluye una variedad de problemas interesantes con soluciones generalmente disponibles en varios lenguajes de programación diferentes.

2. CodeKata

CodeKata es un blog de acertijos de programación escrito por Dave Thomas, quien es el más famoso por el innovador libro Pragmatic Programmer. Los acertijos involucran muchos problemas que son directamente relevantes para la programación del mundo real, por lo que este es un buen lugar para repasar sus habilidades de codificación.

3. TopCoder

TopCoder es una comunidad activa de programación de desarrolladores que adoran resolver acertijos. Hay muchos desafíos activos y algunos de ellos con premios en efectivo.

4. Proyecto Euler

Citado de su página principal: “El Proyecto Euler es una serie de problemas matemáticos / de programación de computadoras desafiantes que requerirán más que solo conocimientos matemáticos para resolver “.

5. Rompecabezas de ingeniería de Facebook

Facebook tiene una colección de acertijos de programación muy desafiantes que, si logras resolverlos, ¡podrían darte trabajo en Facebook! Las soluciones se aceptan en una variedad de idiomas, incluidos Erlang, PHP, Perl, Python y Ruby.

6. Python Challenge

Python Challenge presenta acertijos que le piden que escriba pequeños programas de Python para resolver. El nivel de dificultad se vuelve progresivamente más difícil y más críptico. ¡Este es un excelente sitio para programadores / desarrolladores que les gusta resolver problemas!

7. Concursos de programación de Al Zimmermann

La autodenominada “ arena donde los programadores informáticos dementes compiten por la gloria y por algunos premios geniales ” es una excelente manera de participar en la comunidad de programación. Los concursos se realizan cada seis meses. Aunque el diseño web no es excelente, sigue siendo un sitio divertido para programadores informáticos.

8. Ruby Quiz

Ruby Quiz es una colección de desafíos de programación de Ruby que se actualiza semanalmente. Aunque hecho para Ruby, estos desafíos se pueden resolver en otros idiomas.

9. C Rompecabezas

C Puzzles presenta rompecabezas de programación específicos del lenguaje de programación C (y todas sus peculiaridades). Dado que muchos lenguajes son de estilo C o se derivan directamente de él, incluso si su lengua de programación nativa no es C, existe una gran probabilidad de que aún aprecie y comprenda estos acertijos.

10. 99 problemas de Prolog

99 Prolog Problems se adapta al lenguaje de programación Prolog, pero la gente ha proporcionado soluciones en Python, Ruby, Haskell, Scala y otros. Superar estos problemas es una forma maravillosa de aprender un nuevo idioma.

* Bonus: Cifrado mental

Mind Cipher no se incluyó en el top 10 porque este sitio no requiere que hagas ninguna programación. Sin embargo, sí incluye los ” juegos de ingenio más grandes del mundo, acertijos lógicos y desafíos mentales “, así que si estás buscando un entrenamiento mental rápido, ¡este es el lugar para ir!

Fuente

Practica No hay ningún truco para resolver problemas, en realidad no. Elija problemas, descubra cómo resolverlos. Preferiblemente, presente proyectos que le interesen genuinamente. De esa manera, estará motivado para terminarlos y sortear cualquier bloqueo que pueda ocurrir.

Aprender Aprenda nuevos lenguajes de programación, especialmente si son diferentes de los que ya conoce. Luego use esos idiomas para crear proyectos en el dominio en el que son buenos. Lea acerca de cómo otros programadores resuelven problemas, ya sea usando un paradigma como FP, OOP o LP, o usando una metodología. Vea transmisiones de pantalla y codificación en vivo. Sin embargo, recuerde siempre: los paradigmas no son religiones. Mezcle y combine según lo necesite, son solo marcos para ver problemas. Puede resolver acertijos si lo desea, pero me resulta mucho más productivo proponer ideas de proyectos y luego trabajar en ellas.

Piensa A menudo me resulta útil “salir de la cinta transportadora” y ver pasar mis pensamientos: metacognarse, por así decirlo. Piense y analice cómo resuelve problemas, por qué eligió una solución particular, cuál es su sentido del estilo de codificación. Piense en las ventajas y desventajas de su estilo de pensamiento, compárelo con los demás. Esto puede ser muy esclarecedor.

Recuerde: siempre hay más para aprender. Nunca lograrás el dominio completo. ¡Manten una mente abierta!

Esta es una pregunta multifacética, tan descarado: mira mis otras respuestas. Respondí varias preguntas que cubren elementos específicos de esta pregunta, y respondí con más detalle allí.

La habilidad para resolver problemas es el corazón de la programación. Los programas están escritos para resolver problemas y sin una buena habilidad para resolver problemas, siempre tendrá dificultades para programar y seguirá siendo un programador de bebés que necesita otros programadores para cuidarlos (siempre necesita alguien que les diga qué y qué hacer en cada momento). etapa de escribir un programa).

Las siguientes sugerencias son algunas de las formas de desarrollar sus habilidades para resolver problemas:

1 Matemáticas: las matemáticas siguen siendo la mejor manera de desarrollar sus habilidades para resolver problemas. Todos los ejercicios que se le dan para resolver son un montón de problemas que esperan que los resuelva. Aunque deben ser problemas de la vida real, todos siguen los mismos procedimientos para resolver problemas de la vida real o problemas de programación. Cuanto más estudias matemáticas, más desarrolla tu cerebro y aumenta tu capacidad de resolución de problemas. En matemáticas, se enfrentará a algunos problemas que no sabe por dónde comenzar, pero su capacidad para comprender el problema, desglosarlo y resolverlo para obtener la respuesta correcta es el “hilo conductor” de la programación.

2: No siempre corras para buscar ayuda en cada desafío de programación que se te presente : no estoy diciendo que sea malo para ti hacer preguntas sobre IRC, quora, stackoverflow, etc., siempre que tengas algún desafío de programación, pero siempre estás corriendo para esos Los lugares donde buscar ayuda en cada desafío que la programación te presente es un mal hábito y nunca aumentarán tu habilidad para resolver problemas y tu confianza. Solía ​​hacer esto mucho. Cada vez que encuentro algún desafío de programación, no importa cuán pequeño sea, no creo, no trato de buscarlo en Google, ni siquiera trato de pasar el tiempo suficiente para resolverlo, solo corro al canal IRC pidiendo ayuda. Aunque la gente fue útil y pude resolver el problema con su ayuda, noté que en realidad no estaba creciendo en términos de mis habilidades para resolver problemas y mi confianza. Lo mejor es buscarlo en Google, combatirlo, descifrarlo hasta que puedas resolver el desafío. Si aún no puede resolverlo, puede ir y pedir ayuda.

3: Practique siempre: aprenda a resolver muchos desafíos de programación en hackerRank y otros sitios web, y también construya sus propios proyectos. La verdad es que, cuanto más resuelva problemas de programación, más aumentará sus posibilidades de resolver el próximo problema / desafío.

5: Juega juegos de lógica: juegos como vítores y otros juegos de lógica desarrollan la parte lógica de tu cerebro muy rápido y esto aumenta directamente tus habilidades para resolver problemas.

6: Desarrolle el hábito de enamorarse de los problemas / desafíos de programación difíciles : los desafíos de programación Trivia no agregan ningún valor a sus habilidades para resolver problemas. Es difícil una vez que se abre de golpe y lo empuja al siguiente nivel. Cuanto más te enamores de resolver preguntas / desafíos difíciles, más disminuye tus posibilidades de deshacerte de las preguntas / desafíos, más aumentan tus posibilidades de resolverlo. Esto definitivamente impulsará tus habilidades de resolución de problemas al siguiente nivel

Aquí hay algunas ideas no convencionales.

Aprende y juega al Texas Hold Em Poker. El problema es bastante fácil, pero el corazón del póker es la información, la probabilidad y la retención de información.

Lea los libros y cuentos de Sherlock Holmes de Arthur Conan Doyle. Es solo un tipo de resolución de problemas, pero es un lugar para comenzar.

Escribe mucho de tu propio código. Lee muchos códigos de otras personas.

Resolver problemas en Hackerrank

Apéguese a un enfoque sistemático y ramifíquese a partir de allí a través de experiencias.

Y siempre verifique sus suposiciones basadas en hechos y datos.