The purposes and audiences of software writing in large-scale technical projects