Why is software so hard?