A junior faculty member emailed me recently with the following question:
Do you have any advice on best practices for training students who are new to programming, and at the same time building a usable product? I do a lot of programming myself, but I’ve usually run as a solo operator, and I haven’t used any formal methodology — I just get an idea of the problem and gradually build up and test the pieces needed to solve it. But this project is well beyond the students’ current skill level, and we also need a way to coordinate work by a number of students. So I’m thinking I should use some (semi-?)formalized approach to break the work down into manageable pieces.
After a few minutes of scribbling, I had listed almost 20 practices employed by my research group, which is way too many to implement all at once. So here are my top five recommendations for bootstrapping a student and research-oriented software development team.