Héctor BlisS

@blissito

hace 2 años

Programa juegos "arcade" para dominar JavaScript

arcade games

No es sólo porque soy parte de la generación millennial o tal vez sí, pero me gustan los videojuegos "Arcade" (sí, esos videojuegos con pixeles que parecen imágenes que no han terminado de cargar) porque son tan minimalistas tan directos, con un uso hermoso de las matemáticas (trigonometría y álgebra sobre todo) que de inmediato se vuelven hermosos a la vista y cuando los juegas son simplemente increíbles, y sin mencionar que los clásicos no te obligaban a mirar un video-comercial de 2 minutos para darte una maldita vida extra, las obtienes de una tortuga atorada en un escalón. 🐢🪜

Y sí, la verdad es que invertía muchísimas horas con mis amigos en la tiendita de la esquina con "don Rafa" que tenía los últimos lanzamientos "Arcade", ahora que lo pienso con calma la verdad es que el Arcade no sólo despertó en mí mucha curiosidad sobre programación al pensar "¿cómo es que crean estos juegos tan chingones?" (sí, yo ya era grosero de niño y así pensaba) también me ayudó a desarrollar mis habilidades sociales, pues en las "maquinitas" que era como llamábamos a este hermoso lugar, también tenías que convivir con tipos más grandes que venían a jugar y te quitaban (yo estaba chiquito) o te empujaban y robaban tu crédito para ponerse a jugar ellos. Esto no era un robo realmente, tenía que ver con autoridad y dominio (si era un abuso, pero no éramos tan sensibles en ese entonces) ese muchacho malvado se convertía en tu "némesis" pero al pasar los días y una vez que te sentías suficientemente bueno en el videojuego te atrevías a "echar una reta", retabas a este "buller" y lo humillabas (ganándole la partida) públicamente, lo que automáticamente te daba estatus y una increíble sensación de autoestima restaurada, te volvías leyenda de barrio por algunas semanas.

A veces tocaba sólo ver jugar a alguien mayor que además lo hacía muy bien y podías aprender de otros sin tener que invertir horas viendo un maldito streaming de alguien en calzónes (no odio los game-streamings, sólo los considero ridículamente graciosos en su mayoría, pero si, se hace mucho dinero jugando en calzones). Tenías a la mano a tus amigos que jugaban mejor, podías preguntarles los trucos, te enseñaban algunas estrategias y cuando alguien llegaba al nivel donde se podía encontrar un bug, un truco o un "easter egg" era un evento espectacular. Todos dejaban las demás maquinitas y nos amontonábamos (incluso usábamos banquitos) para poder ver el gran suceso. Era real, jugar videojuegos era una experiencia social de verdad. Ahora que lo recuerdo la nostalgia me invade, 🥺 ¡era hermoso! Y, ¿cómo no voy a querer usar esta nostalgia para dominar una materia que no tiene nada de sencillo, como lo son los algoritmos en JavaScript? maquinitas

JavaScript no es fácil.

En el contexto de esta nueva era donde la web se ha comido por completo al mundo y todas las empresas montadas en internet se pelean sin misericordia por la atención de los usuarios, mismos que son una gran cantidad, se ha convertido en una necesidad/oportunidad aprender a programar, incluso de forma muy básica, para lograr ser parte de los trabajos del futuro o crear un negocio de internet.

En los años de mi carrera en los que he tenido la oportunidad de enseñar, me di cuenta que muchos de mis alumnos (principalmente en bootcamps) son personas que están cambiando de carrera. Hay una cantidad inmensa de bootcamps que te ayudan a hacer eso (superficialmente), pero en el afán de aprender todo lo necesario para entrar a la industria en sólo unas cuantas semanas terminas aprendiendo muy poco de mucho, muy poco de JavaScript. Claro que hay personas que aprovechan al máximo este tipo de educación, pero no la mayoría.

Hay otro tipo de profesional que en realidad es más consciente de que no es necesario cambiar de carrera para usar las tecnologías web a su favor, que no necesariamente se tiene que ser ingeniero de software para programar en la web, y es que muchos de mis alumnos han tenido que soportar "el bootcamp" completo para terminar dándose cuenta que lo que realmente necesitan es crear fundamentos web (HTML, CSS, JS).

Aquí comienza la triste historia pues el módulo para aprender JavaScript en un bootcamp puede ser increíblemente corto y superficial (¿10%-30%?) pero aún así, JavaScript es requerido para el resto de los ejercicios, creando una frustración que se va acumulando porque aún no te hacen sentido las “condicionales”, “loops”, "callbacks", "spread operators", "arrays", "closures", “array functions”, “async await”, “promises”, etc. Y como ciertamente JS no es fácil, no se profundiza en su dominio,

los 2 meses que duran la mayoría de los bootcamps podrían fácilmente ser destinados por completo a dominar el lenguaje primero.

También me tocó la suerte de explorar la "cultura hacker" cuando empecé a programar, y la cosa más importante era disfrutar. Disfrutar usando tu inteligencia, pensando correctamente, usando el pensamiento crítico mientras te dejabas llevar por tu curiosidad, algo tan visceral que nos hace humanos. Si hemos llegado lejos en estos últimos cientos de años ha sido gracias a nuestra curiosidad como especie y la ciencia que nos ha permitido estructurar nuestra curiosidad para compartirla a través de generaciones de curiosos.

hackers in the 90's

Esto es muy importante para mí, pues es un fundamento filosófico en mi vida, no sólo quiero saber hacer cosas que le sirvan a un empleador, o que tengan una salida comercial forzosa. ¡NO!, eso es una vida muy triste, yo también quiero saber hacer cosas que sean geniales en sí mismas, que pueda compartir, que me hagan sentir orgulloso, capaz, inteligente, que me dejen ayudar a otros, que me ayuden a desarrollarme como individuo. Pero más importante aún, que me permitan desarrollarme como un ser humano curioso que vive en el siglo XXI con toda esta tecnología. En mi mente si soy un humano que está rodeado de tecnología y robots hechos a base de software, cuando menos debería poder crear uno propio. Esto no solo hace "match" con la era en la que vivo, también me permite tener una relación saludable con mi entorno, pues al saber cómo funcionan estos dispositivos y apps puedo controlar cómo y cuando los uso y no sólo ser un consumidor inconsciente. ¿Qué nunca vieron los supersónicos? cometín hackiando Por muchos años no he podido aprender cosas que me llaman la atención porque "son hobbies que no te dan dinero", entonces me descubro a mí mismo no como un ser humano curioso, si no como una máquina que tiene que embonar en la gran industria y hacer su pequeña parte insignificante para poder tener una "vida productiva"

Ok ok, no me voy a poner intenso con el sistema, eso lo dejaré para otra ocasión 😜 pero entiendes mi punto ¿no? Tenemos derecho a la curiosidad intelectual por el mero hecho de disfrutarlo.

Si quieres saber más sobre explorar tu curiosidad te dejo este hilo maravilloso de Scott Hanselman (en ingles)

Pero, yo creo que lo más genial de aprender a programar y dominar un lenguaje como JavaScript es que de nuevo, para el siglo en el que vivimos y es más; para la década en la que estamos no hay forma de que domines JavaScript sin que le encuentres una salida comercial/laboral. El mundo ya está basado en software y JavaScript es el rey de la web.

Y es aquí donde te cuento cómo he usado este input para ayudar a estas personas que en realidad no necesitan un cambio de carrera, lo que necesitan es aprender a programar.

Personas que con sus habilidades actuales puedan crear experiencias web dinámicas e inteligentes dentro de su carrera actual con JavaScript.

Puedo seguir añadiendo casos pero la verdad que no tengo imaginación (no hice una investigación para esto) son sólo algunos casos de ex-alumnos que conozco. Estos ex-alumnos a los que hoy les diría "no necesitas el bootcamp completo, necesitas enfocarte sólo en JavaScript", agregar los frameworks y herramientas una vez que dominas JavaScript es mantequilla en pan recién hecho y calientito (el pan caliente es tu dominio de JavaScript). Aprender tantas herramientas en bootcamps de 2 meses sin un fundamento robusto en JavaScript es untarle nuestra mantequilla a un pan viejo y frío de varias semanas fuera de la bolsita. 🥖

pan duro

Usando JavaScript para crear algo con emoción.

Las emociones son una de las características que nos define como seres humanos, que incluso nos guía, sentir es importante. Cuántas veces has escuchado "escucha tus instintos", "lo sabrás cuando lo veas", "escucha tu yo interior", "hazle caso a tu estomago", (ok esa me la inventé pero es real), "lo vas a sentir". Lo que en realidad decimos es que nuestras emociones tienen una opinión, a veces algo puede parecer una gran idea, todo se ve perfecto pero simplemente no sentimos nada, no nos provoca, no nos emociona ni siquiera nos hace sentir temor.

Cuando eres un crío y ves el carrusel en la feria, sientes una emoción que se desborda por subirte y montar el caballito más grande de todos, pero cuando eres un adulto ya no sientes nada al ver un carrusel (tal vez nostalgia o ternura).

¿Recuerdas lo que sentías de niño y como te fascinaba decirle adiós a tu mamá en cada vuelta del carusel y ella bien linda te volvía a saludar mil veces? ¡oye, recordar es volver a vivir!

Pero qué tal de adulto cuando se crea la posibilidad de ir de vacaciones a la playa, comer algo que se te ha antojado por días, ver a la persona que te gusta, la llegada de un paquete que esperas, lanzarte del "bungee", brincar a un cenote, en parapente o paracaídas, pasear en moto, o pedir un aumento, bueno, tal vez esa última tienen que ver más con el miedo, pero entiendes mi punto de sentir algo. 🤭

Lo que intento decir es que a veces nos aventamos a aprender JavaScript o cualquier otra cosa sin la mínima emoción, es decir, lo hacemos porque sabemos que es necesario, tal vez porque es un requerimiento de nuestro trabajo o porque tuvimos algo de motivación hace algunos días pero ya se nos pasó. Usar la motivación para lograr algo que nos proponemos es una mala inversión, como lo podrás leer en estos tantos libros comerciales (Atomic Habits, The Power of Habit, The One Thing, etc.). Es mejor usar estrategias que te permitan seguir por un lapso de tiempo mayor a lo que dura la motivación del domingo. Es por ello que programar videojuegos resulta un gran "hack" porque al crear algo nos mantenemos emocionados por terminar, algo que podemos imaginar cómo debe funcionar y que incluso nos vuelve cuidadosos con los detalles para que sea idéntico al original o que se comporte como lo esperamos/recordamos es crucial para no abandonar nuestro proyecto, incluso si nos enfrentamos a obstáculos retadores como la trigonometría o álgebra que nuestro videojuego pueda requerir.

Lo que sentimos al imaginar un videojuego hecho por nosotros mismos es genial, pero la emoción de terminarlo es única.

Mario Bross

Crea videojuegos conmigo usando JavaScript

No quiero enrollarme más contándote el porqué es una buena idea usar esta emoción/nostalgia para enfrentarnos a un proyecto retador, mejor vamos a experimentarlo juntos. Si es tu caso que aún no dominas el lenguaje JavaScript (lo cual podría ser todo un tema para una próxima entrada en el blog), ya que puedes pasar años pensando que sabes usar JavaScript pero en realidad sólo lo conoces superficialmente porque el uso de las características del lenguaje en nuestro trabajo es muy limitado, sobre todo si sólo lo usamos con algún framework para maquetado (React, Angular, Svelty, etc.) o hasta con librerías auxiliares que nos evitan crear algoritmos complejos como "lodash". Claro, entiendo que las usamos por velocidad y porque es lo mejor para nuestro empleador, pero ¿y nuestra carrera?, ¿y nuestra curiosidad intelectual?

Por eso estoy trabajando (esto es un "sneak peak") en una serie de micro-cursos que sirven como taller o hasta como side-project para que dominemos JavaScript creando pequeños videojuegos "Arcade" explorando las capacidades del lenguaje, al mismo tiempo que implementamos conceptos de ciencia de cómputo en la creación de estas piezas. Y, esto es saludable para aprender y dominar este lenguaje sintiendo emociones positivas en todo el proceso.

En educación hay una cosa llamada "drills" que en un injusto resumen tiene que ver con: “descomponer un tema complejo en pequeñas piezas y poner atención a aquella pieza que nos cuesta más trabajo, con esto al dominarla podemos mejorar nuestro desempeño con el tema en general”. Te dejo aquí un artículo sobre esto.

Con estos micro-cursos busco concentrarnos en JavaScript para dominarlo, ser mejores en el uso de este lenguaje y con esto mejorar en general nuestro uso de las herramientas donde usamos JavaScript.

Así que, si te interesa practicar la sintaxis y construir algunos algoritmos, déjate llevar por la nostalgia conmigo mientras construimos videojuegos con JavaScript.

Puedes comenzar construyendo Pong: https://videogames.offers.hectorbliss.com/

With love ❤️ by Héctor Bliss. Happy coding.

Enlaces relacionados

Suscríbete a mi lista VIP

Y no te pierdas las actualizaciones

No te enviaré spam. Desuscríbete en cualquier momento.