Comment We learn how to write great software by doing it. (Score 1) 347
Nothing teaches people more about writing code than actually writing code. Given novice developers' hesitance to throw away code they've written that works, iteratively walk them through some "real life" crazy requirements changes, and then talk about the monsters they wrote and how they evolved. I like 30m iterations. Highlight some of your favourite practices as incidentals (ie. hey, that's a nifty comment but now it's a lie, what if you'd commented why instead of what?, or hey, that function called "do the thing" doesn't actually "do the thing" does it? How'd that happen?)
This gives you (and probably a couple extra) facilitators time to run around the room and see what they put together. It can also be tricky to build up the room as a "safe space" where folks have the courage to share their blunders. But if you pull it off, it's magic.