There are times where TDD makes a lot of sense, I find it to be quite useful in situations where you have some sort of known interface you need to implement exactly. In that case writing the tests first tends to save a lot of time overall.
TL;DR yes, it still works well.
Ignore any hype. TDD/BDD is great for anyone who has seen some shit hitting the fan in his/her professional life.
In fact, jobs not asking for TDD/BDD will probably be throwing shit at you.
I find it useful for new projects. It allows me to define acceptance of core functionality and features.
For established projects, not so much. This is especially true for people new to the project as they typically don’t yet know the full system and it may push them to recreate some functionality that already exists.