TL;DR I "It's just zeros and ones, it cannot be hard" - Jouni Rynö
TL;DR II "Jouni Ryno needs a poke in the eye." @Puddle.
Programming ladder? About 5y. Although my sensei, such as the forum members here and my brother, have been doing it much longer.
Programming in general? About 45y.
Making mistakes? Much, much longer. This last one improves the skills of the previous two
.
Sometime I honestly think I don't know.
Every useful computer program, regardless of language environment, is a model of some sub-system of the real world; it helps to have an engineering background* to be able to tie the two together. The primary design choice is the level of fidelity in the model of the real-world subsystem, and that is often constrained by what the chosen language and computing can do (ladder instruction set; scan time and hardware; etc.). All other design choices flow from that. After that, refer to
TL;DR I above.
* or to know how to multiply by one, which is essentially the same thing as engineering
You will probably move on because that is what your employer pays you for, and that is fine; I hope you understand what I did, especially the edge detection. But if you don't, you could spend your own time in worse ways than studying and thinking about these few rungs to understand exactly what the PLC is doing and how the different pieces work together: time (scan cycle); bits; compound bits such as integers and timer structures; instructions. It may seem like magic, but it is just zeros and ones, and at some point some folks' brains click, grok, and it becomes second nature.