why is programming so hard