In short the secret to discipline for me has been slacking off, gaining perspective and self forgiveness, then doubling down on what’s really important to you.
Having a todo list is fine. There are a couple of methods on how to organize your todo list, I can recommend David Allen's GTD or Mark Forster's DIT for that, but there are other good ones out there.
However, measuring your (daily) success needs to be done by other metrics. It is of course potentially useful data to know how many tasks were completed. But in general it is not a measurement for how much that work is worth. You can work very well on a mightily important task for two hours and be super good at it. Still, the count would be just +1 which doesn't reflect the success.
So, develop your (daily) success metrics. This comes with a unit and a value. If I am not too misinformed, the most prominent example of that would be Stephen King, a full-stack human language horror story developer, who writes 1000 words per day.
Consistency trumps peak. So, aim a bit lower but for consistency. Once you reach a good goal consistently, try to improve on that.
Yes, some tasks do not lend themselves well for such metrics, presumably the smaller tasks of lesser importance. You can batch those into a small batch that you do daily. Start with a couple small things, then add to the stack bit by bit until completion. But, again, be consistent. It is more important to do what you set out todo than to do a lot but not be able to repeat the success reliably.
Schedule those tasks that are time-sensitive, organize the others on lists. For instance, let's say you wanted to pick up the laundry after work on your way back home, well, set a reminder for that task on your calendar. (Or by location on your cell if that makes more sense.)
P.S.: Somebody will mention org-mode on this thread.
You are over-complicating it.
Prioritize and focus on only a few things each day. Once you can do that reliably for a while, then add a little more.
Focusing on and getting just a few things done each day will help you spend less precious brain time on “meta-work”. You’ll feel more accomplished and won’t be beating yourself up.
Make your health a priority. It affects everything else.
But try to cross off the task each day. If it's a big project, then only write down that actual task you'll do as part of the big project for that day.
Use good, old, pen and diary. Don't do digital as that just starts to blow up your list.
It is not really complicated but it does require discipline and commitment. Like some other commenters have suggested, a complicated system or a massive to-do isn't as reliable as a simple system which is easy to follow and gives you a quick overview of where things stand. In my experience, To-do systems don't help motivate - they help a bit to stay organised.
One think that has helped me is that each night, I make a list for the next day. And I pick only one important thing.
Just plan one task. Not lots.
The next day I try to focus on that one thing. I fail almost every day and I write the stuff I didn’t plan to do but did. Sometimes that’s just unforeseen stuff that must be done. But it’s usually just me getting sidetracked.
I write it on an index card so I’m not tempted to try to analyze the tasks over time. And it’s kind of neat now to see the stack of index cards.
Potentially, you will spend the rest of your life learning English.
Learning programming.
They are important.
They are not urgent.
Which is good because they take time.
But there are not going to be tests.
Studying for school is urgent and marginally important in the sense that it is better to study than not.
But the reason it is marginally important to study is that studying is a good habit.
The same with exercise...again a good habit.
Habits last a lifetime.
Learning English or programming are not habits because what happens each day is not repetitious. The repetitious part is the studying which can be a habit. The subject matter will always vary if you are learning.
Lists are helpful only if they are helpful. By which I mean that putting something on the list means it is more likely to be done. "Learn Programming" isn't a list item. But "Write FizzBuzz in Smalltalk" might be.
It's only a list item if sitting down to program for the sake of programming is a habit and if you are interested in Smalltalk enough to write FizzBuzz.
But it is ok if you are not all that interested in doing so. Trying is how you find out. Trying to work-out at the gym is how you find out working out at the gym is not for you, but walking there and back might be your thing and so you take up urban hiking or something like that.
Good luck.
Step 2. Choose what you value in life. Your life will be better if you choose things like “curiosity” and “creativity” that no hardship can remove from you.
I recommend choosing the values which are the virtues of your vices. If you find yourself talking to strangers on the internet, you probably value human connection. As Dolly Parton says, discover who you are and do it on purpose.
Step 3. After you’ve written your massive list for the day, pick 4 things off it. You only get to choose 4. I recommend that you choose based on:
- Mastery: What are you skilled at or eager to learn?
- Autonomy: What will free you from worrying about obligations?
- Purpose: What will relate most closely to your values from step 2?
Step 4. Copy those 4 to a notecard and put away the infinity list. If you accomplish 1-3 of those things with mindful attention, your day is a success.
Why usually leave one task un-done? Humans are motivated by autonomy. If your 10am self tries to take away all the autonomy of your 4pm self, your 4pm self will rebel by getting on NH.
Just stepping into a new environment can help you refocus and reduce the known distractions.
It’s also been shown that if you study for 1 hour in 2 different environments, you grasp and learn the material better than if you study for 2 hours in the same place.