For me, procrastination always come from a lack of having a digestible plan of attack. When you find yourself procrastinating, figure out a single next step for your project, one single feature, or one single task in that feature that needs to be done. If you know what your next step in the project is, you'll have this urge to jump back in and do that task. If you can't find that task, then you need to step back and…
Since monday my home internet hasn't been working. Was told by tech support to call them if it didn't work two hours after rebooting it. My internet is important to me (and using an iPad with 3g wasn't a great solution). The tech call wouldn't have taken more than 15 minutes. I had the time. Yet I procrastinated making the call. I might have made it, but the connection started working today so I didn't. The plan was…
Also: Iterate. Make a plan for tomorrow, realize tomorrow you are 50% off, ask yourself why...iterate till you can fullfill the plan. Include the stuff that stopped you from fullfilling your original plan, spot problems, experiment with solutions. Beeing honest with yourself can be hard.
And: Only do this for 50-70% of your time. If you plan everything you'll go nuts very soon (At least I do) but don't omit personal goals or problems.
As for the problem of acting on the plan: Think about binary sort... split the problem till you can handle it, then merge the parts. If you don't know how to handle it you can always think about splitting it up.
good luck!