Learning at the Threshold
Recently I've been learning Java, and somewhat surprisingly, I'm actually enjoying it this time.
Recently I've been learning Java (again), and somewhat surprisingly, I'm actually enjoying it this time.
Why? What changed?
To explain, I need to talk a bit about training reactive dogs.
If you're like most people, you've probably never heard of the term "reactivity" as it relates to dogs. I certainly had no idea what that was before I decided to get my first dog last year, Kairi.
Kairi is a sweet but anxious dog. The first day that we brought her home at 8 weeks, she stayed close to the couch in a far corner from us, for hours. Definitely not what I expected from a puppy. But eventually we won over her trust and all seemed fine.
That is, until we took her on her first walk.
It can be quite a jarring experience to see your normally sweet dog lose their marbles by lunging and barking at someone or something on the street. Even more jarring when they're barking and lunging at basically... everything. This is how dog reactivity manifests itself. A reactive dog is a dog that overreacts to a given stimulus or trigger. These triggers can be anything from other people, dogs, cats, kids, squirrels, you name it.
To cut a long story short, after discovering this behavior, we had to start working to try to minimize it. It was incredibly disruptive to our lives, not to mention embarrassing. This, of course, involves some exposure to the triggers that Kairi was already overreacting to.
When you're working with a reactive dog, you have to work at their threshold. You have to find the exact point, the sweet spot, where the dog can notice the thing, while still being able to think and listen without lunging and barking. Too close, and all hell breaks loose. The dog becomes overwhelmed and that negative experience gets reinforced. But if you're too far from the trigger, then there's no challenge, and so nothing to learn from.
This concept of finding the right threshold—not too overwhelming, not too easy—turns out to be fundamental to how we learn anything.
Most educational systems today completely miss this. They're a one-size-fits-all solution. Content typically ends up sequenced based on what's logically next, rather than what you, as the learner, actually need or what your brain is ready to absorb. They're rarely truly able to consistently find and work at your threshold.
This was the issue I was having with my prior approaches to learning Java. I tried books, online coding courses and platforms. They all had the same issue. They kept showing me Java syntax and examples that felt disconnected from where I actually was in my own learning journey. An awkward place between already knowing a bit about coding (for context: my day job is as a senior front-end engineer), but not totally comfortable or familiar with how some of these coding concepts and patterns are meant to be expressed in Java.
So, I tried something different.
I figured Claude Code seemed to work pretty well as a coding tutor, and maybe, with some guidance, it could also work to help build my own personalized Java course, tailored to my experience level. And maybe it could help me build toward something that I actually cared about rather than another todo app.
As it turns out, after a bit of prompting and course-correcting, this worked pretty well. Claude created a personalized 7-module course for me that would guide me through some foundational Java concepts while building a CLI practice tracker app. But Claude also ended up being able to do something that, as far as I’m aware, no other course could.
It was able to translate new concepts through my existing knowledge graph.
Every explanation landed somewhere familiar. For example, it explained how, yes, Java has arrays, but they’re completely different from how I normally use arrays in JS/TS, but also why that is. It had personalized explanations and familiar metaphors for every concept. Learning felt more like I was slotting pieces into an existing puzzle rather than trying to piece together a new one from scratch.
The other surprising aspect was that because I was working on something that would actually be useful for me, it quickly became a source of inspiration for new ideas and motivation. On walks, I found myself obsessing over new things I could add to improve not only the CLI app itself, but also the learning experience and scaffolding around it. And this thinking quickly led down to some previously unexplored paths and questions:
- What does this mean for kids coming up in our current educational institutions?
- Does it still make sense to follow the traditional path?
- What else could I learn that might’ve been a hassle before?
- Should we be placing more emphasis on teaching agency?
I’m not sure, but perhaps this is what finding your threshold feels like. Still learning, still adjusting. Learning to dance in that sweet spot where challenge meets capability.