Frankly, I think the value of formal education is underrated by both hackers <i>and university professors</i>. CS departments generally have low expectations of their students, with the exception of the "Top 5" schools. I have been on either side of this: as a teenager, I was self-taught and learned how to program by writing thousands of lines of code, and in college and grad school, I received a formal education in computer science, but I had to go out and learn more about the topics my courses covered on my own. A formal education is immensely valuable to writing more than just mundane code.<p>The key problem with being self-taught is that it is up to you to find the things you should be learning. It is very easy to miss whole topics that may be interesting or enlightening, or may even change how you think about programming. Here is an example of something I would never have known without a formal education:<p><a href="https://en.wikipedia.org/wiki/Logic_programming" rel="nofollow">https://en.wikipedia.org/wiki/Logic_programming</a><p>It is easy to gloss over it, but this is a <i>completely different way to think about programming</i>. You might not see it used much in the real world, but it opens your mind to a new way to think about problem solving and can help a lot in understanding other things (like model checking or natural language processing).<p>There is also the matter of understanding certain abstract concepts that are very important in both theory and practice. Asymptotic analysis comes to mind here, though even a lot of people with formal educations seem to have trouble with it (probably because they thought their theory courses were a waste of time). Algorithms and data structures are also prominent examples of things that are easy for self-taught programmers to miss, especially those that are not included in their favorite languages' standard libraries.<p>All-in-all, I think the best programmers are those who have both a formal education and who can and do learn on their own. Self-taught programmers usually know their language of choice at a deep level; coupled with a formal education, you can do a lot.