'My friend' currently works an internal software job working on CRUD apps, but aspires to more. He has a degree in a non-computer science engineering discipline from a very good university, but no actual qualifications in computer science.
He is desperate to go and work for a really good software company where he might actually get to work with people who genuinely care about programming, rather than the endless WTFs he is used to. He aspires one day to perhaps working for the likes of google, microsoft, fog creek, [insert equivalent here].
This guy is working on an implementation of a C# compiler in a functional language as a personal project firstly to teach himself about what it's like to implement an industrial-strength language from ground up, not to mention the advantages of functional programming. On top of this, however, this guy thinks this might look good on his resume when trying to get aforementioned work.
This guy is teaching himself fundamentals in his spare time (algorithms, software engineering, compiler theory, etc.), so isn't afraid of theory.
The question is - how on earth can this guy get where he wants to go? He is very passionate about programming but feels incredible despair at the prospect of doing CRUD for the rest of his life.
Possibilities this person has considered are: contributing to open source, correspondence degree, masters top-up course on top of non-CS degree, crying himself to sleep every night.
Please provide any and all advice, 'my friend' would really appreciate it!