Why is computer programming so difficult?