When I was a kid making games, I used ZZT. My brother recently got back into it and started teaching his kids for to make ZZT games. I found the programming language too constrictive. It didn't have great support for things like variables and loops. I still enjoyed it. My brother reasoned that the small instruction set makes it easy for his kids to learn to code in it. I suppose that's true. But he never learned to code in higher level languages, so he doesn't really know how frustrating it is to have to write so much ZZT code to accomplish something which would be so simple in another language.
My earliest "gnarly bug" experience was that the "set flag" operations in ZZT are limited to 8 flags, but it doesn't throw an error if you exceed that limit; it just wraps to the zeroth flag. It took me a full year to figure it out as a ten-year old.