This is good advice.
On a previous (technical-debt ridden) project I did a little measuring and there was a pretty clear hierarchy of test value - in terms of detected regressions:
1) Tests written to invoke bugs.
2) Tests written before implementing the feature which makes them pass.
3) Tests written to cover "surprise" features (i.e. features written by a previous team that I never noticed existed until they broke or I spotted evidence of them in the code).
4) Tests written after implementing the feature.
5) Tests written just for the sake of increasing coverage.
Surprisingly 5 actually ended up being counter-productive most of the time - those tests detected very few bugs but still had a maintenance and runtime overhead.