The difficulty of managing state is one of the primary reasons our applications become so complex. We try and manage this complexity with a lot of booleans, somewhat semantic variables like
hasError, and over-engineered systems that are still full of bugs. Surely, there's a better way.
That better way is state machines.
State machines formalize how we define and transition through the states of our application and give us ultimate control of the most complex parts of our apps.
By the time you're done taking this course, you should have a solid education about state machines and be able to start applying them.