Great post on why software is difficult by Kyle Wilson:
Fred Brooks said it twenty years ago in “No Silver Bullet” better than I can today: “The complexity of software is an essential property, not an accidental one. Hence, descriptions of a software entity that abstract away its complexity often abstract away its essence.”
The article also serves a great reminder of the importance of context and constraint to get something done. Left with too many options and too much freedom, it's possible for nothing to get done.