Why developers write bad code