so yes, nearly always learned and traversed bugs in my code the hard way...but i don't recall it being that hard. Mostly it was just awesome.
but here's the thing: then i was coding in BASIC then C from lyceum, university, and the first few years of my professional career and most of the time i was working. While working in C for instance, i recall most of the time i got stuck it was something having to do with memory management--allocating it, reallocating it, recycling it, and re-pointing it. I got stuck, but not in a subject i didn't already know quite well.
today, it's a much different story: i'm at risk of drowning in DSLs (never called that, often "frameworks)--new ones pop up constantly and others disappear.
so when i get stuck today (or for most of the last decade) quite often it's because i need a different kind of assistance--like the kind a noob needs, because quite often i'm starting at some code from a DSL that i don't need to re-factor or debug, but that i need to interact with, and i've never seen this DSL before.