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.
The world does not need more code, it needs better code.
The more code we have, the more humanity needs to maintain. This is a problem.
I'm not saying this won't work, but I question our ability to inspire and train competent software developers. Software development is a big process that involves a wide array of skills, many more around human interaction, logic and communications than memorizing syntax and APIs. The way I see "programmers" taught continues to focus on syntax and one or two API ecosystems, and ignores the fact that programming languages and API ecosystems change fluidly and frequently. Graduates arrive ready to work in a world that was 5 years ago.
When a developer comes to me, I don't give a crap about the alphabet soup on their resumé. I care about whether they are good at working with people, and good at adopting new technologies.
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.
The world does not need more code, it needs better code.
The more code we have, the more humanity needs to maintain. This is a problem.
I'm not saying this won't work, but I question our ability to inspire and train competent software developers. Software development is a big process that involves a wide array of skills, many more around human interaction, logic and communications than memorizing syntax and APIs. The way I see "programmers" taught continues to focus on syntax and one or two API ecosystems, and ignores the fact that programming languages and API ecosystems change fluidly and frequently. Graduates arrive ready to work in a world that was 5 years ago.
When a developer comes to me, I don't give a crap about the alphabet soup on their resumé. I care about whether they are good at working with people, and good at adopting new technologies.
OK, so we tried http://threewisemen.ca/egg/