Microsoft is not the problem. Microsoft is the symptom.
To solve an interesting problem, start by finding a problem that is interesting to you.
The central problem of C and C++ is that they require programmers to do their own memory management
Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
If you have the right attitude, interesting problems will find you.
Given enough eyeballs, all bugs are shallow (e.g., given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone).