Most people don't understand what is really important, either now or for the future. So often we see a new project as number one priority when it's actual contribution to ROI is minuscule.
Then there is the resource issue.
Now I might be a bit slow because it has taken me quite a few years to work this one out, but forget Critical Path Analysis with the emphasis on skey tasks.
The biggest reason I know why things are delivered late is because of the dependence on scarce resources. We have one Ruby On Rails expert, how do we most efficiently spread them across tasks? That is the type of issur prioritisation should address, ensuring an even flow of work to that scarce resource.
And then we come to timing. There must be an equation for this, but I'm fed up with a high priority/big resource issue constantly taking precedence other a medium priority/low resoucre issue.
Get the easy to do tasks out of the queue ASAP. Password reset? Low urgency, relatively high impact, low severity, do it now.
Resource now free to do something else. PASS
Major change going in but it fails pre prod testing? Let it re-enter the change cycle a month later PASS.
Major change going in but it fails pre-prod so you throw every available resouce at it to fix it in a day? FAIL.
Take up next weekend's change slot and demote everything else that was meant to happen at the following weekend FAIL Repeat for the next six weeks? FAIL.