I'm a big fan of introducing constraints to guide behaviour. A small amount of will power up front removes the requirement for sustained effort / will power later on.
This concept is applicable in many different domains. You can improve your diet by constraining your shopping choices, it's hard to snack if you don't have snacks in. In programming you can strictly follow a framework's way and constrain your design choices, following a known pattern makes code easier to reason about and therefore better.
A constraint I like is to use only the keyboard when developing. This constraint forces me to use the terminal as much as possible and as a back end developer acquiring a solid knowledge of the shell is very important. It's also more efficient to use a text based user interface when working with text, rather than a graphical user interface. GUIs have their place, if you are working in a visual medium, but as a Rails dev most of my time is spent working with plain text files.
Being mindful of constraints is really useful when trying to learn a skill. When you notice you're bumping up against them it's a sign you're starting to go off track.