While I think it's completely correct that the best software is produced when a programmer recognizes one of his own needs which isn't being met and decides there's a better way to do it. It's bad to take such a disdainful stance toward programmers in that stage between producing simple self contained projects and software that can be integrated into an OS or other applications. Charting your own course is tough and frustrating. The best advice for aimless but excited programmers in terms of what will help them and the community the most is to join another project. Opensource is an obvious choice since it has a low barrier to entry but an internship at a company could work well too.