As part of a
project I taught myself to program a PLC using Ladder Logic. By breaking the problem down to simple state-machines I was able to isolate and solve problems effectively. The machine requires keeping track of block number, cut number, and slide position. The PLC and a slide-controller are entirely responsible for running the machine.
On this project, I alone was responsible for code, and received little assistance other than a basic introduction to the concept of the "language".