Could you elaborate as to what the difference is between your overriding goal and your next step goal?
I would assume the former is the 'actual' goal - implement the feature, fix the bug, etc.; the next step goal is the current burrow of rabbit hole, the refactoring, dependency upgrade, patch to third-party lib, unexpected other ticket, etc. that you had to do on the way.
My recently achieved overriding goal took 32 years to accomplish! i worked on it as a side project all that time and it took me places i never expected. Very happy.
I recommend being less ambitious! Or be smarter than me!
Now my major goal is to complete the first tools in that area. it’s still challenging but I think the first version will have only taken 12 months. There is just a lot of newly settled stuff that I am getting fluent in.
12 months seems like a good length of time for a major goal.
Immediate goals are the closest challenging milestone. I.e. a necessary task that requires non-trivial design and/or implementation.
I think both major and immediate goals should be stretch goals with actual impact at different scales. 6-18 months and 2 to 8 weeks are typical ranges. But as my first paragraph notes, the major goal is the big thing that needs to be done, so however long that takes. It is inspiring to aim for significance, and it pushes me to not waste time on all scales of life.
And then I replot my path to the immediate goal. Usually takes under a minute. Mundane steps and questions to settle.
I recreate a the whole plan every morning like that. The repetition embeds the plan and goals into my conscious and subconscious minds.
And also keeps everything fluid.
Every morning, any new perspective can alter anything in the plan, including the goals if need be. Altering the immediate goal, or a better definition of the major goal.