Inspired by Rafe’s post, I thought I would chime in on something that’s struck me as I work with younger and younger developers. First, though, let me state categorically that I’m not one of the “elders” of the industry; I’ve simply been around long enough and dabbled in enough areas to have some vague clueish-type thing present. One thing that developers — especially those under 30 — struggle with is an understanding of the full-stack of a system. By full-stack, I don’t mean Rails and all its accouterment. I mean all the way down to the iron, even if there’s a hypervisor obstructing your view.
Something that I think would be very useful is an idea patterned after what Frank Lloyd Wright did with his Taliesen fellowship. Where Wright required each apprentice to build their own shelter, I think that each new developer should have to build their own operating system on top of a limited-functionality platform. The Beagle Board, for example, represents an interesting starting point that can be leveraged. They would need to build a file system (of some sort, though it might be more of an object-store as you saw in some older systems), process management, and a few other pieces. I’m not talking about something worthy of production, but something so that each person understands just how much goes on “under the covers” every day that they’re often unaware of.
It’s great to stand on the shoulders of giants, but sometimes you need to understand just how high up you started.