For programmers working at higher levels of abstraction, a good compiler will automatically balance pipeline concurrency where possible.
A suitable compiler for advanced programmers will inherently optimize pipeline concurrency when applicable.