Maze Adventure y el placer de aprender con IA

A principios de año me entró curiosidad por entender cómo se programa un videojuego retro, como los que jugaba de pequeño. No soy gamer, no conozco la industria, ni tenía tiempo para complicarme la vida con un hobby exigente. Pero algo hizo clic.

Recordé aquellos títulos de principios de los 90 —Prince of Persia, Loom, Indiana Jones and the Last Crusade— que jugaba en mi viejo 286 con pantalla EGA y MS-DOS. Y me pregunté: ¿cómo funcionaban por dentro? ¿Cómo se hacían esos juegos desde cero?

No quería usar Unity ni motores gráficos modernos. Quería entender lo básico. Desde abajo.

Así nació Maze Adventure.


Aprender desde cero, pero no solo

Nunca había hecho nada parecido. No sabía por dónde empezar. Pero ahí entró en juego la IA.

Uso herramientas como CursorAI o GitHub Copilot a diario en el trabajo. Y tengo suscripción personal a ChatGPT. Uso la IA para un sinfín de opciones. Pero si tuviera que quedarme con un solo uso que me aporta valor real, sería este: aprender.

La IA me permite ir directo a lo que necesito. No sustituye el aprendizaje, lo acelera. Le puedo preguntar justo lo que no entiendo, pedir que me resuma algo a mi nivel, debatir entre varias opciones. Es como tener un mentor siempre disponible. Un compañero de pair programming que no se cansa, que responde a tus preguntas sin juicio y que además te ayuda a pensar.


IA como amplificador del foco

Maze Adventure no es un proyecto ambicioso. De hecho, es muy modesto. Pero tiene algo que otros side projects míos no tuvieron: continuidad.

¿Por qué? Porque he podido centrarme en lo que me interesa —la parte técnica, la programación a bajo nivel— y dejar que la IA me cubra en las partes que no me motivan tanto, pero que igualmente necesito: historia, gráficos, sonidos, referencias, etc.

En el pasado, muchos de mis proyectos se estancaban porque requerían demasiada energía en frentes que no me interesaban. Ahora, puedo apoyarme en la IA para resolver justo esos frenos. Eso no los hace menos valiosos: simplemente los enfrento con ayuda.


Con poco tiempo, pero mucho aprendizaje

Con un bebé de año y medio en casa, tener tiempo libre es casi una quimera. Apenas puedo dedicarle un par de horas cada dos semanas al proyecto. Pero gracias al multiplicador de velocidad que supone la IA, he podido avanzar.

No para sacar algo espectacular. Sino para aprender más de lo que habría aprendido en meses, y pasarlo bien en el proceso.

Ese es el valor real de este experimento: he aprendido un montón. He podido iterar sobre mis ideas. Reescribir. Preguntar. Entender. Cambiar de rumbo. Volver a preguntar. Y disfrutar del camino.


Código abierto y proyecto disponible

Todo el código está disponible en GitHub, por si a alguien le apetece curiosear, descargarlo o adaptarlo:

🔗 https://github.com/juanancid/maze-adventure

También he grabado un pequeño vídeo para mostrar cómo se ve en acción:

📺 https://www.youtube.com/watch?v=E4QhAwb9c0Y

Y si te interesa este tipo de proyectos o los detalles más técnicos, los suelo comentar en X (antes Twitter), donde comparto avances a mi ritmo, sin prisa y sin presión.


Cierre

Para mí, la IA no sustituye la creatividad ni el esfuerzo. Pero sí me permite hacer cosas que antes eran imposibles. No porque fueran técnicamente inalcanzables, sino porque me faltaba tiempo, energía o foco para mantenerlas vivas.

Y eso, en un hobby, lo cambia todo.

From Clean Code to Clear Models: My takeaways from Domain-Driven Design

I still remember how satisfying it was to finish Clean Code by Bob Martin. It gave me structure around the basics: good naming, readability, testability — the kind of habits that make code sustainable. It felt like collecting tools that every developer should carry.

But finishing Domain-Driven Design by Eric Evans hit differently.

It didn’t just give me tools. It gave me perspective.

The shift in mindset

Domain-Driven Design shifted my focus from “how do I write good code?” to “how do I build a model that represents the world we’re trying to understand and change?”

It’s not just about clean APIs or good object design. It’s about building a shared understanding — a model that reflects the domain clearly enough that everyone, from developers to domain experts, can speak the same language.

And that’s the key: ubiquitous language isn’t about consistency for consistency’s sake. It’s about ensuring the system reflects a language everyone understands and contributes to. Code becomes an expression of shared understanding — not just syntax, but semantics.

Concepts that hit home

There were several ideas that made me pause and think — some because they were new, others because they finally gave shape to things I’d sensed but hadn’t named.

  • Ubiquitous Language – Naming not just as a coding practice, but as a team-wide agreement.
  • Bounded Contexts – A clear reminder that not everything has to be universal. It’s okay (and healthy) for different parts of the system to use the same terms with different meanings — as long as the boundaries are explicit.
  • Model Evolution – The model must serve the present — and change as our understanding grows. Code that resists evolution will rot.
  • Distillation – The discipline of extracting the essential from the incidental. A model can do many things — but should focus on what matters most in the domain.

These ideas didn’t just explain how to build better systems. They explained why systems often drift into complexity — and gave tools to fight that drift.

Software as narrative

One of the ideas that stuck with me the most is this:

Software should tell a story about how it solves the problem.

Not just to machines, but to people.
A model is not just a mechanism — it’s a narrative. And that narrative is what helps the system stay coherent as it grows. It’s what allows people to join the project later and still make sense of it. It’s what keeps knowledge alive.

Without a clear narrative, systems decay. The why gets buried under the how.

Why it matters to me now

The systems I work on are not trivial. They involve complexity, collaboration, and constant change. And Domain-Driven Design gave me a way to step back — to see beyond the latest task or ticket, and think in terms of alignment.

Alignment between the code and the business.
Between the model and the reality it represents.
Between the people who build, use, and evolve the system.

Reading DDD felt like naming things I had been circling for a long time — and putting them on a mental map I can now use every day.

Final thought

I don’t think Domain-Driven Design is just a book about architecture. I think it’s a book about clarity.

If you’ve ever felt that the code you’re writing isn’t quite telling the story of the problem you’re solving — this book is worth your time.

Eventos tecnológicos en España

Cada vez soy más consciente de la importancia del networking para el crecimiento profesional. Estar en contacto con otras personas con los mismos intereses es una valiosa fuente de conocimiento. Y más aún si como yo trabajas en remoto todo el tiempo.

Uso Twitter (@amarganz) al 99% para estar en contacto con personas y entidades relacionadas con mi sector. Además estoy recopilando una lista de los distintos eventos sobre el desarrollo de software que se celebran en España, con la intención de poder planificarme para asistir a los que mejor se ajusten a mis necesidades.

¿Conoces alguno que se haya quedado fuera de la lista? ¿Qué otros medios de networking usas?

  • BilboStack – Bilbao – enero
  • T3chfest – Madrid – marzo
  • Conf.IT – Madrid – abril
  • SalmorejoTech – Córdoba – mayo
  • Code BEAM A Coruña – La Coruña – junio
  • Pamplona Software Crafters – Pamplona – junio
  • AdaLoversConf – Tenerife – septiembre
  • AsturCon.Tech – Asturias – septiembre
  • MiduConf – Madrid – septiembre
  • NSSpain – Logroño – septiembre
  • Pulpocon – Vigo – septiembre
  • PyConES – Granada – septiembre
  • VLCTesting – Valencia – septiembre
  • LicorcaConf – Santiago de Compostela – octubre
  • MorcillaConf – Burgos – octubre
  • ReactAlicante – Alicante – octubre
  • Tarugoconf – Madrid – octubre

P.D. Puedes seguir esta conversación en Twitter, donde se van actualizando nuevos eventos.