OpenSource as a way. Just a thought on Anthony's blog re: OpenSource as a way of improvement.
Yes, entry programmers can improve their 1337 skillz by participating in OpenSource projects. No, they should not be required to do so. A big point of OpenSource projects is that those who participate do so because they *want* to, not because they *have* to. I can think of nothing worse then getting people saying "dude, like, gimme RW to your CVS, because I gotta do this OpenSource thing for a while". Geez Anthony, what were ya thinkin' ;-)
You can't change one parameter of the process and think that it'll still be the same. That always fails, no matter what the context is. [Random thoughts]
There may be a middle road here. One of the problem's I see with fresh out of uni coders is that the biggest project they have worked on is usually say 2 months coding (in a team of say 3 coders), so they have no real understanding of what working on 10k loc project is like. They have no idea of the real need for code documentation (because it was small enough to fit in their heads), they have no idea of the need for refactoring (we hand it in, and then we never see it again), and a total lack of ability to communicate.
So, here is a thought. Take a class of third year CS students. Bring up a CVS server and slave it to some large project. Force the students to then work at understanding the code base. Then get them to work out small projects to make changes to the tree. Make sure to update the tree nightly from the main CVS server to keep the students on their toes.
Encourage the students to listen in on the development mailing lists. Stay subscribed to the lists yourself so that the students don't think they can be rude to the developers. It would probably be polite to clear all of this with said developers before hand too. ;)
What would the students gain out of this? An understanding of how much pain is involved in coming up to speed with a large code base. An understanding of the needs for documentation, unit tests, integration tests, and code style issues.
And finally, the funny issue that they all have to work together, as a class, on the single code base. They could be marked on their CVS commits, the number of bugs they introduced / fixed. How well they interacted with the open source group in question. Whether their modifications were useful enough, and coded well enough, to be accepted into the main cvs tree.
Lots of pain, for both teacher and students. But at least they wouldn't be walking out into the real world blind.