X

CodeWars, ¿sirve para aprender a programar?

En este artículo te quiero contar sobre CodeWars, una plataforma para practicar programación a través de la resolución de ejercicios. Te voy a describir cómo es y a decirte si es útil como herramienta para aprender a programar.

Si bien ya llevo varios meses utilizando CodeWars, debo admitir que no he utilizado todas las funciones que tiene. Solamente me he concentrado en resolver ejercicios de programación con el objetivo, en mi caso, de fortalecer los conocimientos de JavaScript. Así que me centraré en esto en el presente artículo.

¿Qué es Code Wars?

CodeWars es una comunidad donde programadores de todo el mundo proponen y resuelven ejercicios de programación en diferentes lenguajes. Hasta donde tengo entendido es similar a LeetCode, otra plataforma para practicar programación.

Como toda comunidad o red social moderna, podés sumar puntos y así subir de nivel. También podés agregar a otros programadores amigos (o desconocidos) y crear tu clan.

Si estás buscando aprender una tecnología puntual cuando crees tu cuenta en CodeWars vas a poder seleccionar qué lenguajes aprender. A partir de allí, la misma plataforma te va a recomendar ejercicios en esas tecnologías.

Pero lo más importante de CodeWars son los katas

¿Qué es un kata?

Un kata es un ejercicio de programación. Toma su nombre del japonés y de las artes marciales.

Si viste Karate Kid 3 seguramente recuerdes al Sr. Miyagi enseñarle a Daniel-San una serie de movimientos combinados con ejercicios de respiración. El kata sirve de práctica para memorizar movimientos y para ganar concentración. Y lo mejor de todo es que se puede hacer en grupo o en solitario.

Desde ya, la analogía cae como anillo al dedo al mundo de la programación. Los katas aquí son ejercicios que cualquier programador puede hacer por su cuenta y tienen como objetivo entrenar la memoria, desarrollar la lógica y la capacidad para resolver problemas.

En CodeWars los katas tienen un enunciado, que a veces está bien detallado y con ejemplos, y otras veces no.

La comunidad cuenta con 8000 katas y estos están clasificados por dificultad y por tags. Así que podés buscar alguno que sea de tu interés. Si no tenés ganas de buscar, CodeWars te propone un ejercicio cada día en las tecnologías que hayas elegido al crear tu cuenta.

Si el enunciado te convence, podés elegir la opción Train. Allí pasás a la pantalla de resolución que se divide en tres partes fundamentales. La sección donde escribís el código para resolver el problema, otra sección con pruebas unitarias que te ayudan a testear el código y por último, la salida del código que escribís.

En todo momento podés correr los tests para comprobar el funcionamiento de tu código. También podés escribir en la consola para debuggear. Y si querés, podés escribir tests adicionales que te ayuden en la resolución.

Una vez que tenés la solución ya codificada y esta supera todos los tests, tenés la posibilidad de enviar el kata. En ese momento, se corren muchos más tests que analizan tu resolución. Podés ver la salida en consola de esas pruebas, pero no tenés acceso a ellas.

Si tu solución pasa esas pruebas más rigurosas, el kata queda resuelto. Sumás puntos y te dan la oportunidad de refactorizar el código para que quede más legible y presentable.

Pasada la etapa de refactorización, tu solución se hace pública y podés ver la solución propuesta por otros programadores.

Las mejore soluciones son votadas y también se pueden añadir comentarios para acotar, dar explicaciones o criticar el código ajeno. Esta parte de CodeWars es similar a un foro y si bien es la más interesante es también la más peligrosa. Más abajo te cuento por qué pienso así.

¿Cómo se clasifican los katas?

Cada kata recibe una clasificación en kyu’s. Los katas más fáciles son de 8 kyu y los más difíciles de 1 kyu.

A grandes rasgos podría decirte que los katas de 8 kyu son solamente para personas que se están iniciando en la programación.

Si ya sabés programar y estás aprendiendo una nueva tecnología, los katas de entre 7 kyu y 5 kyu son muy útiles para aprender APIs nuevas.

Al tiempo de estar en CodeWars notarás que para resolver muchos katas hay que aplicar conceptos de matemáticas. Esto se manifiesta con mayor peso en los katas a partir de 4 kyu. En mi caso, he resuelto alguno de 4 kyu pero ni siquiera he intentado con los de 3 para abajo.

Honor y rangos en CodeWars

A medida que resuelvas katas en CodeWars vas a recibir puntos de honor y vas a tener un rango. El rango es similar a los katas: va de 8 kyu a 1kyu. La resolución de ejercicios difíciles te dan más puntos y de esta forma subís de nivel más rápido. También existen otras formas de ganar honor como recibir votaciones positivas en tus soluciones.

Al momento de escribir este artículo tengo nivel de 4 kyu y si bien en algún momento llegaré a subir de nivel, no es algo que me desespere. Y no debería desesperarte a vos tampoco. ¿Por qué? Bueno, vamos con lo polémico de Code Wars.

Lo polémico de CodeWars

El gran problema de CodeWars y de plataformas como estas reside en la popularidad de las soluciones cortas y crípticas que nadie (ni el que las escribió) entiende.

Como te contaba antes, la sección donde ves las resoluciones puede ser peligrosa, especialmente para personas que recién se inician en la programación. Las soluciones más cortas (one liners) suelen tener los mejores votos, incluso cuando muchas veces son incomprensibles o, peor, tienen serios problemas de performance.

Podría resumir en que la popularidad de las soluciones de una línea convierten a CodeWars en una competición de «quién la tiene más corta». Y eso no es bueno. Lo ideal sería «quién la tiene más entendible y elegante».

No hay que olvidar que los programadores escribimos código para que pueda ser leído e interpretado, primero por nosotros mismos, pero luego, por cualquiero otro programador.

Otro problema de CodeWars son las malas clasificaciones de katas. Te puede pasar que encontrás un kata de 7 kyu y al rato de intentar resolverlo te das cuenta que es mucho más difícil de lo que creías. Era en realidad un kata de 4 kyu que alguien clasificó mal sin querer (o sin querer queriendo) y perdiste una hora de tu vida.

Vale la pena aclarar que un mismo kata puede estar disponible para diferentes lenguajes de programación. Y eso es algo que a veces genera problemas ya que una operación que puede ser trivial en un lenguaje, puede no serlo en otro.

Otro punto negativo que me molesta mucho son los ejercicios de matemáticas disfrazados de ejercicios de programación. Son aquellos donde se necesita aplicar una fórmula matemática avanzada para poder resolver el problema. Hay muchos de estos y es prácticamente imposible que se te ocurra la solución si no investigás.

Por último y no menos importante, la descripción de algunos katas deja mucho que desear. Hay personas que saben mucho de programación pero no tienen la capacidad para formular un enunciado. Una carencia que a mí particularmente me alarma del mundo de la programación.

¿Sirve CodeWars para aprender a programar?

Sí, sin dudas es una excelente herramienta para prácticar. Pero hay que complementarla con teoría y práctica en el mundo real.

Hay que recordar que muchos de los katas no sirven para nada más que para ejercitar la mente y ganar un poco en memorización.

Como te comentaba más arriba, si estás comenzando a programar o si ya sabés programar y estás aprendiendo una tecnología nueva, los ejercicios de 7 kyu hasta 5 kyu son más que interesantes.

Hay que prestar atención antes de comenzar a resolver un kata. ¿Por qué? Algunos tienen problemas porque los tests son defectuosos y otros porque quien creó el kata eligió redondear de una manera en particular. Otros porque, como te contaba, están mal clasificados.

Por lo tanto, te recomiendo que siempre revises lo siguiente antes de comenzar un kata:

  • Leer bien el enunciado. A veces entendemos lo que queremos entender  no lo que el enunciado pide.
  • Chequear la popularidad del kata. Hay un porcentaje que define si un kata es popular o no entre los miembros de la comunidad. Arriba del 90% es más que aceptable. Si está por debajo del 80% es porque debe tener algún problema.
  • Revisar los comentarios del kata. Esto es posible y si bien no se puede ver las soluciones de los miembros de la comunidad, sí es posible detectar quejas de otros programadores. Si una queja se repite, entonces el kata puede llegar a tener algún problema.
  • Evitar los ejercicios donde hay redondeos. Si recién comenzás a programar tal vez no te des cuenta, pero si ya tenés años en esto, vas a poder detectarlo. ¿Cómo darse cuenta si el kata puede tener problemas de redondeo? Si el kata involucra alguna división matemática, entonces quizás haya problemas de redondeo.
  • Detectar si es un ejercicio de matemática encubierto. Como te decía, hay algunos katas que se resuelven aplicando fórmulas o algoritmos ya conocidos y que son difíciles de deducir.

Concluyendo

CodeWars es una herramienta que puede ayudarte a aprender a programar, pero debe utilizarse con cuidado y complementarse con otros métodos de aprendizaje.

Más allá de los problemas que te comenté, yo te la recomiendo y te invito a que te sumes a la plataforma y me sigas alli: Mi perfil en CodeWars.

También podés seguirme en Instagram y en Twitter.

Espero que este artículo te haya sido de utilidad.

Hasta la próxima.

Categorías: Programación
Etiquetas: codewarskata
Alejandro De Luca: Soy programador web freelancer y blogger. Desde hace más de 6 años me desempeño de forma independiente. Reúno en este espacio experiencias y pensamientos sobre el modo de vida freelancer.