Why software companies fire software engineers