I personally think that one of our biggest challenges is occasional lack of self-discipline following the dev process. It can be due to many reasons; tight deadlines, late night out or whatever the implication of being just a human.
Also we're often just thrown into someone else's code i.e. his own interpretation of the guidelines.
Let me know if you agree or can you think of something else?