State Errors

The more complex a workflow gets, the more likely that it'll be that you cannot simply read code in a straight line from beginning to end and check to make sure it is correct at each step along the way.

Instead, logic will branch and behaviors will vary based on the state of each object in the system. Simply checking every possible configuration for each object is often unrealistic due to an explosion of combinatorial complexity.

This is where building a mental model for how a system should work becomes key in figuring out what's going wrong with it and why.