Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.
Any program is only as good as it is useful.
In many cases, the user interface to a program is the most important part for a commercial company: whether the programs works correctly or not seems to be secondary.
If you want an application to be portable, you don't necessarily create an abstraction layer like a microkernel so much as you program intelligently.
Portability is for people who cannot write new programs