how to learn DSLs?

tl dr - how does one learn to do DSLs as good as how STEPS people apparently do them?

So the STEPS progress report indicates that knowing how to make really good concise DSLs is a super power for programmers who want to avoid having too many lines of code. I have perused things like Fowler's DSL book, and am wondering if that is pretty much close enough, or if there's some other things one would have to know and practice in order to get STEPS quality/style magic bullet DSLs? Frankly, the times I've seen people make their own language in industry, they've almost all inevitably been a train wreck. "When faced with a problem, some people say, 'I know! I'll create a DSL!' Now they're faced with two problems."