Just a few points....
First, whilst recognising Thom's points and frustrations, I would like to point out that there is definite (albeit slow) traction in gaining new programmers to help out. Over the last few months we have seen a few new names popping up, getting interested and skilling up (merkur2k and fido spring to mind). By their own admission they are well off, but kudos to them, and they have contributed small pieces... the start, perhaps, of good things to come!
Some things that may make contributing more accessible to more people....
We have Trac... but we really need a more accessible list of simple, outstanding tasks/bugs/features, on a wiki page, Trac is more focused on the overall "project" and coming releases, milestones and so on. If there was a simple bullet point list or table in the wiki, people could just pick off small tasks and give them a go. I've looked at Trac so many times trying to find something, but get overwhelmed and unable to find something really small to bite off. A little script editing, conf files, researching, etc. Most seems to require a full dev environment, understanding of the builder, detailed DCE knowledge, C++, etc... This point is about accessibility...
I agree, we need to have teams - SMEs as team leaders picking up broad areas, and agreeing to be "touchstones" and mentors to give advice to those who want to give something a go. At the moment it can be very difficult to attract someone's attention for advice... or even knowing who to go to that might have that advice.... broad areas only, say Thom-UI/Orbiters, Hari-HA, CHT-VDR, etc (just examples!)
But, I believe the biggest impediment to getting one's teeth into helping out is simply knowing which area to look it. Getting an understanding of the architecture, each device, their responsibilities, how they hang together, and basically something as simple as - if I play some media, or tell a light to do something, what actually happens, is it a DCE command? Which sends that command, what command is it, where does it get sent to, what events are likely to be triggered as a result and what happens next....
In short, that horrible word "Documentation". This I have no realistic suggestions on how we approach it.... but I fear without it, I see no realistic prospect of how potential helpers can climb the otherwise very/too steep learning curve!!! Discuss?