One of the senior engineers once said to me that "Bazel is like a sewer: you get back what you put in."
Bazel requires a lot of upfront effort but the power of (a programmatically accessible/modifiable) dependency graph and a common build/test system across all the languages is very hard to underestimate.