I hired three summer interns for my startup. I had them work on projects that were useful for reducing technical debt, but not high-enough priority to assign to my full-time developers. This project was a success.
All three interns were CS students with proven programming skills.I expected useful results and I didn't think it was fair to have them work for free, so I paid all of them minimum wage but did not provide FTE benefits. Our PEO set all this up to deal with the compliance administriva.
The projects were: (1) create an internal search tool for our design and code repositories, research documentation, and collateral. This was done with FOSS (Lucene and Apache) (2) Add documentation similar to JavaDoc to all files in our codebase that did not have proper doc, and (3)Implement a C++ add-in that performed automatic self-test and add this to critical classes. Projects 2 and 3 had some interesting intersection.
The results exceeded my expectations. Our technical debt was reduced at fraction of the cost of using a contractor or FTE, without distraction from our sprint feature targets.The internal search tool was very useful, despite some usability limitations. The interns got to do meaningful work and earn money while getting exposure to real-world software engineering.
The key was designing useful tasks that fit the intern's time box and ability-level, hiring students who were capable and motivated, and providing just enough mentoring and supervision to get and keep them dialed-in.