Let’s be honest, the perfect implementation of a stupid idea does not change the fact that it is still a stupid idea. So, if we can avoid spending time on that kind of idea, we will be saving time, money and effort. The problem is that sometimes it is not so easy to distinguish a good idea from a bad idea.
The best course of action, to my knowledge, is to implement the idea (a rubbish implementation of course) just enough to see the idea in action and see it interact with the real world and with real people. I have yet to see this approach fail, I seen ideas fail, but that’s fine, that’s why we put them to the test in the first place, to see if the concept works or not. If the idea fails, with the understanding of the consequences we gained, we can move on with the next idea or the next evolution of the idea.
It’s amazing how a rubbish implementation of a great idea can give us so much insight and feedback from the intended users, consumers, or systems of that idea. Even more amazing is how many times something that was created as a quick hack or quick tool, proves to be a great solution which evolves into a greatly sophisticated tool over time. In the OSS world you can find thousands of examples of this.
So we must always keep this in mind:
Release early, Release often