1 = no harm if not done; 2 = annoying if not done; 3 = disappoint someone if not done; 4 = financial or emotional harm if not done; 5 = financial and emotional harm if not done.
This is applied to both sets of items on each type of list.
Now I know what I NEED to do above all else, and then I can get to what I WANT to do later.
For list making I've found Eisenhower matrixes[0] to be incredibly useful. That eventually morphed into me using a trello board with four columns that line up with the four quadrants, here's an example:
https://trello.com/b/pfcMyml7/eisenhower-matrix-inspired-tod...
The other thing is that I usually leave a context file (which says "you were adding X to function Y and then debugging Z") in whatever directory I'm working in so that I remember what I was doing if I was in the middle of something.