Software bugs are caused by oversight or misunderstanding. They can happen during stages like specification, design, coding, configuration, data entry, or documentation. A simple alphabetizing program might overlook the hyphen in a word.