Several years back, I had the task of writing code for a rotary encoder in a microprocessors class. For sophomores, this was a somewhat non-trivial application. If you're unaware of how a rotary encoder works, it outputs a series of gray codes between "clicks" of the knob. This means you need to handle a series of different inputs, and be able to "unwind" if the user only half turns it and lets it turn back. Most experienced programmers will recognize this as an obvious application of a state machine, and I was fortunate to do so. Others in my class were less so, and spent hours trying to think of a hackneyed scheme for handling the input. After a few days, pretty much everyone had a basic switch-statement state machine.
IMO, the difference between knowing the theory and not knowing the theory is that the former tends to make fewer mistakes in the trailblazing process.