I think the sticking point is finding small tasks that are meaningful. You can generate that sort of thing for someone doing a 2 week placement, but I think it'll be tricky for much more than that given the nature of the work we have available.
Did you have any structure to your learning to ensure you covered basic topics, e.g. OO, data structures, algorithms, etc?
No my internship was more of a learn or die type of thing. But the dev in charge of me, although he sucked at teaching me, was very tolerant of my mistakes, even grave ones. He gave me important tasks, and would shield me from the heat from management when I messed up. So I learned from copying his talented but cryptic work using trials and errors.
I kept at it because, although he kept being very rude (he was so with everybody), he made sure I was part of the team from day one. When we had lunch and I had no money, he always paid for me so I could eat with everybody at the restaurant. When we had extra pay for being on call during nights and week end, he included me in the rotation, despite perfectly knowing I would just wake him up to solve the problem as soon as the phone rang.
We are still friends to this day, and I came back working with him several times after my internship.
Did you have any structure to your learning to ensure you covered basic topics, e.g. OO, data structures, algorithms, etc?