I'm going to be in charge of hiring some interns for our software department soon (automotive infotainment systems) and I'm designing an internship program.
The main productive activity "menu" I'm planning for them consists of:
- Verification testing
- Writing Unit Tests (automated, with an xUnit-compliant framework [several languages in our projects])
- Updating wiki
- Updating diagrams & design docs
- Helping with low priority tickets (supervised/mentored)
- Hunting down & cleaning compiler/run-time warnings
- Refactoring/cleaning code against our coding standards
But I also have this idea that having them do small R&D projects would be good to test their talent and get them to have fun. These mini-projects would be:
- Experimental implementations & optimizations
- Proof of concept implementations for new technologies
- Small papers (~2-5 pages) doing formal research on the previous two points
- Apps (from a mini-project pool)
These kinds of projects would be pre-defined and very concrete, although new ideas from the interns themselves would be very welcome. Even if a project is too big or is abandoned, the idea would also be to lay the ground work so they can be retaken by another intern or intern team.
While I think this is good in concept, I don't know if it could be good in practice, as obviously this would diminish their productivity on "real work" (work with immediate value to the company), but I think it could help bring aboard very bright people and get them to want to stay in the future (which, I think, is the end goal for any internship program).
My question here is if these activities are too open ended or difficult for the average intern to accomplish and if R&D is an efficient use of an interns time or if it makes more sense for to assign project work to interns instead.