Forward vs backward chaining

As someone trying to grok reasoners, I'm trying to figure out when would you use a forward chaining reasoner vs a backward chaining one? Is it to be decided by space/time tradeoffs only, or are there other considerations? And, why would you use a hybrid?