Question: what is the most difficult aspect of programming?
Answer: Naming things.
Explaining what I do (or don't do. ... 
Estimating time to complete tasks. ... 
Dealing with other people. ... 
Working with someone else's code. ... 
Implementing functionality you disagree with. ... 
Writing documentation. ... 
Writing tests. ...