Existen muchas formas de aprender a programar. Puedes seguir tutoriales, hacer cursos, ir a la universidad, aprender jugando o a través de desafíos de programación. Ahora te contaremos cuáles son los mejores sitios para aprender haciendo desafíos de programación.
Esta es una forma divertida de ampliar tus conocimientos. Además, te ayuda a crear una red de contactos, ya que muchos de los sitios te brindan la posibilidad de formar parte de una comunidad. Veamos cuáles son los más recomendables.
1. TopCoder
TopCoder sirve para distintas ramas de la industria: UX/UI, web developer, QA & Testing y Data Science. Competirás contra otros desarrolladores en la resolución de retos que puedes buscar a través de distintos filtros. Así encontrarás retos para Apache, Android, WordPress, .Net, y también podrás filtrar por temática, por ejemplo hay retos sobre arquitectura web, diseño, entre otros.
La página tiene contacto con empresas que pueden ver el desempeño de los desarrolladores e incluso pueden crear sus propios desafíos de programación para luego contratar a los que los resuelvan mejor. Los mejores de TopCoder suelen ser desarrolladores que participan normalmente de competencias de programación.
2. HackerRank
Aunque está diseñado para quienes ya tienen experiencia escribiendo código, HackerRank es uno de los sitios web de programación competitivos más grandes que existen. Con desafíos que se pueden completar en línea y tablas de clasificación para ver su clasificación, esta comunidad de codificación puede mostrarte cómo tu programación se compara con la de otros programadores.
Sin embargo, no todo es un concurso; HackerRank brinda una gran cantidad de tutoriales y explicaciones para fortalecer habilidades, y dado que está diseñado para ayudar a los desarrolladores a hacerse notar entre las principales empresas tecnológicas, puedes terminar consiguiendo un trabajo gracias a tu desempeño en el sitio.
Cuando te suscribes a HackerRank puedes elegir la opción en la que indicas que quieres prepararte para una entrevista de trabajo y decir en cuánto tiempo la tienes, entonces te pondrán desafíos específicos para ayudarte en tu entrevista.
Hay desafíos de Java, SQL, Python, Ruby, Inteligencia Artificial y más temas.
3. Codewars
Codewars es una de las páginas más divertidas de desafíos de programación, ya que permite distintas modalidades: puedes completar desafíos contra otros programadores para ir ganando puntos de honor y mejorar en el ranking o puedes refactorizar código escrito por otros. También puedes unirte a otros programadores y competir juntos como un clan.
Codewars está planteado como si fueran desafíos de karate, y una vez que logras cierto status en el ranking te conviertes en un maestro que puede enseñar a otros discípulos. En Codewars puedes practicar 29 lenguajes de programación diferentes, como C, C++, Go, JavaScript y Swift.
4. CodinGame
Si quieres aprender a codear jugando, CodinGame es una de las mejores alternativas. Te permite practicar a través de juegos y desafíos de código. Con partidas de una sola ronda y modos para un solo jugador y multijugador, esta plataforma te brinda la oportunidad de practicar tu codificación de una manera divertida.
La vuelta de tuerca de CodinGame es que puedes escribir los códigos de los juegos que escribes. Además, tiene batallas de codificación de 5 minutos, por lo que puedes practicar muchas cosas diferentes a lo largo del día.
Otra de las alternativas de que tiene este sitio son las “Code Golfing”, en las que el desafío es acortar los programas, sin importar cuán legible sean, el objetivo es ahorrar la mayor cantidad de caracteres.
Descubre las habilidades que necesitas para ser programador de video juegos.
5. LeetCode
En LeetCode encontrarás un listado de desafíos en su pestaña de Problems, una vez que abres uno, podrás elegir en qué lenguaje resolverlo. Adentro también podrás ver la solución de cada ejercicio. En la pestaña de Contest tendrás los campeonatos, generalmente se crea uno nuevo cada semana.
También tiene la opción de practicar para entrevistas de trabajo. Lo malo es que las preguntas de las empresas más importantes están bloqueadas en la versión gratuita y solo son accesibles en la versión prémium. Los usuarios prémium también pueden acceder a cursos. Y si no lo eres, puedes comprar los cursos de forma individual.
Por las características, LeetCode es más usada para prepararse para entrevistas técnicas que para aprender.
6. CodeChef
La competencia puede ser el mejor motivador para aprender, y CodeChef ofrece exactamente eso. Esta plataforma con sede en India es una de varias que permite a los usuarios medir sus habilidades con concursos desafiantes contra otros programadores. Por lo lo que es una excelente forma de practicar si eres principiantes.
Claro que las competencias son amistosas, y los participantes suelen escribir publicaciones y tutoriales para ayudarse mutuamente a aprender. Puedes filtrar los desafíos de programación por niveles de dificultad y por temas, como array, strings, algoritmos, etc.
CodeChef tiene dos programas de aprendizaje, uno si quieres ser autodidacta y otro en el que tienes un mentor. En el segundo caso tiene un costo.
7. Project Euler
Project Euler es muy útil para quienes necesitan mejorar sus habilidades en matemática, ya que ofrece la oportunidad de resolver problemas matemáticos con script. No puedes escribir el programa directamente en el editor de la página, sino que tienes que hacerlo en tu propio editor.
Los desafíos te obligan a crear fórmulas matemáticas para encontrar soluciones a los problemas planteados. Desde resolver la suma de los números de la secuencia de Fibonacci hasta resolver ecuaciones.
8. Geektastic
Con evaluaciones técnicas revisadas por humanos, Geektastic permite a las empresas personalizar los desafíos de codificación para la adquisición de talento y la capacitación de su equipo. Si ya tienes experiencia programando, te puedes unir a la comunidad de revisores de Geektastic para crear y probar desafíos, y te pagarán por revisar el desempeño de los candidatos.
Los desafíos de código se ofrecen en Java, Python y PHP y JavaScript. Antes de empezar a competir tendrás que crearte una cuenta como Developer, en la que tienes que decir cuál es el lenguaje principal con el que quieres trabajar.
9. SPOJ
Sphere Online Judge, o SPOJ, se usa para aprender a programar y a crear algoritmos. Esto se hace a través de los miles de desafíos y problemas prácticos que se encuentran en el sitio. Existen diferentes categorías en las que puedes ganar puntos, como desafíos, tutoriales y acertijos. Los torneos planteados se realizan en más de 45 lenguajes de programación.
SPOJ tiene un sistema para evaluar los programas enviados por los usuarios, ya que estos pueden diseñar sus propios concursos o participar en desafíos en línea en distintos niveles. También tiene un foro de discusión muy activo, ya que SPOJ tiene una comunidad de más de 700 000 usuarios.
10. Frontend Mentor
Su nombre lo dice todo, Frontend Mentor es un sitio para mejorar tus habilidades como desarrollador front-end. Tiene desafíos gratuitos y otros prémium.
En todos los desafíos de programación necesitas saber HTML y CSS y en muchos tendrás que aplicar JavaScript y en algunas podrás practicar el uso de una API. Frontend Mentor es un sitio de aprendizaje comunitario, así que tiene un canal de Slack en donde puedes hacer consultas si te estancas en alguno de los desafíos. Además, tiene una sección de cursos, con alternativas gratuitas y de pago.
11. Frontend Practice
Nos despedimos con uno más para practicar las habilidades de front-end a través de desafíos de programación.
Frontend Practice plantea desafíos en los que tienes que recrear sitios webs reales. Solo tienes que elegir cuál web quieres clonar y tendrás la lista de colores que tienes que usar y una lista de recursos útiles que podrías necesitar para hacer el sitio web, como una guía de flexbox o un tutorial de cómo usar hover.
En Frontend Practice eligen sitios que tengan buena estética y un buen diseño, por lo que estarás practicando y aprendiendo a hacer sitios de calidad.
Antes que te vayas, te recomiendo que leas esta guía de juegos con los que también puedes aprender a programar.