What I truly enjoy is software that has:
- One tiny piece of extremely clever abstraction.
- A huge amount of simple pieces that would be more complex without that tiny piece.
In other words, the clever abstraction can be justified if it enables lots of simplicity. It has to do it right now, not in the future.
If your kernel is complicated but writing drivers is simple, people won't even notice the abstractions. They will think of the system as "simple", without realizing there is some clever stuff making that "simple" possible.
I think this is what software’s value truly is. But the challenge is delivering “clever” without “complex” or leaking out of the abstraction.
This is the correct way. Make it unnecessary to look at and into the clever code until it's absolutely necessary to look at and into the clever code.
The vast majority of those who are affected by what you're doing should be asking themselves why you never seem to be doing anything difficult.