I've learned that one must ensure one doesn't confuse love of the results given by a thing or action with the love of the thing or action which gets you those results. You're a seasoned debugger if you can successfully debug a complex system, but you're a wise developer if you can do the things which ensure you don't have to do so.
I can't imagine a scenario, throughout history or today, in which debugging would be unnecessary. It's wisdom to realize that, and more wisdom to realize that "debugging" is a nebulous term here that people are nailing down in different ways.
Test-driven development will never replace debugging, and saying otherwise implies a misunderstanding of one of them.