Portability is for people who cannot write new programs.
Real quality means making sure that people are proud of the code they write, that they're involved and taking it personally.
An individual developer like me cares about writing the new code and making it as interesting and efficient as possible. But very few people want to do the testing.
I'm simply too content doing what I want to do to really have a very negative attitude towards MicroSoft. They make bad products - so what? I don't need to care, because I happily don't have to use them, and writing my own alternative has been a very gratifying experience in many ways.
If you want to travel around the world and be invited to speak at a lot of different places, just write a Unix operating system.
I actually don't believe that everybody should necessarily try to learn to code. I think it's reasonably specialized, and nobody really expects most people to have to do it. It's not like knowing how to read and write and do basic math.