Estimating effort is very tricky. From experience one can only tell that no methodology can help to arrive at any accurate estimation.
Having said that, however, experience always counts. I mean the experience of the person doing the estimates. Intuition and gut feeling always count.
The
word "Complexity" is very relatively understood. So effort estimates always differ from person to person.
This is one area where I have not heard of any "Best Practices", it always "Lessons Learnt".
I feel the Agile way of estimation techniques i.e. the programmer/developer estimating the task at hand is the most apt and fairly accurate. Somebody estimating for you will be always error-prone. Nobody knows what you are good at.