Lo que aprendí del Toptal JS Speeding Challenge

El toptal js speeding challenge concluyo ya hace unas semanas, y tenía premios geniales como $1000 gift card en amazon y unos airpods para el primer lugar. Lo que aprendí yc de cómo podrías ganarlo.

Muchos como a mí les habra salido la publicidad del challenge de toptal, apelaban al orgullo de si podías resolver algo con js rápido, y no me convencían, paso una semana con estos anuncios constantes hasta que decidí participar. Lo curioso es que la publicidad que funciono fue una que apelaba a mi nacionalismo. Algo tipo «ayuda a que tu país rankee mas alto». Me parece curioso que eso me llevo a la acción.

El primer intento

Bueno dije yo, participe y resultaron ser los típicos ejercicios de JS que hacen en las entrevistas laboras. Algunos mas fáciles como retorno un numero al cubo, o sacar la raíz cuadrada de un número. Otros un poco más complejos como encontrar anagramas y palíndromos.

En mi primer intento saque 15 puntos, fueron 3 ejercicios acertados en 2:30 minutos. Me pareció muy poco tiempo pero pensé, de esto se ha de tratar, quién typea mas rapido. Al terminar mi tiempo me llevo a mi scoreboard nacional, solo habían unos 8 participantes y estaba sexto en el listado de Guatemala, pero el primer lugar tenía 4500 puntos. Eso es imposible dije yo, o logro hackear el timer o esta haciendo algo más, porque no hay manera de escribir tan rápido. Luego vi el score global y era lo mismo, arriba de 4000 puntos.

Lo que necesitaba era automatización

Después de ver los scores más altos encontré que esto tenía que ser un bot, o algo similar. Investigue un poco y decidí probar https://github.com/puppeteer/puppeteer. Resulta que esta herramienta se utiliza para automatizar pruebas y acciones en un navegador tal y como la haría una persona, pero mucho más rápido. Pase dos días perdido probando e investigando como niño que descubrió algo nuevo.

Resulto que el Toptal JS Speeding Challenge resulto ser mas un concurso de velocidad de automatización que de Javascript.

Solución

Ya con esta solución solo fue cuestión de tiempo para encontrar el patrón y automatizar todas las respuestas. Yo entre el penúltimo día de la competencia, logre una puntuación alta, mas no perfecta. Logre quedar en el puesto 15 de América y como en el 97 a nivel global. Mi solución puede encontrarse aquí https://github.com/kenny08gt/toptal-speed-coding-challenge-js

Leaderboard en América
Leaderboard en Americas (mejor posición que llegue, luego quede 15)

Que queda por mejorar y aprendí

Realmente creo que mis soluciones se pueden mejorar para dar un mejor tiempo de respuesta, sin embargo creo que es más fundamental encontrarse en un lugar con poca latencia. En un concurso tan competido, donde el tiempo es la medida de calificación, sería perfecto tener una conexión con poca latencia. Donde en vez de tardarse 300ms la conexión pudiera darse en menos de 100ms. Multiplica eso por 36 ejercicios y ya son mas de 3 segundos menos, por dar un ejemplo. Esta podría ser la clave para ganarlo o rankear mas alto.

No te olvides de pasar otros de mis posts

Mi experiencia con DataScience

Soy un ingeniero de software con mas de 4 años de experiencia laboral, me gradué en el tiempo previsto de la carrera lo cual habla de insistencia, compromiso y oportunidad, más que de mi capacidad. Me considero una persona promedio.

Inicie un master en Data Science en la universidad Galileo de Guatemala. Porque? Tengo la idea de seguir superándome, así encontrar mejores oportunidades laborales, ganar más dinero, e ir progresando junto a los míos. Se que existen mas postgrados aplicable a mi carrera pero este fue análisis

  • Cualquier cosa relacionada a redes un rotundo no, no fue lo mío durante mi carrera universitaria
  • Cosas relacionadas al management. Claro atrae por ser puestos de gerencia o jefes, pero de pensar llevar clases cómo contabilidad me desinflan enormemente.
  • Seguridad informática, se me hace un mundo lleno de burocracia y edificios grises y tristes llenos de gente en traje frustrada.

Entonces quería algo técnico que supusiera una mejora salarial al final. Mi experiencia fue emocionante pero debo decir que no sabía al 100% que me esperaba, me tope con un programa mas dirigido a personas no técnicas con background estadísticos que a personas técnicas con no background estadísticos.

Las clases de programación o técnicas eran a pasos de bebe, desde cero, pero las clases estadísticas ya eran avanzadas. Esto llevo a frustración en estadística, y aburrimiento en programación.

Termine exitosamente el postgrado inicial, pero me quede con un sabor amargo, puedo hacer todo en teoría, obtendré los resultados esperados, pero no entiendo el porque, resulta que necesitaba una fuerte base de algebra lineal. Hubiera sido un buen requisito llevar un curso previo al master.

Aunque este primer acercamiento no fue el deseado, creo que hay mucho potencial en el area y sera algo interesante de volver estudiar en un futuro cercano