Design and build software, even operating systems, to be tried early, ideally within weeks. Don't hesitate to throw away the clumsy parts and rebuild them.
It is interesting that early Unix tool builders in the 1970's recognized the value of what were later known as lean or agile software principles. This must have been quite radical for the time compared with waterfall development.
In my experience, seeking early feedback isn't a natural tendency for developers, whereas working with cool technologies on challenging technical problems is. This is why developers prefer the "big bang" style of development, which allows them to perfect their code and over-engineer the solution while delaying the inevitable confrontation with reality. They also fear the prospect of this reality check because it might require them to throw away large chunks of their code, which they often resist because, like most people, they get too attached to their own work. So they can't see its actual faults or else can't bear to recognize that there was something wrong with it, an unwelcome blow to their self-esteem.
It is interesting that early Unix tool builders in the 1970's recognized the value of what were later known as lean or agile software principles. This must have been quite radical for the time compared with waterfall development.