Sounds like you could use a little Jocko Willink in your life.
Discipline is like a muscle, it needs to be strengthened.
Well, discipline is a fine thing, taken in moderation. Sometimes you just have to suck it up and do what you have to do. However, I don't really want to live my life on the basis of forcing myself to do things I'd rather not do. And I certainly would not like to live my life with the mindset that every moment and decision is a test that I have to pass by forcing myself to make the less pleasant choice.
It's good to have discipline when you need it, but I'd rather be able to avoid needing it as much as possible.
How do I wake up early?
You wake up early
One of my life rules is: "Set the alarm for the time you want to get up and get up when it rings. The snooze button does not exist."
I get up at 3:45 every workday. This is not at all a matter of discipline, and takes zero willpower. I have to be at work early, don't like to feel rushed, and like some quiet time to shower, dress, walk the dog, make and eat breakfast, have coffee, read the newspaper, and mentally prepare for my day. So I get up early enough to do those things. Instead of considering this discipline, I look at it as doing things the way I prefer (as opposed to discipline being forcing yourself to do something you would prefer not to do).
As far as the old quote from Bruce Lee goes "take what is useful and discard the rest", I take much more from Jocko than I discard.
Point taken. I don't post the above to argue with you, or about Jocko Willink, but to lead up to a suggestion for @Matt Piercy
IMO, the key to sticking with a program is picking a program you can stick with. Make it what you want to do, instead of what you need to force yourself to do, whether it's committing to specific structured program, or designing a framework for more freestyle programming (or anywhere in between).
This takes a bit of honest self-reflection to figure out, but it's a lot easier, and takes a lot less willpower and discipline, to do something you really want to do. Then, once you make the decision, set your mind that there isn't any more decision making from that point forward (or at least for a reasonably long period before you reevaluate). If you have to make a new decision every day to stick to a program, that takes a lot more willpower and discipline than just deciding once. It's very liberating not to have to make a choice.
Maybe this all a semantic game I play with myself, but I think there's actually a substantive difference between having a little person inside your head cracking a whip and yelling, "You HAVE to do this!," and having a little person inside your head saying, "Now you GET to do this!" Partly it's a difference in mindset, but more than that it's figuring out how to make compromises (almost everything in life is a compromise) that are easier to live with rather than harder to live with.
Hope this helps.