Currently, _build() is called from _activate(), which comes before _update(), so validation will follow linking.
I put the validate here because my impression was that it would do some checks that depend on the current GL state as well as the compiled program, so I think it makes more sense to have it in _update(). If that's not correct, then I am happy to move it to _build() instead.